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