diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/view/CurrentAnalysisEditorGraphBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/view/CurrentAnalysisEditorGraphBean.java index 4e2db8f3682f59b3777be584f397f0f05db55e18..79fca9af9c1bca6fccb7f0bc6e21be0c3b9a2ddd 100644 --- a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/view/CurrentAnalysisEditorGraphBean.java +++ b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/view/CurrentAnalysisEditorGraphBean.java @@ -140,12 +140,9 @@ public class CurrentAnalysisEditorGraphBean { */ public void declareGraph() { RequestContext.getCurrentInstance().execute(CurrentAnalysisEditorGraphBean.JS_CMD_CREATE_GRAPH_VAR); - RequestContext.getCurrentInstance().execute( - "graph.setNodeIcon('Filter', 'http://icons.iconarchive.com/icons/everaldo/crystal-clear/96/Action-run-icon.png');"); - RequestContext.getCurrentInstance().execute( - "graph.setNodeIcon('Reader', 'http://icons.iconarchive.com/icons/everaldo/crystal-clear/96/Filesystem-folder-yellow-icon.png');"); - RequestContext.getCurrentInstance().execute( - "graph.setNodeIcon('Repository', 'http://icons.iconarchive.com/icons/everaldo/crystal-clear/96/App-ark-2-icon.png');"); + RequestContext.getCurrentInstance().execute("graph.setNodeIcon('Filter', '../img/FilterIcon.png');"); + RequestContext.getCurrentInstance().execute("graph.setNodeIcon('Reader', '../img/ReaderIcon.png');"); + RequestContext.getCurrentInstance().execute("graph.setNodeIcon('Repository', '../img/RepositoryIcon.png');"); } /** diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/view/CurrentControllerBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/view/CurrentControllerBean.java index 4a11223e1fbce139b125c6d1dda288e9713a2e2d..fbe331c6ab4e02ae296993c53f4cc732ddbec9e2 100644 --- a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/view/CurrentControllerBean.java +++ b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/view/CurrentControllerBean.java @@ -21,23 +21,25 @@ package kieker.webgui.beans.view; import java.io.IOException; +import java.io.PrintWriter; +import java.io.StringWriter; +import java.io.Writer; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Date; -import javax.faces.application.FacesMessage; -import javax.faces.application.FacesMessage.Severity; import javax.faces.bean.ManagedBean; import javax.faces.bean.ManagedProperty; import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; import kieker.analysis.AnalysisController; -import kieker.analysis.model.analysisMetaModel.MIProject; import kieker.common.logging.Log; import kieker.common.logging.LogFactory; import kieker.webgui.beans.application.ProjectsBean; import kieker.webgui.common.IProjectManagerFacade; import kieker.webgui.common.ProjectManagerFacade; +import kieker.webgui.common.exception.AnalysisInitializationException; import kieker.webgui.common.exception.AnalysisStateException; -import kieker.webgui.common.exception.ProjectLoadException; import kieker.webgui.common.exception.ProjectNotExistingException; /** @@ -54,8 +56,8 @@ public class CurrentControllerBean { private static final Log LOG = LogFactory.getLog(CurrentControllerBean.class); private final IProjectManagerFacade projectManagerFacade = ProjectManagerFacade.getInstance(); + private final ArrayList<String> logEntries = new ArrayList<String>(); private String projectName; - private MIProject project; @ManagedProperty(value = "#{projectsBean}") private ProjectsBean projectsBean; @@ -98,40 +100,6 @@ public class CurrentControllerBean { } } - /** - * This method initializes the bean by using the current project name to load the project. <b>Do not call this method manually. It will only be accessed by - * JSF.</b> - */ - public void initalize() { - synchronized (this) { - try { - // Make sure that the initialization will only be done for the init request. - if (!FacesContext.getCurrentInstance().isPostback()) { - // Remember the given parameters - this.project = this.projectsBean.openProject(this.projectName); - } - } catch (final ProjectLoadException ex) { - CurrentControllerBean.LOG.error("An error occured while loading the project.", ex); - CurrentControllerBean.showMessage(FacesMessage.SEVERITY_ERROR, "An error occured while loading the project."); - } catch (final NullPointerException ex) { - // This exception can occur, when the projectsBean has not been initialized - CurrentControllerBean.LOG.error("An error occured while loading the project.", ex); - CurrentControllerBean.showMessage(FacesMessage.SEVERITY_ERROR, "An error occured while loading the project."); - } - } - } - - /** - * This method delivers the project stored in this bean. - * - * @return The project for this user. - */ - public MIProject getProject() { - synchronized (this) { - return this.project; - } - } - /** * This method delivers the project name stored in this bean. * @@ -147,16 +115,17 @@ public class CurrentControllerBean { * This method starts the current analysis and informs the user about a fail. */ public void startAnalysis() { - try { - synchronized (this) { + synchronized (this) { + this.addLogEntry("Starting Analysis for project '" + this.projectName + "'"); + try { this.projectManagerFacade.startAnalysis(this.projectName); + } catch (final AnalysisStateException ex) { + CurrentControllerBean.LOG.info("The analysis has already been started.", ex); + this.addLogEntry(ex); + } catch (final ProjectNotExistingException ex) { + CurrentControllerBean.LOG.info("The project does not exist.", ex); + this.addLogEntry(ex); } - } catch (final AnalysisStateException ex) { - CurrentControllerBean.LOG.info("The analysis has already been started.", ex); - CurrentControllerBean.showMessage(FacesMessage.SEVERITY_WARN, "The analysis has already been started."); - } catch (final ProjectNotExistingException ex) { - CurrentControllerBean.LOG.info("The project does not exist.", ex); - CurrentControllerBean.showMessage(FacesMessage.SEVERITY_WARN, "The project does not exist."); } } @@ -165,15 +134,16 @@ public class CurrentControllerBean { */ public void stopAnalysis() { try { + this.addLogEntry("Stopping Analysis for project '" + this.projectName + "'"); synchronized (this) { this.projectManagerFacade.stopAnalysis(this.projectName); } } catch (final AnalysisStateException ex) { CurrentControllerBean.LOG.info("The analysis has not been started yet.", ex); - CurrentControllerBean.showMessage(FacesMessage.SEVERITY_WARN, "The analysis has not been started yet."); + this.addLogEntry(ex); } catch (final ProjectNotExistingException ex) { CurrentControllerBean.LOG.info("The project does not exist.", ex); - CurrentControllerBean.showMessage(FacesMessage.SEVERITY_WARN, "The project does not exist."); + this.addLogEntry(ex); } } @@ -181,19 +151,23 @@ public class CurrentControllerBean { * This method initializes the current analysis and informs the user about a fail. */ public void instantiateAnalysis() { - try { - synchronized (this) { + synchronized (this) { + this.addLogEntry("Instantiating Analysis for project '" + this.projectName + "'"); + try { this.projectManagerFacade.initializeAnalysis(this.projectName, this.projectManagerFacade.getClassLoader(this.projectName)); // NOPMD (ClassLoader) + } catch (final AnalysisStateException ex) { + CurrentControllerBean.LOG.error("The analysis has already been instantiated.", ex); + this.addLogEntry(ex); + } catch (final ProjectNotExistingException ex) { + CurrentControllerBean.LOG.info("The project does not exist.", ex); + this.addLogEntry(ex); + } catch (final IOException ex) { + CurrentControllerBean.LOG.info("An error occured during the initialization.", ex); + this.addLogEntry(ex); + } catch (final AnalysisInitializationException ex) { + CurrentControllerBean.LOG.info("An error occured during the initialization.", ex); + this.addLogEntry(ex); } - } catch (final AnalysisStateException ex) { - CurrentControllerBean.LOG.error("The analysis has already been instantiated.", ex); - CurrentControllerBean.showMessage(FacesMessage.SEVERITY_ERROR, "The analysis has already been instantiated."); - } catch (final ProjectNotExistingException ex) { - CurrentControllerBean.LOG.info("The project does not exist.", ex); - CurrentControllerBean.showMessage(FacesMessage.SEVERITY_WARN, "The project does not exist."); - } catch (final IOException ex) { - CurrentControllerBean.LOG.info("An error occured during the initialization.", ex); - CurrentControllerBean.showMessage(FacesMessage.SEVERITY_WARN, "An error occured during the initialization."); } } @@ -202,14 +176,15 @@ public class CurrentControllerBean { */ public void cleanAnalysis() { synchronized (this) { + this.addLogEntry("Cleaning Analysis for project '" + this.projectName + "'"); try { this.projectManagerFacade.cleanAnalysis(this.projectName); } catch (final ProjectNotExistingException ex) { CurrentControllerBean.LOG.info("The project does not exist.", ex); - CurrentControllerBean.showMessage(FacesMessage.SEVERITY_WARN, "The project does not exist."); + this.addLogEntry(ex); } catch (final AnalysisStateException ex) { CurrentControllerBean.LOG.error("The analysis has not been instantiated yet.", ex); - CurrentControllerBean.showMessage(FacesMessage.SEVERITY_ERROR, "The analysis has not been instantiated yet."); + this.addLogEntry(ex); } } } @@ -314,15 +289,24 @@ public class CurrentControllerBean { } } - /** - * This method shows the current user a message by using the growl-component of PrimeFaces. - * - * @param severity - * The severity of the message. - * @param msg - * The message itself. - */ - private static void showMessage(final Severity severity, final String msg) { - FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(severity, "", msg)); + public Collection<String> getLog() { + return this.logEntries; + } + + private void addLogEntry(final Throwable cause) { + final Writer result = new StringWriter(); + final PrintWriter printWriter = new PrintWriter(result); + cause.printStackTrace(printWriter); + this.addLogEntry(result.toString()); + } + + private void addLogEntry(final String msg) { + final String finalMsg = new Date().toString() + " : " + msg; + synchronized (this) { + if (this.logEntries.size() > 50) { + this.logEntries.remove(0); + } + this.logEntries.add(finalMsg); + } } } diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/common/IProjectManagerFacade.java b/Kieker.WebGUI/src/main/java/kieker/webgui/common/IProjectManagerFacade.java index 309dd3ed3eafd9572a21d6b2e05e1bc1dc09ea9a..87a27faaf21e31f6a1a11de1c07af006e1f2916d 100644 --- a/Kieker.WebGUI/src/main/java/kieker/webgui/common/IProjectManagerFacade.java +++ b/Kieker.WebGUI/src/main/java/kieker/webgui/common/IProjectManagerFacade.java @@ -29,6 +29,7 @@ import kieker.analysis.model.analysisMetaModel.MIDependency; import kieker.analysis.model.analysisMetaModel.MIProject; import kieker.analysis.plugin.AbstractPlugin; import kieker.analysis.repository.AbstractRepository; +import kieker.webgui.common.exception.AnalysisInitializationException; import kieker.webgui.common.exception.AnalysisStateException; import kieker.webgui.common.exception.DisplayNotFoundException; import kieker.webgui.common.exception.LibraryAlreadyExistingException; @@ -269,7 +270,8 @@ public interface IProjectManagerFacade { * @throws AnalysisStateException * If the analysis of the given project is in the wrong state to be initialized. This means that it has not been cleaned yet. */ - public void initializeAnalysis(final String projectName, final ClassLoader classLoader) throws ProjectNotExistingException, AnalysisStateException; + public void initializeAnalysis(final String projectName, final ClassLoader classLoader) throws ProjectNotExistingException, AnalysisStateException, + AnalysisInitializationException; /** * This method cleans the analysis of the given project. diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/common/ProjectManagerFacade.java b/Kieker.WebGUI/src/main/java/kieker/webgui/common/ProjectManagerFacade.java index 1d181dcd13489d6c2332cdf25a086536bab27791..f53e8a7d403b50e09c198fcd59d3efbf1092f423 100644 --- a/Kieker.WebGUI/src/main/java/kieker/webgui/common/ProjectManagerFacade.java +++ b/Kieker.WebGUI/src/main/java/kieker/webgui/common/ProjectManagerFacade.java @@ -31,6 +31,7 @@ import kieker.analysis.model.analysisMetaModel.MIDependency; import kieker.analysis.model.analysisMetaModel.MIProject; import kieker.analysis.plugin.AbstractPlugin; import kieker.analysis.repository.AbstractRepository; +import kieker.webgui.common.exception.AnalysisInitializationException; import kieker.webgui.common.exception.AnalysisStateException; import kieker.webgui.common.exception.DisplayNotFoundException; import kieker.webgui.common.exception.LibraryAlreadyExistingException; @@ -229,7 +230,8 @@ public final class ProjectManagerFacade implements IProjectManagerFacade { } @Override - public void initializeAnalysis(final String projectName, final ClassLoader classLoader) throws ProjectNotExistingException, AnalysisStateException { + public void initializeAnalysis(final String projectName, final ClassLoader classLoader) throws ProjectNotExistingException, AnalysisStateException, + AnalysisInitializationException { // We have to lock both - the project and the analysis, as a file has to be loaded final Object projectLock = this.getLock(projectName, this.fileSystemLocks); final Object analysisLock = this.getLock(projectName, this.analysesLocks); diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/common/exception/AnalysisInitializationException.java b/Kieker.WebGUI/src/main/java/kieker/webgui/common/exception/AnalysisInitializationException.java new file mode 100644 index 0000000000000000000000000000000000000000..87260a1141780eb109fa6d7932b2f2c0802ebcd1 --- /dev/null +++ b/Kieker.WebGUI/src/main/java/kieker/webgui/common/exception/AnalysisInitializationException.java @@ -0,0 +1,66 @@ +/*************************************************************************** + * Copyright 2012 by + * + Christian-Albrechts-University of Kiel + * + Department of Computer Science + * + Software Engineering Group + * and others. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ***************************************************************************/ + +package kieker.webgui.common.exception; + +/** + * This class represents an exception occurring when the analysis is instantiated. + * + * @author Nils Christian Ehmke + * @version 1.0 + */ +public class AnalysisInitializationException extends AbstractKiekerWebGUIException { + /** + * The UID. + */ + private static final long serialVersionUID = 1L; + + /** + * private static final long serialVersionUID = 1L; + * + * /** + * Creates a new instance of this class. + */ + public AnalysisInitializationException() { + super(); + } + + /** + * Creates a new instance of this class using the given parameters. + * + * @param msg + * The message used for the exception. + */ + public AnalysisInitializationException(final String msg) { + super(msg); + } + + /** + * Creates a new instance of this class using the given parameters. + * + * @param msg + * The message used for the exception. + * @param cause + * The cause for the exception. + */ + public AnalysisInitializationException(final String msg, final Throwable cause) { + super(msg, cause); + } +} diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/common/util/ACManager.java b/Kieker.WebGUI/src/main/java/kieker/webgui/common/util/ACManager.java index 8d2ad4dc628d5931166fb042b222275768fce226..8ac06888a065b22e5aaf7c628ff24d28cefc065f 100644 --- a/Kieker.WebGUI/src/main/java/kieker/webgui/common/util/ACManager.java +++ b/Kieker.WebGUI/src/main/java/kieker/webgui/common/util/ACManager.java @@ -23,6 +23,7 @@ package kieker.webgui.common.util; import java.util.concurrent.ConcurrentHashMap; import kieker.analysis.AnalysisController.STATE; +import kieker.webgui.common.exception.AnalysisInitializationException; import kieker.webgui.common.exception.AnalysisStateException; import kieker.webgui.common.exception.DisplayNotFoundException; import kieker.webgui.common.exception.ProjectNotExistingException; @@ -64,7 +65,8 @@ public final class ACManager { * @throws AnalysisStateException * If the analysis is in an invalid state to be initialized. */ - public void initializeAnalysis(final String projectName, final ClassLoader classLoader) throws ProjectNotExistingException, AnalysisStateException { + public void initializeAnalysis(final String projectName, final ClassLoader classLoader) throws ProjectNotExistingException, AnalysisStateException, + AnalysisInitializationException { // The analysis for the given project must not exist! if (this.analyses.containsKey(projectName)) { throw new AnalysisStateException("The analysis has not been cleaned yet."); diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/common/util/Analysis.java b/Kieker.WebGUI/src/main/java/kieker/webgui/common/util/Analysis.java index edc6d09b15d77732f9a1c9d5e50695c33a8f399d..a8e314c6028c5abd6429f7fa6e01367644e22d24 100644 --- a/Kieker.WebGUI/src/main/java/kieker/webgui/common/util/Analysis.java +++ b/Kieker.WebGUI/src/main/java/kieker/webgui/common/util/Analysis.java @@ -31,6 +31,7 @@ import javax.annotation.PostConstruct; import kieker.common.logging.Log; import kieker.common.logging.LogFactory; import kieker.webgui.common.ClassAndMethodContainer; +import kieker.webgui.common.exception.AnalysisInitializationException; import kieker.webgui.common.exception.AnalysisStateException; import kieker.webgui.common.exception.ProjectLoadException; @@ -58,7 +59,7 @@ public class Analysis { * @throws AnalysisStateException * If something went wrong during the loading of the analysis. */ - public Analysis(final ClassLoader classLoader, final File projectFile) throws AnalysisStateException { + public Analysis(final ClassLoader classLoader, final File projectFile) throws AnalysisStateException, AnalysisInitializationException { try { this.classAndMethodContainer = new ClassAndMethodContainer(classLoader); @@ -76,9 +77,9 @@ public class Analysis { throw new AnalysisStateException("An error occured while instantiating the analysis."); } } catch (final ProjectLoadException ex) { - throw new AnalysisStateException("An error occured while instantiating the analysis.", ex); + throw new AnalysisInitializationException("An error occured while instantiating the analysis.", ex); } catch (final NullPointerException ex) { - throw new AnalysisStateException("An error occured while instantiating the analysis.", ex); + throw new AnalysisInitializationException("An error occured while instantiating the analysis.", ex); } } diff --git a/Kieker.WebGUI/src/main/webapp/Controller.xhtml b/Kieker.WebGUI/src/main/webapp/Controller.xhtml index 72715891990b5e3ec7701517a0c8df7e4fcd6aa5..0442f4ee468b31b9d0d921e3f464d258f10a64ff 100644 --- a/Kieker.WebGUI/src/main/webapp/Controller.xhtml +++ b/Kieker.WebGUI/src/main/webapp/Controller.xhtml @@ -7,11 +7,10 @@ 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:event type="preRenderView" listener="#{currentControllerBean.initalize()}" /> + <f:metadata> + <f:viewParam name="projectName" value="#{currentControllerBean.projectName}"/> </f:metadata> - + <h:head> <title>Kieker.WebGUI</title> <link rel="stylesheet" type="text/css" href="../css/Common.css" /> @@ -29,7 +28,7 @@ <p:toolbarGroup align="left"> <h:outputText styleClass="kieker-title" value="Kieker » #{stringBean.shortenLongName(currentControllerBean.projectName, 30)}"/> </p:toolbarGroup> - <p:toolbarGroup align="right"> + <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-wrench" value="Analysis Editor" style="white-space: none" outcome="AnalysisEditor.xhtml?faces-redirect=true"> @@ -58,7 +57,7 @@ <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-comment" value=" About..." onclick="aboutDlg.show()" ajax="true"/> </p:submenu> - <p:menuitem styleClass="logOutButton" icon="ui-icon-power" value="#{userBean.userName}" ajax="true" url="login"/> + <p:menuitem styleClass="logOutButton" icon="ui-icon-power" value="#{userBean.userName}" ajax="true" url="login"/> </p:menubar> </h:form> @@ -66,14 +65,17 @@ <p:layoutUnit position="center" id="centerLayout"> + <p:dataList style="height: 100%" id="logList" value="#{currentControllerBean.log}" var="entry" itemType="disc"> + #{entry} + </p:dataList> </p:layoutUnit> <p:layoutUnit position="south" header="Control" resizable="true" collapsible="true"> <h:form id="controllerForm"> - <p:commandButton value="Instantiate Analysis Controller" action="#{currentControllerBean.instantiateAnalysis()}" update=":messages" disabled="#{empty currentControllerBean.projectName}"/> - <p:commandButton value="Clean Analysis" action="#{currentControllerBean.cleanAnalysis()}" update=":messages" disabled="#{empty currentControllerBean.projectName}"/> - <p:commandButton value="Start Analysis" action="#{currentControllerBean.startAnalysis()}" update=":messages" disabled="#{empty currentControllerBean.projectName}"/> - <p:commandButton value="Stop Analysis" action="#{currentControllerBean.stopAnalysis()}" update=":messages" disabled="#{empty currentControllerBean.projectName}"/> + <p:commandButton value="Instantiate Analysis Controller" action="#{currentControllerBean.instantiateAnalysis()}" update=":messages :logList" disabled="#{empty currentControllerBean.projectName}"/> + <p:commandButton value="Clean Analysis" action="#{currentControllerBean.cleanAnalysis()}" update=":messages :logList" disabled="#{empty currentControllerBean.projectName}"/> + <p:commandButton value="Start Analysis" action="#{currentControllerBean.startAnalysis()}" update=":messages :logList" disabled="#{empty currentControllerBean.projectName}"/> + <p:commandButton value="Stop Analysis" action="#{currentControllerBean.stopAnalysis()}" update=":messages :logList" disabled="#{empty currentControllerBean.projectName}"/> <p:poll interval="1" update=":ledsForm"/> </h:form> <hr/> diff --git a/Kieker.WebGUI/src/main/webapp/img/FilterIcon.png b/Kieker.WebGUI/src/main/webapp/img/FilterIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..203f88308a7399448403f54a6b790b1157bcab82 Binary files /dev/null and b/Kieker.WebGUI/src/main/webapp/img/FilterIcon.png differ diff --git a/Kieker.WebGUI/src/main/webapp/img/ReaderIcon.png b/Kieker.WebGUI/src/main/webapp/img/ReaderIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..edc3e77837261a986b430e52e1b59c0e2da75584 Binary files /dev/null and b/Kieker.WebGUI/src/main/webapp/img/ReaderIcon.png differ diff --git a/Kieker.WebGUI/src/main/webapp/img/RepositoryIcon.png b/Kieker.WebGUI/src/main/webapp/img/RepositoryIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..9bd7f6994e3a6a01213f4e5db6bd2ae35e93bc16 Binary files /dev/null and b/Kieker.WebGUI/src/main/webapp/img/RepositoryIcon.png differ diff --git a/Kieker.WebGUI/src/main/webapp/img/arrow.gif b/Kieker.WebGUI/src/main/webapp/img/arrow.gif deleted file mode 100644 index e59288f31e1ff06c5e496099161024e94df6027c..0000000000000000000000000000000000000000 Binary files a/Kieker.WebGUI/src/main/webapp/img/arrow.gif and /dev/null differ diff --git a/Kieker.WebGUI/src/main/webapp/img/arrow_d.gif b/Kieker.WebGUI/src/main/webapp/img/arrow_d.gif deleted file mode 100644 index 6dd0addefafcf9b0330ce5a71e7db0edc23b6a60..0000000000000000000000000000000000000000 Binary files a/Kieker.WebGUI/src/main/webapp/img/arrow_d.gif and /dev/null differ diff --git a/Kieker.WebGUI/src/main/webapp/img/arrow_l.gif b/Kieker.WebGUI/src/main/webapp/img/arrow_l.gif deleted file mode 100644 index 0f7c1e3d931f90eebe48503b5c99df2e2bfbd304..0000000000000000000000000000000000000000 Binary files a/Kieker.WebGUI/src/main/webapp/img/arrow_l.gif and /dev/null differ diff --git a/Kieker.WebGUI/src/main/webapp/img/arrow_r.gif b/Kieker.WebGUI/src/main/webapp/img/arrow_r.gif deleted file mode 100644 index e59288f31e1ff06c5e496099161024e94df6027c..0000000000000000000000000000000000000000 Binary files a/Kieker.WebGUI/src/main/webapp/img/arrow_r.gif and /dev/null differ diff --git a/Kieker.WebGUI/src/main/webapp/img/arrow_u.gif b/Kieker.WebGUI/src/main/webapp/img/arrow_u.gif deleted file mode 100644 index 2d3dfdcccd98e099fbc08a1d3843709491363ca1..0000000000000000000000000000000000000000 Binary files a/Kieker.WebGUI/src/main/webapp/img/arrow_u.gif and /dev/null differ