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 2a1a7c1275ad46b8e304a3bccc9335a5ab2a0125..5c83ea367f156fa54be5c60fe6dc065668696ba9 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,7 +17,9 @@ 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; @@ -44,14 +46,16 @@ public final class GlobalPropertiesBean { 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_WELCOME_MESSAGE = "kieker.webgui.common.welcomeMessage"; - private static final String PROPERTY_SHORT_WELCOME_MESSAGE = "kieker.webgui.common.shortWelcomeMessage"; 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 final Properties globalProperties = new Properties(); /** @@ -109,8 +113,9 @@ public final class GlobalPropertiesBean { * * @return The value of the property. */ - public String getWelcomeMessage() { - return this.globalProperties.getProperty(GlobalPropertiesBean.PROPERTY_WELCOME_MESSAGE); + public String getWelcomeMessage(final Locale locale) { + // return this.globalProperties.getProperty(GlobalPropertiesBean.PROPERTY_WELCOME_MESSAGE); + return ResourceBundle.getBundle("messages", locale).getString(GlobalPropertiesBean.PROPERTY_WELCOME_MESSAGE); } /** @@ -118,8 +123,9 @@ public final class GlobalPropertiesBean { * * @return The value of the property. */ - public String getShortWelcomeMessage() { - return this.globalProperties.getProperty(GlobalPropertiesBean.PROPERTY_SHORT_WELCOME_MESSAGE); + 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); } /** @@ -157,4 +163,8 @@ public final class GlobalPropertiesBean { public String getAnalysisEditorDefaultGridColor() { return this.globalProperties.getProperty(GlobalPropertiesBean.PROPERTY_ANALYSIS_EDITOR_DEFAULT_GRID_COLOR); } + + public String getLanguageCookieName() { + return this.globalProperties.getProperty(GlobalPropertiesBean.PROPERTY_LANGUAGE_COOKIE_NAME); + } } diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/session/CurrentConfigurationBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/session/CurrentConfigurationBean.java index 76c6776181afb5e65efcc4399a8607bdc0cb7cdc..cf246f534e4f9e1a584fb5286986d3162d9556c7 100644 --- a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/session/CurrentConfigurationBean.java +++ b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/session/CurrentConfigurationBean.java @@ -16,6 +16,7 @@ package kieker.webgui.beans.session; +import java.util.Locale; import java.util.Map; import javax.annotation.PostConstruct; @@ -39,6 +40,7 @@ import kieker.webgui.beans.application.GlobalPropertiesBean; @SessionScoped public final class CurrentConfigurationBean { + private String locale; private String lookAndFeel; private String gridColor; private int gridSize; @@ -158,6 +160,26 @@ public final class CurrentConfigurationBean { } } + public void setLocale(final String locale) { + synchronized (this) { + this.locale = locale; + CurrentConfigurationBean.saveValueInCookie(this.globalPropertiesBean.getLanguageCookieName(), locale); + + } + } + + public String getLocale() { + synchronized (this) { + return this.locale; + } + } + + public Locale getLocaleObject() { + synchronized (this) { + return new Locale(this.locale); + } + } + /** * This method tries to load the default values of the properties from the {@link GlobalPropertiesBean} and the faces context. */ @@ -175,6 +197,8 @@ public final class CurrentConfigurationBean { this.gridColor = this.globalPropertiesBean.getAnalysisEditorDefaultGridColor(); this.gridSize = Integer.parseInt(this.globalPropertiesBean.getAnalysisEditorDefaultGridSize()); + + this.locale = "en"; } } @@ -196,6 +220,9 @@ public final class CurrentConfigurationBean { if (cookies.containsKey(this.globalPropertiesBean.getAnalysisEditorGridSizeCookieName())) { this.gridSize = Integer.parseInt(((Cookie) cookies.get(this.globalPropertiesBean.getAnalysisEditorGridSizeCookieName())).getValue()); } + if (cookies.containsKey(this.globalPropertiesBean.getLanguageCookieName())) { + this.locale = ((Cookie) cookies.get(this.globalPropertiesBean.getLanguageCookieName())).getValue(); + } } } 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 0e3df0b7271a3e94b81b11d22bea0bcc265d06eb..02e4db07d72662700996b8ad4d340737cefd2107 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 @@ -38,10 +38,14 @@ 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; @ManagedProperty(value = "#{globalPropertiesBean}") private GlobalPropertiesBean globalPropertiesBean; + @ManagedProperty(value = "#{currentConfigurationBean}") + private CurrentConfigurationBean currentConfigurationBean; + /** * Default constructor. <b>Do not use this constructor. This bean is JSF managed.</b> */ @@ -68,6 +72,14 @@ public final class UserBean { this.userName = name; } + public String getPassword() { + return this.password; + } + + public void setPassword(final String password) { + this.password = password; + } + /** * Tries to login. If this has been successful the page of the project overview will be returned. * @@ -100,13 +112,22 @@ public final class UserBean { this.globalPropertiesBean = globalPropertiesBean; } + public CurrentConfigurationBean getCurrentConfigurationBean() { + return this.currentConfigurationBean; + } + + public void setCurrentConfigurationBean(final CurrentConfigurationBean currentConfigurationBean) { + this.currentConfigurationBean = currentConfigurationBean; + } + /** * 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(), - this.globalPropertiesBean.getWelcomeMessage()); + final String finalMsg = String.format(UserBean.WELCOME_MSG_TEMPLATE, + this.globalPropertiesBean.getShortWelcomeMessage(this.currentConfigurationBean.getLocaleObject()), + this.globalPropertiesBean.getWelcomeMessage(this.currentConfigurationBean.getLocaleObject())); RequestContext.getCurrentInstance().execute(finalMsg); } 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 5a8dd7326bbe479003de952dd0b5697c114212df..030cab757185ed5396bb4ad4f9656859619d5257 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 @@ -170,9 +170,9 @@ public final class CurrentAnalysisEditorGraphBean { */ public void declareGraph() { RequestContext.getCurrentInstance().execute(CurrentAnalysisEditorGraphBean.JS_CMD_CREATE_GRAPH_VAR); - 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');"); + RequestContext.getCurrentInstance().execute("graph.setNodeIcon('Filter', '../img/graphIcons/FilterIcon.png');"); + RequestContext.getCurrentInstance().execute("graph.setNodeIcon('Reader', '../img/graphIcons/ReaderIcon.png');"); + RequestContext.getCurrentInstance().execute("graph.setNodeIcon('Repository', '../img/graphIcons/RepositoryIcon.png');"); } /** diff --git a/Kieker.WebGUI/src/main/resources/global.properties b/Kieker.WebGUI/src/main/resources/global.properties index 7a0c847e82bda7cd6eba714b66e4d638973ca8d0..915ffb4c893fc280ca60f0b1921a4f24ea52764a 100644 --- a/Kieker.WebGUI/src/main/resources/global.properties +++ b/Kieker.WebGUI/src/main/resources/global.properties @@ -1,12 +1,3 @@ -#------------------------------------------------------------------------------ -# -# These constants concern common things -# -#------------------------------------------------------------------------------ - -kieker.webgui.common.shortWelcomeMessage = Welcome to the Kieker.WebGUI -kieker.webgui.common.welcomeMessage = 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. - #------------------------------------------------------------------------------ # # These constants concern the further (and more specific) configuration of the @@ -14,6 +5,8 @@ kieker.webgui.common.welcomeMessage = This is an early alpha version of the Kiek # #------------------------------------------------------------------------------ +kieker.webgui.config.language.cookieName = language + kieker.webgui.config.lookAndFeel.cookieName = lookAndFeel kieker.webgui.config.lookAndFeel.defaultTheme = glass-x kieker.webgui.config.lookAndFeel.facesContextKey = theme diff --git a/Kieker.WebGUI/src/main/resources/messages_de.properties b/Kieker.WebGUI/src/main/resources/messages_de.properties new file mode 100644 index 0000000000000000000000000000000000000000..4c09a04c1c9bf33028108d4984a01a6c86cbf926 --- /dev/null +++ b/Kieker.WebGUI/src/main/resources/messages_de.properties @@ -0,0 +1,146 @@ +#------------------------------------------------------------------------------ +# +# These are the messages which are commonly used within all pages. +# +#------------------------------------------------------------------------------ + +yes=Ja +ok=Ok +cancel=Abbrechen + +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. +# +#------------------------------------------------------------------------------ + +#------------------------------------------------------------------------------ +# +# 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 new file mode 100644 index 0000000000000000000000000000000000000000..ea4ef0ca9abd24afbc35c8854498b58ba34a5694 --- /dev/null +++ b/Kieker.WebGUI/src/main/resources/messages_en.properties @@ -0,0 +1,160 @@ +#------------------------------------------------------------------------------ +# +# These are the messages which are commonly used within all pages. +# +#------------------------------------------------------------------------------ + +yes=Yes +ok=Ok +cancel=Cancel + +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 +scaleToFit=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. +# +#------------------------------------------------------------------------------ + +<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" + + <p:tooltip for="iconLEDRed1" value="Indicates that the AnalysisController has not been instantiated yet."/> + <p:tooltip for="iconLEDYellow" value="Indicates that the AnalysisController has been instantiated, but not yet started."/> + <p:tooltip for="iconLEDGreen" value="Indicates that the AnalysisController has been started and is running."/> + <p:tooltip for="iconLEDRed2" value="Indicates that the AnalysisController has been terminated or has failed."/> + <p:tooltip for="iconLEDRed1_2" value="Indicates that the AnalysisController has not been instantiated yet."/> + <p:tooltip for="iconLEDYellow_2" value="Indicates that the AnalysisController has been instantiated, but not yet started."/> + <p:tooltip for="iconLEDGreen_2" value="Indicates that the AnalysisController has been started and is running."/> + <p:tooltip for="iconLEDRed2_2" value="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 index 935666ce457bcd7528af936e07a6976b6ebee37e..720e408afb145985304b1d5bbb602e4f08451ac5 100644 --- a/Kieker.WebGUI/src/main/webapp/AnalysisEditor.xhtml +++ b/Kieker.WebGUI/src/main/webapp/AnalysisEditor.xhtml @@ -13,282 +13,283 @@ <f:event type="preRenderView" listener="#{currentAnalysisEditorBean.initialize()}" /> </f:metadata> - <h:head> - <title>Kieker.WebGUI</title> - <!-- Load the necessary CSS files. --> - <link rel="stylesheet" type="text/css" href="../css/base.css" /> - <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" /> + <f:view locale="#{currentConfigurationBean.locale}"> + <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> + <!-- 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}]); - } + <script> + nodeClickListener = function(node, info, e) { + nodeClickCommand([{name : 'ID', value : node.id}]); + } - nodeRemoveListener = function(node) { - nodeRemoveCommand([{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}]); - } + 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> + 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> + <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: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 » #{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-wrench" value="Analysis Editor" disabled="true"/> - <p:button styleClass="perspective-button" icon="ui-icon-circle-triangle-e" value="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-wrench" value="Cockpit Editor" disabled="true"> - </p:button> - <p:button styleClass="perspective-button" icon="ui-icon-image" value="Cockpit" disabled="true"> - </p:button> - </p:toolbarGroup> - </p:toolbar> + <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 » #{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="File"> - <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-disk" value=" Save Project" update=":messages" ajax="true" action="#{currentAnalysisEditorBean.saveProject(false)}" disabled="#{empty currentAnalysisEditorBean.project}"/> - <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-disk" value=" Save Project As" update=":messages" ajax="true" disabled="#{true or empty currentAnalysisEditorBean.project}"/> - <p:separator /> - <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-refresh" value=" Reload Project" ajax="false" url="analysisEditor?projectName=#{currentAnalysisEditorBean.projectName}" disabled="#{empty currentAnalysisEditorBean.project}" /> - <p:separator/> - <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-bookmark" value=" Manage Libraries" onclick="manageLibrariesDialog.show()" ajax="true" disabled="#{empty currentAnalysisEditorBean.project}"/> - <p:separator /> - <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-gear" value=" Settings" onclick="settingsDlg.show()" ajax="true"/> - <p:separator /> - <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-circle-close" value=" Close Project" action="ProjectOverview.xhtml?faces-redirect=true" ajax="false"/> - </p:submenu> + <!-- 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-search" value=" Scale To Fit" ajax="true" action="#{currentAnalysisEditorGraphBean.scaleToFit()}" /> - <p:separator/> - <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-grip-dotted-horizontal" value=" #{currentAnalysisEditorGraphBean.gridEnabled ? 'Disable' : 'Enable'} Grid" ajax="true" action="#{currentAnalysisEditorGraphBean.switchGrid()}" update=":menuForm"/> - <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-link" value=" #{currentAnalysisEditorGraphBean.snapEnabled ? 'Disable' : 'Enable'} Snap" ajax="true" action="#{currentAnalysisEditorGraphBean.switchSnap()}" update=":menuForm"/> - <p:separator/> - <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-shuffle" value=" Auto-Layout" ajax="true" /> - </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="Help"> - <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-help" value=" User Guide" ajax="true" disabled="true"/> - <p:separator/> - <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-comment" value=" About..." onclick="aboutDlg.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" icon="ui-icon-power" value="#{userBean.userName}" ajax="true" url="login"/> - </p:menubar> - <p:spacer height="5"/> - <p:menubar> - <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-search" value=" Scale To Fit" ajax="true" action="#{currentAnalysisEditorGraphBean.scaleToFit()}" /> - <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-grip-dotted-horizontal" value=" #{currentAnalysisEditorGraphBean.gridEnabled ? 'Disable' : 'Enable'} Grid" ajax="true" action="#{currentAnalysisEditorGraphBean.switchGrid()}" update=":menuForm"/> - <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-link" value=" #{currentAnalysisEditorGraphBean.snapEnabled ? 'Disable' : 'Enable'} Snap" ajax="true" action="#{currentAnalysisEditorGraphBean.switchSnap()}" update=":menuForm"/> - <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-shuffle" value=" Auto-Layout" ajax="true" /> - </p:menubar> - </h:form> - </p:layoutUnit> + <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 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="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="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="ClassName" rendered="#{rowIndex == 0}"/> - <h:outputText id="nameProperty" value="Name" rendered="#{rowIndex == 1}"/> - <h:outputText id="normalProperty" value="#{property.name}" rendered="#{rowIndex > 1}"/> - <p:tooltip for="classNameProperty" value="The class name of this component." rendered="#{rowIndex == 0}"/> - <p:tooltip for="nameProperty" value="The name of this component." rendered="#{rowIndex == 1}"/> - <p:tooltip for="normalProperty" value="#{currentAnalysisEditorBean.getDescription(currentAnalysisEditorBean.selectedPlugin, property.name)}" rendered="#{rowIndex > 1}"/> - </p:column> + <!-- 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="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="The class name of this component." rendered="#{rowIndex == 0}"/> - <p:tooltip for="nameEditor" value="The name of this component." 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 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="Available Plugins" resizable="true" collapsible="true"> - <h:form id="toolpalette"> - <p:accordionPanel multiple="true" activeIndex="0,1,2"> - <p:tab title="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="Output Ports:"/></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="Repository Ports:" /></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="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="Dependencies:"/></b> + <!-- 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.getDependencies(reader)}"/> - </ui:fragment> - </p:tooltip> - </ui:repeat> - </p:tab> - <p:tab title="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="Input Ports:"/></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="Output Ports:"/></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="Repository Ports:"/></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="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="Dependencies:"/></b> + <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.getDependencies(filter)}"/> - </ui:fragment> - </p:tooltip> - </ui:repeat> - </p:tab> - <p:tab title="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="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="Dependencies:"/></b> + <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.getDependencies(repository)}"/> - </ui:fragment> - </p:tooltip> - </ui:repeat> - </p:tab> - </p:accordionPanel> - </h:form> - </p:layoutUnit> - </p:layout> + <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="Save Project" resizable="false" modal="true" widgetVar="forceSaveDlg"> - <h:form> - <div style="text-align: center"> - <h:outputText value="The project has been modified externally in the meanwhile. Do you want to overwrite the changes?" /> - </div> - <hr/> - <div style="text-align: right"> - <p:commandButton value="Yes" action="#{currentAnalysisEditorBean.saveProject(true)}" oncomplete="forceSaveDlg.hide()" update=":messages" /> - <p:spacer width="10px" height="10" /> - <p:commandButton value="Cancel" onclick="forceSaveDlg.hide()" /> - </div> - </h:form> - </p:dialog> + <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"/> + <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 dialog for the configuration. --> + <ui:include src="dialogs/settingsDialog.xhtml" /> - <!-- Include the about-dialog. --> - <ui:include src="dialogs/aboutDialog.xhtml" /> + <!-- Include the about-dialog. --> + <ui:include src="dialogs/aboutDialog.xhtml" /> - <!-- Include the dialog the manage the libraries. --> - <ui:include src="dialogs/manageLibrariesDialog.xhtml" /> + <!-- Include the dialog the manage the libraries. --> + <ui:include src="dialogs/manageLibrariesDialog.xhtml" /> - </h:body> + </h:body> + </f:view> </html> \ No newline at end of file diff --git a/Kieker.WebGUI/src/main/webapp/Cockpit.xhtml b/Kieker.WebGUI/src/main/webapp/Cockpit.xhtml index 044afd458c186ee6b0b44321b9d3b440b2a8ce65..f0472a9d0e8386a5901ebf62e2ccfbe36a758fd2 100644 --- a/Kieker.WebGUI/src/main/webapp/Cockpit.xhtml +++ b/Kieker.WebGUI/src/main/webapp/Cockpit.xhtml @@ -32,31 +32,31 @@ <p:toolbarGroup align="right"> <p:commandButton styleClass="perspective-button" icon="ui-icon-home" action="ProjectOverview.xhtml" /> <p:separator/> - <p:button styleClass="perspective-button" icon="ui-icon-wrench" value="Analysis Editor" style="white-space: none" outcome="AnalysisEditor.xhtml"> + <p:button styleClass="perspective-button" icon="ui-icon-wrench" value="#{localizedMessages.analysisEditor}" style="white-space: none" outcome="AnalysisEditor.xhtml"> <f:param name="projectName" value="#{currentCockpitBean.projectName}" /> </p:button> - <p:button styleClass="perspective-button" icon="ui-icon-circle-triangle-e" value="Analysis" style="white-space: none" outcome="Controller.xhtml"> + <p:button styleClass="perspective-button" icon="ui-icon-circle-triangle-e" value="#{localizedMessages.analysis}" style="white-space: none" outcome="Controller.xhtml"> <f:param name="projectName" value="#{currentCockpitBean.projectName}" /> </p:button> <p:separator/> - <p:button styleClass="perspective-button" icon="ui-icon-wrench" value="Cockpit Editor" style="white-space: none" outcome="CockpitEditor.xhtml"> + <p:button styleClass="perspective-button" icon="ui-icon-wrench" value="#{localizedMessages.cockpitEditor}" style="white-space: none" outcome="CockpitEditor.xhtml"> <f:param name="projectName" value="#{currentCockpitBean.projectName}" /> </p:button> - <p:button styleClass="perspective-button" icon="ui-icon-image" value="Cockpit" style="white-space: none" disabled="true"> + <p:button styleClass="perspective-button" icon="ui-icon-image" value="#{localizedMessages.cockpit}" style="white-space: none" disabled="true"> </p:button> </p:toolbarGroup> </p:toolbar> <p:menubar> - <p:submenu label="File"> - <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-gear" value=" Settings" onclick="settingsDlg.show()" ajax="true"/> + <p:submenu label="#{localizedMessages.file}"> + <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-gear" value=" #{localizedMessages.settings}" onclick="settingsDlg.show()" ajax="true"/> <p:separator/> - <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-circle-close" value=" Close Project" action="ProjectOverview.xhtml?faces-redirect=true" ajax="false"/> + <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-circle-close" value=" #{localizedMessages.closeProject}" action="ProjectOverview.xhtml?faces-redirect=true" ajax="false"/> </p:submenu> - <p:submenu label="Help"> - <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-help" value=" User Guide" ajax="true" disabled="true"/> + <p:submenu label="#{localizedMessages.help}"> + <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-help" value=" #{localizedMessages.userGuide}" ajax="true" disabled="true"/> <p:separator/> - <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-comment" value=" About..." onclick="aboutDlg.show()" ajax="true"/> + <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-comment" value=" #{localizedMessages.about}" onclick="aboutDlg.show()" ajax="true"/> </p:submenu> <p:menuitem styleClass="logOutButton" icon="ui-icon-power" value="#{userBean.userName}" ajax="true" url="login"/> diff --git a/Kieker.WebGUI/src/main/webapp/Controller.xhtml b/Kieker.WebGUI/src/main/webapp/Controller.xhtml index bccc85104bac3bdb1341f9c8bf311399317f0ef5..e0039b07b1f809c0a593c8a87eb5563a85b4753b 100644 --- a/Kieker.WebGUI/src/main/webapp/Controller.xhtml +++ b/Kieker.WebGUI/src/main/webapp/Controller.xhtml @@ -11,111 +11,113 @@ <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" /> - <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 » #{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-wrench" value="Analysis Editor" 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-circle-triangle-e" value="Analysis" style="white-space: none" disabled="true"> - </p:button> - <p:separator/> - <p:button styleClass="perspective-button" icon="ui-icon-wrench" value="Cockpit Editor" disabled="true"> - </p:button> - <p:button styleClass="perspective-button" icon="ui-icon-image" value="Cockpit" disabled="true"> - </p:button> - </p:toolbarGroup> - </p:toolbar> - - <p:menubar> - <p:submenu label="File"> - <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-gear" value=" Settings" onclick="settingsDlg.show()" ajax="true"/> - <p:separator/> - <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-circle-close" value=" Close Controller" action="ProjectOverview.xhtml?faces-redirect=true" ajax="false"/> - </p:submenu> - - <p:submenu label="Help"> - <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-help" value=" User Guide" ajax="true" disabled="true"/> - <p:separator/> - <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: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="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/> - <h:form id="ledsForm"> - <div align="center"> - <h:graphicImage id="iconLEDRed1" url="../img/Icon_LED_Red.png" height="50px" rendered="#{currentControllerBean.isAnalysisNotAvailable()}"/> - <h:graphicImage id="iconLEDRed1_2" url="../img/Icon_LED_Gray.png" height="50px" rendered="#{not currentControllerBean.isAnalysisNotAvailable()}"/> - <p:spacer height="0" width="15px"/> - <h:graphicImage id="iconLEDYellow" url="../img/Icon_LED_Yellow.png" height="50px" rendered="#{currentControllerBean.isAnalysisReady()}"/> - <h:graphicImage id="iconLEDYellow_2" url="../img/Icon_LED_Gray.png" height="50px" rendered="#{not currentControllerBean.isAnalysisReady()}"/> - <p:spacer height="0" width="15px"/> - <h:graphicImage id="iconLEDGreen" url="../img/Icon_LED_Green.png" height="50px" rendered="#{currentControllerBean.isAnalysisRunning()}"/> - <h:graphicImage id="iconLEDGreen_2" url="../img/Icon_LED_Gray.png" height="50px" rendered="#{not currentControllerBean.isAnalysisRunning()}"/> - <p:spacer height="0" width="15px"/> - <h:graphicImage id="iconLEDRed2" url="../img/Icon_LED_Red.png" height="50px" rendered="#{currentControllerBean.isAnalysisTerminated() or currentControllerBean.isAnalysisFailed()}"/> - <h:graphicImage id="iconLEDRed2_2" url="../img/Icon_LED_Gray.png" height="50px" rendered="#{not (currentControllerBean.isAnalysisTerminated() or currentControllerBean.isAnalysisFailed())}"/> - - <p:tooltip for="iconLEDRed1" value="Indicates that the AnalysisController has not been instantiated yet."/> - <p:tooltip for="iconLEDYellow" value="Indicates that the AnalysisController has been instantiated, but not yet started."/> - <p:tooltip for="iconLEDGreen" value="Indicates that the AnalysisController has been started and is running."/> - <p:tooltip for="iconLEDRed2" value="Indicates that the AnalysisController has been terminated or has failed."/> - <p:tooltip for="iconLEDRed1_2" value="Indicates that the AnalysisController has not been instantiated yet."/> - <p:tooltip for="iconLEDYellow_2" value="Indicates that the AnalysisController has been instantiated, but not yet started."/> - <p:tooltip for="iconLEDGreen_2" value="Indicates that the AnalysisController has been started and is running."/> - <p:tooltip for="iconLEDRed2_2" value="Indicates that the AnalysisController has been terminated or has failed."/> - </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 locale="#{currentConfigurationBean.locale}"> + <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 » #{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="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/> + <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="Indicates that the AnalysisController has not been instantiated yet."/> + <p:tooltip for="iconLEDYellow" value="Indicates that the AnalysisController has been instantiated, but not yet started."/> + <p:tooltip for="iconLEDGreen" value="Indicates that the AnalysisController has been started and is running."/> + <p:tooltip for="iconLEDRed2" value="Indicates that the AnalysisController has been terminated or has failed."/> + <p:tooltip for="iconLEDRed1_2" value="Indicates that the AnalysisController has not been instantiated yet."/> + <p:tooltip for="iconLEDYellow_2" value="Indicates that the AnalysisController has been instantiated, but not yet started."/> + <p:tooltip for="iconLEDGreen_2" value="Indicates that the AnalysisController has been started and is running."/> + <p:tooltip for="iconLEDRed2_2" value="Indicates that the AnalysisController has been terminated or has failed."/> + </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/Login.xhtml b/Kieker.WebGUI/src/main/webapp/Login.xhtml index 0665d8388b0ce7ca217d3542d6e73432874f8e8a..0f86c8d37aacbf54bda0591c9e300d0847e76fb5 100644 --- a/Kieker.WebGUI/src/main/webapp/Login.xhtml +++ b/Kieker.WebGUI/src/main/webapp/Login.xhtml @@ -2,47 +2,50 @@ <!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:p="http://primefaces.org/ui" + xmlns:f="http://java.sun.com/jsf/core"> - <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> + <f:view locale="#{currentConfigurationBean.locale}"> + <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="Welcome to the Kieker.WebGUI" styleClass="login-panel"> - <h:panelGrid columnClasses="col1 , col2" styleClass="grid" columns="2" cellpadding="5"> - <h:outputLabel for="username" value="Username:" /> - <p:inputText styleClass="input" id="username" required="true" value="#{userBean.userName}" label="username"/> + <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="Password:" /> - <p:password styleClass="input" id="password" required="false" label="password" /> - </h:panelGrid> - <hr/> - <div align="right"> - <p:commandButton value="Login" ajax="false" action="#{userBean.login}" /> - </div> - </p:panel> - <p:growl sticky="true" autoUpdate="true" widgetVar="growlComp"/> - </div> - </h:form> + <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> - </div> - </h:body> + </h:body> + </f:view> </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 index fd67f460311081ed9dd16e5d7a52c6c93786c968..917acbe54a46874ba2de0e1d5f61f3129ae4e7f2 100644 --- a/Kieker.WebGUI/src/main/webapp/ProjectOverview.xhtml +++ b/Kieker.WebGUI/src/main/webapp/ProjectOverview.xhtml @@ -6,107 +6,109 @@ xmlns:p="http://primefaces.org/ui" xmlns:f="http://java.sun.com/jsf/core"> - <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-wrench" value="Analysis Editor" 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-circle-triangle-e" value="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-wrench" value="Cockpit Editor" disabled="true"> - </p:button> - <p:button styleClass="perspective-button" icon="ui-icon-image" value="Cockpit" disabled="true"> - </p:button> - </p:toolbarGroup> - </p:toolbar> - - <p:menubar> - <p:submenu label="File"> - <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-document" value=" New Project" onclick="newProjectDialog.show()" ajax="true"/> - <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-folder-open" value=" Import Project" ajax="true" disabled="true"/> - <p:separator/> - <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-refresh" value=" Refresh Projects List" update=":projectsListForm" action="#{currentProjectOverviewBean.updateLists()}" ajax="true"/> - <p:separator/> - <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-gear" value=" Settings" onclick="settingsDlg.show()" ajax="true"/> - </p:submenu> - - <p:submenu label="Help"> - <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-help" value=" User Guide" ajax="true" disabled="true"/> - <p:separator/> - <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: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="Project Name" 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=" Analysis Editor" 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=" Analysis" ajax="false" url="controller?projectName=#{project}" /> + <f:view locale="#{currentConfigurationBean.locale}"> + <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:menuitem icon="ui-icon-wrench" id="editAnalysisViews" styleClass="element-with-whitespace" value=" Cockpit Editor" ajax="false" disabled="true" /> - <p:menuitem icon="ui-icon-image" id="showAnalysis" styleClass="element-with-whitespace" value=" Cockpit" ajax="false" disabled="true" /> + <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 id="copyButton" icon="ui-icon-copy" styleClass="element-with-whitespace" value=" Copy Project" action="#{currentProjectOverviewBean.setProjectName(project)}" onclick="copyProjectDialog.show()"/> - <p:menuitem id="renameButton" icon="ui-icon-pencil" styleClass="element-with-whitespace" value=" Rename Project" action="#{currentProjectOverviewBean.setProjectName(project)}" onclick="renameProjectDialog.show()" disabled="true"/> - <p:menuitem id="deleteButton" icon="ui-icon-trash" styleClass="element-with-whitespace" value=" Delete Project" action="#{currentProjectOverviewBean.setProjectName(project)}" onclick="deleteProjectDialog.show()" disabled="true"/> - </p:menu> - </p:column> - <p:column headerText="State" style="text-align: center" sortBy="#{projectsBean.getAnalysisControllerState(project)}"> - <h:outputText value="#{projectsBean.getAnalysisControllerState(project)}"/> - </p:column> - - <p:column headerText="Last Modification" sortBy="#{projectsBean.getCurrTimeStamp(project)}" style="text-align: center"> - <h:outputText value="#{projectsBean.getCurrTimeStamp(project)}" /> - </p:column> - - <p:column headerText="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> + <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/WEB-INF/faces-config.xml b/Kieker.WebGUI/src/main/webapp/WEB-INF/faces-config.xml new file mode 100644 index 0000000000000000000000000000000000000000..6dfa9de1fa1e890c854294bc57681283335dba4b --- /dev/null +++ b/Kieker.WebGUI/src/main/webapp/WEB-INF/faces-config.xml @@ -0,0 +1,21 @@ +<?xml version='1.0' encoding='UTF-8'?> + +<!-- =========== FULL CONFIGURATION FILE ================================== --> + +<faces-config version="2.1" + xmlns="http://java.sun.com/xml/ns/javaee" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_1.xsd"> + + <application> + <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> + </application> + +</faces-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/AnalysisEditor.css index 40e4f2f4adb5cd5a0a4680bcb469c8e9fc6c098f..8574703e38005d0b8228a94cf7219cef9179d5ae 100644 --- a/Kieker.WebGUI/src/main/webapp/css/AnalysisEditor.css +++ b/Kieker.WebGUI/src/main/webapp/css/AnalysisEditor.css @@ -11,4 +11,35 @@ /* This is necessary to remove the border from the datalist */ .ui-datalist * { border : 0px !important; +} + +#center-container { + height:100%; +} + +#center-container { + width:100%; +} + +#infovis { + width:100%; + height:100%; + margin:auto; + overflow:hidden; +} + +.tip { + color: #111; + width: 139px; + background-color: white; + border:1px solid #ccc; + -moz-box-shadow:#555 2px 2px 8px; + -webkit-box-shadow:#555 2px 2px 8px; + -o-box-shadow:#555 2px 2px 8px; + box-shadow:#555 2px 2px 8px; + opacity:0.9; + filter:alpha(opacity=90); + font-size:10px; + font-family:Verdana, Geneva, Arial, Helvetica, sans-serif; + padding:7px; } \ No newline at end of file diff --git a/Kieker.WebGUI/src/main/webapp/css/Common.css b/Kieker.WebGUI/src/main/webapp/css/Common.css index 690ce0ef65c35fce498e7884635697c30357b7b0..da4370917745265eab8d078738222aa55e191adc 100644 --- a/Kieker.WebGUI/src/main/webapp/css/Common.css +++ b/Kieker.WebGUI/src/main/webapp/css/Common.css @@ -73,4 +73,172 @@ .kieker-title { 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; } \ No newline at end of file diff --git a/Kieker.WebGUI/src/main/webapp/css/Login.css b/Kieker.WebGUI/src/main/webapp/css/Login.css index 979aa28d9312d53fd859cae40500b1b87dcd13b6..c45311e1a62d3b575932eadc4277fbc7fae46059 100644 --- a/Kieker.WebGUI/src/main/webapp/css/Login.css +++ b/Kieker.WebGUI/src/main/webapp/css/Login.css @@ -6,6 +6,7 @@ .col1 { width: fit-content !important; + text-align: right; } .col2 { diff --git a/Kieker.WebGUI/src/main/webapp/css/base.css b/Kieker.WebGUI/src/main/webapp/css/base.css deleted file mode 100644 index 4e05001708d0c99e615008a16c7b683c63144370..0000000000000000000000000000000000000000 --- a/Kieker.WebGUI/src/main/webapp/css/base.css +++ /dev/null @@ -1,31 +0,0 @@ -#center-container { - height:100%; -} - -#center-container { - width:100%; -} - - -#infovis { - width:100%; - height:100%; - margin:auto; - overflow:hidden; -} - -.tip { - color: #111; - width: 139px; - background-color: white; - border:1px solid #ccc; - -moz-box-shadow:#555 2px 2px 8px; - -webkit-box-shadow:#555 2px 2px 8px; - -o-box-shadow:#555 2px 2px 8px; - box-shadow:#555 2px 2px 8px; - opacity:0.9; - filter:alpha(opacity=90); - font-size:10px; - font-family:Verdana, Geneva, Arial, Helvetica, sans-serif; - padding:7px; -} \ No newline at end of file diff --git a/Kieker.WebGUI/src/main/webapp/css/js-graph-it.css b/Kieker.WebGUI/src/main/webapp/css/js-graph-it.css deleted file mode 100644 index 46757760948b2ec7f94dfb6755557f1be088352c..0000000000000000000000000000000000000000 --- a/Kieker.WebGUI/src/main/webapp/css/js-graph-it.css +++ /dev/null @@ -1,24 +0,0 @@ -.draggable -{ - position: absolute; - cursor: move; - z-index: 1; -} - -.connector -{ - background-color: black; -} - -.dock_point -{ - height: 1px; - width: 1px; - overflow: hidden; - padding: 0px !important; - border: none !important; - margin: 0px !important; - position: absolute; - font-size: 1px; - visibility: hidden; -} \ No newline at end of file diff --git a/Kieker.WebGUI/src/main/webapp/dialogs/aboutDialog.xhtml b/Kieker.WebGUI/src/main/webapp/dialogs/aboutDialog.xhtml index 622a4bac620d1772be885f2b4e92650ddb7ecdc1..ae2ae15167575ed96147d019ca4a157f860a612e 100644 --- a/Kieker.WebGUI/src/main/webapp/dialogs/aboutDialog.xhtml +++ b/Kieker.WebGUI/src/main/webapp/dialogs/aboutDialog.xhtml @@ -6,7 +6,7 @@ xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:p="http://primefaces.org/ui"> - <p:dialog header="About..." resizable="false" modal="true" widgetVar="aboutDlg"> + <p:dialog header="#{localizedMessages.about}" resizable="false" modal="true" widgetVar="aboutDlg"> <h:form> <img src="../img/kieker-logo-transparent.png" alt="Kieker-Logo" width="491" height="150" /> <hr/> diff --git a/Kieker.WebGUI/src/main/webapp/dialogs/manageLibrariesDialog.xhtml b/Kieker.WebGUI/src/main/webapp/dialogs/manageLibrariesDialog.xhtml index f87e5871254d91d8fee112ec63c9f39aaf5133ed..a88d652ea543d03c21ff0b7202e2cefe96209eda 100644 --- a/Kieker.WebGUI/src/main/webapp/dialogs/manageLibrariesDialog.xhtml +++ b/Kieker.WebGUI/src/main/webapp/dialogs/manageLibrariesDialog.xhtml @@ -5,21 +5,21 @@ xmlns:f="http://java.sun.com/jsf/core" xmlns:p="http://primefaces.org/ui"> - <p:dialog id="manageLibrariesDlg" header="Libraries" resizable="false" + <p:dialog id="manageLibrariesDlg" header="#{localizedMessages.libraries}" resizable="false" modal="true" widgetVar="manageLibrariesDialog"> <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="Filename"> + <p:column headerText="#{localizedMessages.fileName}"> <h:outputText value="#{dependency}"/> </p:column> - <p:column headerText="Size" style="text-align: center"> + <p:column headerText="#{localizedMessages.fileSize}" style="text-align: center"> <h:outputText value="N/A [MiByte]"/> </p:column> - <p:column headerText="Options" style="text-align: center; width:40px"> + <p:column headerText="#{localizedMessages.libOptions}" style="text-align: center; width:40px"> <p:commandButton id="deleteButton" icon="ui-icon-trash" disabled="true"/> <p:tooltip for="deleteButton" value="Delete Library"/> </p:column> @@ -29,7 +29,7 @@ <p:spacer width="0" height="5"/> <div> <!-- This is the form for the uploading. --> - <h:outputText value="Currently only *.jar-Dependencies can be uploaded. The maximal file size is limited to 100 [MiByte]." /> + <h:outputText value="#{localizedMessages.msgOnlyJar}" /> <br /> <br /> <h:form enctype="multipart/form-data"> @@ -39,7 +39,7 @@ <hr/> <div style="text-align: right"> <h:form> - <p:commandButton value="Ok" ajax="true" onclick="manageLibrariesDialog.hide()" /> + <p:commandButton value="#{localizedMessages.ok}" ajax="true" onclick="manageLibrariesDialog.hide()" /> </h:form> </div> </p:dialog> diff --git a/Kieker.WebGUI/src/main/webapp/dialogs/projectDialogs.xhtml b/Kieker.WebGUI/src/main/webapp/dialogs/projectDialogs.xhtml index 076b390bff17c14752caeb42c0043742f1369d92..ec56dba05da81421bbba81f28451f3fd62949c0d 100644 --- a/Kieker.WebGUI/src/main/webapp/dialogs/projectDialogs.xhtml +++ b/Kieker.WebGUI/src/main/webapp/dialogs/projectDialogs.xhtml @@ -8,21 +8,21 @@ <!-- ******************************************************************************** --> <!-- This is the dialog to create a new project. --> - <p:dialog id="newProjectDlg" header="New Project" resizable="false" modal="true" widgetVar="newProjectDialog"> + <p:dialog id="newProjectDlg" header="#{localizedMessages.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="Name: " /> + <h:outputText value="#{localizedMessages.name}: " /> <p:inputText id="newProjectInputText" value="#{stringBean.string}" /> </div> <hr/> <div style="text-align: right"> - <p:commandButton value="Ok" action="#{projectsBean.addProject(stringBean.string)}" update=":projectsListForm :messages" oncomplete="newProjectDialog.hide()" /> + <p:commandButton value="#{localizedMessages.ok}" action="#{projectsBean.addProject(stringBean.string)}" update=":projectsListForm :messages" oncomplete="newProjectDialog.hide()" /> <p:spacer width="10px" height="10" /> - <p:commandButton value="Cancel" onclick="newProjectDialog.hide()" /> + <p:commandButton value="#{localizedMessages.cancel}" onclick="newProjectDialog.hide()" /> </div> </h:form> </p:dialog> @@ -34,50 +34,50 @@ <h:form id="renameProjectDialogForm"> <div style="text-align: center"> - <h:outputText value="New Name: " /> + <h:outputText value="#{localizedMessages.newName}: " /> <p:inputText id="renameProjectInputText" value="#{stringBean.string}" /> </div> <hr/> <div style="text-align: right"> - <p:commandButton value="Ok" action="#{projectsBean.renameProject(currentProjectOverviewBean.projectName, stringBean.string)}" update=":projectsListForm :messages" oncomplete="renameProjectDialog.hide()" /> + <p:commandButton value="#{localizedMessages.ok}" action="#{projectsBean.renameProject(currentProjectOverviewBean.projectName, stringBean.string)}" update=":projectsListForm :messages" oncomplete="renameProjectDialog.hide()" /> <p:spacer width="10px" height="10" /> - <p:commandButton value="Cancel" onclick="renameProjectDialog.hide()" /> + <p:commandButton value="#{localizedMessages.cancel}" onclick="renameProjectDialog.hide()" /> </div> </h:form> </p:dialog> - <p:dialog id="deleteProjectDlg" header="Delete Project" resizable="false" modal="true" widgetVar="deleteProjectDialog"> + <p:dialog id="deleteProjectDlg" header="#{localizedMessages.deleteProject}" resizable="false" modal="true" widgetVar="deleteProjectDialog"> <h:form id="deleteProjectDialogForm"> <div style="text-align: center"> - <h:outputText value="Do you really want to delete the selected project?" /> + <h:outputText value="#{localizedMessages.msgReallyDeleteProject}" /> </div> <hr/> <div style="text-align: right"> - <p:commandButton value="Ok" action="#{projectsBean.deleteProject(currentProjectOverviewBean.projectName)}" update=":projectsListForm :messages" oncomplete="deleteProjectDialog.hide()" /> + <p:commandButton value="#{localizedMessages.ok}" action="#{projectsBean.deleteProject(currentProjectOverviewBean.projectName)}" update=":projectsListForm :messages" oncomplete="deleteProjectDialog.hide()" /> <p:spacer width="10px" height="10" /> - <p:commandButton value="Cancel" onclick="deleteProjectDialog.hide()" /> + <p:commandButton value="#{localizedMessages.cancel}" onclick="deleteProjectDialog.hide()" /> </div> </h:form> </p:dialog> - <p:dialog id="copyProjectDlg" header="Copy Project" resizable="false" modal="true" widgetVar="copyProjectDialog"> + <p:dialog id="copyProjectDlg" header="#{localizedMessages.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="Name: " /> + <h:outputText value="#{localizedMessages.name}: " /> <p:inputText id="copyProjectDialogInputText" value="#{stringBean.string}" /> </div> <hr/> <div style="text-align: right"> - <p:commandButton value="Ok" action="#{projectsBean.copyProject(currentProjectOverviewBean.projectName, stringBean.string)}" update=":projectsListForm :messages" oncomplete="copyProjectDialog.hide()" /> + <p:commandButton value="#{localizedMessages.ok}" action="#{projectsBean.copyProject(currentProjectOverviewBean.projectName, stringBean.string)}" update=":projectsListForm :messages" oncomplete="copyProjectDialog.hide()" /> <p:spacer width="10px" height="10" /> - <p:commandButton value="Cancel" onclick="copyProjectDialog.hide()" /> + <p:commandButton value="#{localizedMessages.cancel}" onclick="copyProjectDialog.hide()" /> </div> </h:form> </p:dialog> diff --git a/Kieker.WebGUI/src/main/webapp/dialogs/settingsDialog.xhtml b/Kieker.WebGUI/src/main/webapp/dialogs/settingsDialog.xhtml index ee5efc2bf0599d7c02dafac7dae49befe21d3cbd..114993ea39d3843eabc5d7b9aeb5744bec693d12 100644 --- a/Kieker.WebGUI/src/main/webapp/dialogs/settingsDialog.xhtml +++ b/Kieker.WebGUI/src/main/webapp/dialogs/settingsDialog.xhtml @@ -5,49 +5,49 @@ xmlns:f="http://java.sun.com/jsf/core" xmlns:p="http://primefaces.org/ui"> - <p:dialog id="settingsDialog" header="Settings" resizable="false" + <p:dialog id="settingsDialog" header="#{localizedMessages.settings}" resizable="false" modal="true" widgetVar="settingsDlg"> <h:form> <p:tabView> - <p:tab title="Common"> + <p:tab title="#{localizedMessages.common}"> <h:panelGrid columns="2" cellpadding="10"> - <h:outputText value="Look and Feel:" /> - <p:themeSwitcher value="#{currentConfigurationBean.lookAndFeel}" - style="width:150px" effect="fade"> - <f:selectItem itemLabel="Choose Theme" itemValue="" /> + <h:outputText value="#{localizedMessages.lookAndFeel}:" /> + <p:themeSwitcher value="#{currentConfigurationBean.lookAndFeel}" style="width:150px" effect="fade"> + <f:selectItem itemLabel="#{localizedMessages.chooseTheme}" itemValue="" /> <f:selectItems value="#{themeSwitcherBean.themes}" /> </p:themeSwitcher> - <h:outputText value="Language:"/> - <p:selectOneMenu effectDuration="20" style="width:150px"> - <f:selectItem itemLabel="English"/> + <h:outputText value="#{localizedMessages.language}:"/> + <p:selectOneMenu value="#{currentConfigurationBean.locale}" style="width:150px"> + <f:selectItem itemValue="en" itemLabel="English"/> + <f:selectItem itemValue="de" itemLabel="Deutsch"/> </p:selectOneMenu> </h:panelGrid> </p:tab> - <p:tab title="Analysis Editor"> + <p:tab title="#{localizedMessages.analysisEditor}"> <h:panelGrid columns="2" cellpadding="10"> - <h:outputText value="Tool Palette"/> + <h:outputText value="#{localizedMessages.toolPalette}:"/> <p:selectOneMenu style="width:150px"> - <f:selectItem itemLabel="Lists"/> + <f:selectItem itemLabel="#{localizedMessages.lists}"/> </p:selectOneMenu> - <h:outputText value="Grid-Size:"/> + <h:outputText value="#{localizedMessages.gridSize}:"/> <p:spinner value="#{currentConfigurationBean.gridSize}" valueChangeListener="#{currentAnalysisEditorBean.gridSizeListener}" suffix=" [px]"/> - <h:outputText value="Grid-Color:"/> + <h:outputText value="#{localizedMessages.gridColor}:"/> <p:colorPicker value="#{currentConfigurationBean.gridColor}" valueChangeListener="#{currentAnalysisEditorBean.gridColorListener}"/> </h:panelGrid> </p:tab> - <p:tab title="Analysis Controller" disabled="true"> + <p:tab title="#{localizedMessages.analysisController}" disabled="true"> </p:tab> - <p:tab title="Cockpit Editor" disabled="true"> + <p:tab title="#{localizedMessages.cockpitEditor}" disabled="true"> </p:tab> - <p:tab title="Cockpit" disabled="true"> + <p:tab title="#{localizedMessages.cockpit}" disabled="true"> </p:tab> </p:tabView> <hr/> <div style="text-align: right"> - <p:commandButton value="Ok" oncomplete="settingsDlg.hide();" /> + <p:commandButton value="#{localizedMessages.ok}" oncomplete="settingsDlg.hide();" update="@all" /> </div> </h:form> </p:dialog> diff --git a/Kieker.WebGUI/src/main/webapp/img/Icon_LED_Gray.png b/Kieker.WebGUI/src/main/webapp/img/LEDs/Icon_LED_Gray.png similarity index 100% rename from Kieker.WebGUI/src/main/webapp/img/Icon_LED_Gray.png rename to Kieker.WebGUI/src/main/webapp/img/LEDs/Icon_LED_Gray.png diff --git a/Kieker.WebGUI/src/main/webapp/img/Icon_LED_Green.png b/Kieker.WebGUI/src/main/webapp/img/LEDs/Icon_LED_Green.png similarity index 100% rename from Kieker.WebGUI/src/main/webapp/img/Icon_LED_Green.png rename to Kieker.WebGUI/src/main/webapp/img/LEDs/Icon_LED_Green.png diff --git a/Kieker.WebGUI/src/main/webapp/img/Icon_LED_Red.png b/Kieker.WebGUI/src/main/webapp/img/LEDs/Icon_LED_Red.png similarity index 100% rename from Kieker.WebGUI/src/main/webapp/img/Icon_LED_Red.png rename to Kieker.WebGUI/src/main/webapp/img/LEDs/Icon_LED_Red.png diff --git a/Kieker.WebGUI/src/main/webapp/img/Icon_LED_Yellow.png b/Kieker.WebGUI/src/main/webapp/img/LEDs/Icon_LED_Yellow.png similarity index 100% rename from Kieker.WebGUI/src/main/webapp/img/Icon_LED_Yellow.png rename to Kieker.WebGUI/src/main/webapp/img/LEDs/Icon_LED_Yellow.png diff --git a/Kieker.WebGUI/src/main/webapp/img/FilterIcon.png b/Kieker.WebGUI/src/main/webapp/img/graphIcons/FilterIcon.png similarity index 100% rename from Kieker.WebGUI/src/main/webapp/img/FilterIcon.png rename to Kieker.WebGUI/src/main/webapp/img/graphIcons/FilterIcon.png diff --git a/Kieker.WebGUI/src/main/webapp/img/ReaderIcon.png b/Kieker.WebGUI/src/main/webapp/img/graphIcons/ReaderIcon.png similarity index 100% rename from Kieker.WebGUI/src/main/webapp/img/ReaderIcon.png rename to Kieker.WebGUI/src/main/webapp/img/graphIcons/ReaderIcon.png diff --git a/Kieker.WebGUI/src/main/webapp/img/RepositoryIcon.png b/Kieker.WebGUI/src/main/webapp/img/graphIcons/RepositoryIcon.png similarity index 100% rename from Kieker.WebGUI/src/main/webapp/img/RepositoryIcon.png rename to Kieker.WebGUI/src/main/webapp/img/graphIcons/RepositoryIcon.png diff --git a/Kieker.WebGUI/src/main/webapp/img/icons/About.png b/Kieker.WebGUI/src/main/webapp/img/icons/About.png new file mode 100644 index 0000000000000000000000000000000000000000..b9b743767a05334354e9d3106fa09d3173dea34c Binary files /dev/null and b/Kieker.WebGUI/src/main/webapp/img/icons/About.png differ diff --git a/Kieker.WebGUI/src/main/webapp/img/icons/Analysis.png b/Kieker.WebGUI/src/main/webapp/img/icons/Analysis.png new file mode 100644 index 0000000000000000000000000000000000000000..d2c8c2227de5f36a5300571cfcd12ed47cd6b426 Binary files /dev/null and b/Kieker.WebGUI/src/main/webapp/img/icons/Analysis.png differ diff --git a/Kieker.WebGUI/src/main/webapp/img/icons/AnalysisEditor.png b/Kieker.WebGUI/src/main/webapp/img/icons/AnalysisEditor.png new file mode 100644 index 0000000000000000000000000000000000000000..89089ece36d97f143555d5ee32808b454b87e156 Binary files /dev/null and b/Kieker.WebGUI/src/main/webapp/img/icons/AnalysisEditor.png differ diff --git a/Kieker.WebGUI/src/main/webapp/img/icons/AutoLayout.png b/Kieker.WebGUI/src/main/webapp/img/icons/AutoLayout.png new file mode 100644 index 0000000000000000000000000000000000000000..32b25356a9e754123e2c572f229acfabd66b1fcd Binary files /dev/null and b/Kieker.WebGUI/src/main/webapp/img/icons/AutoLayout.png differ diff --git a/Kieker.WebGUI/src/main/webapp/img/icons/AutoLayoutSmall.png b/Kieker.WebGUI/src/main/webapp/img/icons/AutoLayoutSmall.png new file mode 100644 index 0000000000000000000000000000000000000000..9a22a2d31ec6e33d4377a8127bb58ee8e80ca6f0 Binary files /dev/null and b/Kieker.WebGUI/src/main/webapp/img/icons/AutoLayoutSmall.png differ diff --git a/Kieker.WebGUI/src/main/webapp/img/icons/Close.png b/Kieker.WebGUI/src/main/webapp/img/icons/Close.png new file mode 100644 index 0000000000000000000000000000000000000000..b50dc52f5cdf1af9989bdadd5d37f215985842f5 Binary files /dev/null and b/Kieker.WebGUI/src/main/webapp/img/icons/Close.png differ diff --git a/Kieker.WebGUI/src/main/webapp/img/icons/Cockpit.png b/Kieker.WebGUI/src/main/webapp/img/icons/Cockpit.png new file mode 100644 index 0000000000000000000000000000000000000000..d1d971efa0cada3bc89f5f2e3f11f17abbe46ebc Binary files /dev/null and b/Kieker.WebGUI/src/main/webapp/img/icons/Cockpit.png differ diff --git a/Kieker.WebGUI/src/main/webapp/img/icons/CockpitEditor.png b/Kieker.WebGUI/src/main/webapp/img/icons/CockpitEditor.png new file mode 100644 index 0000000000000000000000000000000000000000..89089ece36d97f143555d5ee32808b454b87e156 Binary files /dev/null and b/Kieker.WebGUI/src/main/webapp/img/icons/CockpitEditor.png differ diff --git a/Kieker.WebGUI/src/main/webapp/img/icons/GridDisabled.png b/Kieker.WebGUI/src/main/webapp/img/icons/GridDisabled.png new file mode 100644 index 0000000000000000000000000000000000000000..c39a62f447089f3c7c95bce9a1d69152d7c95cc3 Binary files /dev/null and b/Kieker.WebGUI/src/main/webapp/img/icons/GridDisabled.png differ diff --git a/Kieker.WebGUI/src/main/webapp/img/icons/GridDisabledSmall.png b/Kieker.WebGUI/src/main/webapp/img/icons/GridDisabledSmall.png new file mode 100644 index 0000000000000000000000000000000000000000..2ddf3bf9c96c5e53d5531866cfef0766fbb5b39f Binary files /dev/null and b/Kieker.WebGUI/src/main/webapp/img/icons/GridDisabledSmall.png differ diff --git a/Kieker.WebGUI/src/main/webapp/img/icons/GridEnabled.png b/Kieker.WebGUI/src/main/webapp/img/icons/GridEnabled.png new file mode 100644 index 0000000000000000000000000000000000000000..3df73e6c43482f389dd45ea1477495103959df85 Binary files /dev/null and b/Kieker.WebGUI/src/main/webapp/img/icons/GridEnabled.png differ diff --git a/Kieker.WebGUI/src/main/webapp/img/icons/GridEnabledSmall.png b/Kieker.WebGUI/src/main/webapp/img/icons/GridEnabledSmall.png new file mode 100644 index 0000000000000000000000000000000000000000..a24f021ddb43517639631603f5d23b9b89a6ce0b Binary files /dev/null and b/Kieker.WebGUI/src/main/webapp/img/icons/GridEnabledSmall.png differ diff --git a/Kieker.WebGUI/src/main/webapp/img/icons/Home.png b/Kieker.WebGUI/src/main/webapp/img/icons/Home.png new file mode 100644 index 0000000000000000000000000000000000000000..2e7d58db9a686cf07c74b6419fc68138d547d37c Binary files /dev/null and b/Kieker.WebGUI/src/main/webapp/img/icons/Home.png differ diff --git a/Kieker.WebGUI/src/main/webapp/img/icons/ImportProject.png b/Kieker.WebGUI/src/main/webapp/img/icons/ImportProject.png new file mode 100644 index 0000000000000000000000000000000000000000..1279be4f8df032f4f93395f70ef9fa87fd001920 Binary files /dev/null and b/Kieker.WebGUI/src/main/webapp/img/icons/ImportProject.png differ diff --git a/Kieker.WebGUI/src/main/webapp/img/icons/Logout.png b/Kieker.WebGUI/src/main/webapp/img/icons/Logout.png new file mode 100644 index 0000000000000000000000000000000000000000..099e1fbc1341adfbc2a09d6f7e297f4dffb81143 Binary files /dev/null and b/Kieker.WebGUI/src/main/webapp/img/icons/Logout.png differ diff --git a/Kieker.WebGUI/src/main/webapp/img/icons/ManageLibraries.png b/Kieker.WebGUI/src/main/webapp/img/icons/ManageLibraries.png new file mode 100644 index 0000000000000000000000000000000000000000..7f06b149360c48b1aeada49f841fcf87db0c20fd Binary files /dev/null and b/Kieker.WebGUI/src/main/webapp/img/icons/ManageLibraries.png differ diff --git a/Kieker.WebGUI/src/main/webapp/img/icons/NewProject.png b/Kieker.WebGUI/src/main/webapp/img/icons/NewProject.png new file mode 100644 index 0000000000000000000000000000000000000000..2ddf3bf9c96c5e53d5531866cfef0766fbb5b39f Binary files /dev/null and b/Kieker.WebGUI/src/main/webapp/img/icons/NewProject.png differ diff --git a/Kieker.WebGUI/src/main/webapp/img/icons/Reload.png b/Kieker.WebGUI/src/main/webapp/img/icons/Reload.png new file mode 100644 index 0000000000000000000000000000000000000000..494964cc71d2c52576356eaf6fb74f4c7f166990 Binary files /dev/null and b/Kieker.WebGUI/src/main/webapp/img/icons/Reload.png differ diff --git a/Kieker.WebGUI/src/main/webapp/img/icons/Save.png b/Kieker.WebGUI/src/main/webapp/img/icons/Save.png new file mode 100644 index 0000000000000000000000000000000000000000..76613eca1233548d23d83e418273aaf0c65b299e Binary files /dev/null and b/Kieker.WebGUI/src/main/webapp/img/icons/Save.png differ diff --git a/Kieker.WebGUI/src/main/webapp/img/icons/SaveAs.png b/Kieker.WebGUI/src/main/webapp/img/icons/SaveAs.png new file mode 100644 index 0000000000000000000000000000000000000000..76613eca1233548d23d83e418273aaf0c65b299e Binary files /dev/null and b/Kieker.WebGUI/src/main/webapp/img/icons/SaveAs.png differ diff --git a/Kieker.WebGUI/src/main/webapp/img/icons/ScaleToFit.png b/Kieker.WebGUI/src/main/webapp/img/icons/ScaleToFit.png new file mode 100644 index 0000000000000000000000000000000000000000..e91690a13bc84413af70f84509c52b35b2a68daf Binary files /dev/null and b/Kieker.WebGUI/src/main/webapp/img/icons/ScaleToFit.png differ diff --git a/Kieker.WebGUI/src/main/webapp/img/icons/ScaleToFitSmall.png b/Kieker.WebGUI/src/main/webapp/img/icons/ScaleToFitSmall.png new file mode 100644 index 0000000000000000000000000000000000000000..fd2c924d9894f491c5622664a60b2f423167ee2f Binary files /dev/null and b/Kieker.WebGUI/src/main/webapp/img/icons/ScaleToFitSmall.png differ diff --git a/Kieker.WebGUI/src/main/webapp/img/icons/Settings.png b/Kieker.WebGUI/src/main/webapp/img/icons/Settings.png new file mode 100644 index 0000000000000000000000000000000000000000..b3ef615d92c514dd66527d3161d54753fa8698ba Binary files /dev/null and b/Kieker.WebGUI/src/main/webapp/img/icons/Settings.png differ diff --git a/Kieker.WebGUI/src/main/webapp/img/icons/SnapDisabled.png b/Kieker.WebGUI/src/main/webapp/img/icons/SnapDisabled.png new file mode 100644 index 0000000000000000000000000000000000000000..2edea5e0e0ae8f57384446794bd4351474c9d2ca Binary files /dev/null and b/Kieker.WebGUI/src/main/webapp/img/icons/SnapDisabled.png differ diff --git a/Kieker.WebGUI/src/main/webapp/img/icons/SnapDisabledSmall.png b/Kieker.WebGUI/src/main/webapp/img/icons/SnapDisabledSmall.png new file mode 100644 index 0000000000000000000000000000000000000000..e5416ea6efbd3c3108899c23aec5fffd13a292c9 Binary files /dev/null and b/Kieker.WebGUI/src/main/webapp/img/icons/SnapDisabledSmall.png differ diff --git a/Kieker.WebGUI/src/main/webapp/img/icons/SnapEnabled.png b/Kieker.WebGUI/src/main/webapp/img/icons/SnapEnabled.png new file mode 100644 index 0000000000000000000000000000000000000000..e263e16486b028c3d2e13cac5c081f68f4b4ffd9 Binary files /dev/null and b/Kieker.WebGUI/src/main/webapp/img/icons/SnapEnabled.png differ diff --git a/Kieker.WebGUI/src/main/webapp/img/icons/SnapEnabledSmall.png b/Kieker.WebGUI/src/main/webapp/img/icons/SnapEnabledSmall.png new file mode 100644 index 0000000000000000000000000000000000000000..4f177f48f4a88e51e8542727e86e22a99ef32856 Binary files /dev/null and b/Kieker.WebGUI/src/main/webapp/img/icons/SnapEnabledSmall.png differ diff --git a/Kieker.WebGUI/src/main/webapp/img/icons/UserGuide.png b/Kieker.WebGUI/src/main/webapp/img/icons/UserGuide.png new file mode 100644 index 0000000000000000000000000000000000000000..abe5d5dab5305320c447e6e6bf0dd8692896a453 Binary files /dev/null and b/Kieker.WebGUI/src/main/webapp/img/icons/UserGuide.png differ