diff --git a/Kieker.WebGUI/lib/jcl-over-slf4j.LICENSE b/Kieker.WebGUI/lib/jcl-over-slf4j-1.7.2.LICENSE similarity index 100% rename from Kieker.WebGUI/lib/jcl-over-slf4j.LICENSE rename to Kieker.WebGUI/lib/jcl-over-slf4j-1.7.2.LICENSE diff --git a/Kieker.WebGUI/lib/jetty-runner-8.1.4.v20120524.LICENSE b/Kieker.WebGUI/lib/jetty-runner-8.1.7.v20120910.LICENSE similarity index 100% rename from Kieker.WebGUI/lib/jetty-runner-8.1.4.v20120524.LICENSE rename to Kieker.WebGUI/lib/jetty-runner-8.1.7.v20120910.LICENSE diff --git a/Kieker.WebGUI/lib/jetty-runner-8.1.4.v20120524.jar b/Kieker.WebGUI/lib/jetty-runner-8.1.7.v20120910.jar similarity index 76% rename from Kieker.WebGUI/lib/jetty-runner-8.1.4.v20120524.jar rename to Kieker.WebGUI/lib/jetty-runner-8.1.7.v20120910.jar index ba1089212fe5c2d16a9e52c6fded55b83ae7d558..c5c47f72748779eaa0bef044eaf406c25242cada 100644 Binary files a/Kieker.WebGUI/lib/jetty-runner-8.1.4.v20120524.jar and b/Kieker.WebGUI/lib/jetty-runner-8.1.7.v20120910.jar differ diff --git a/Kieker.WebGUI/lib/slf4j-api.LICENSE b/Kieker.WebGUI/lib/slf4j-api-1.7.2.LICENSE similarity index 100% rename from Kieker.WebGUI/lib/slf4j-api.LICENSE rename to Kieker.WebGUI/lib/slf4j-api-1.7.2.LICENSE diff --git a/Kieker.WebGUI/lib/slf4j-log4j12.LICENSE b/Kieker.WebGUI/lib/slf4j-log4j12-1.7.2.LICENSE similarity index 100% rename from Kieker.WebGUI/lib/slf4j-log4j12.LICENSE rename to Kieker.WebGUI/lib/slf4j-log4j12-1.7.2.LICENSE diff --git a/Kieker.WebGUI/pom.xml b/Kieker.WebGUI/pom.xml index 40fc557995ed3b1ce29e7d0c7f657cb6dce67930..099cd3de759dcfbdd2f16aad7bb483b6d57d18c8 100644 --- a/Kieker.WebGUI/pom.xml +++ b/Kieker.WebGUI/pom.xml @@ -27,6 +27,8 @@ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <kieker.jar>kieker-1.6_emf.jar</kieker.jar> <spring.version>3.1.2.RELEASE</spring.version> + <slf4j.version>1.7.2</slf4j.version> + <primefaces.themes.version>1.0.8</primefaces.themes.version> </properties> <repositories> @@ -83,17 +85,17 @@ <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> - <version>1.6.6</version> + <version>${slf4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> - <version>1.6.6</version> + <version>${slf4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> - <version>1.6.6</version> + <version>${slf4j.version}</version> </dependency> <dependency> <groupId>com.ocpsoft</groupId> @@ -130,6 +132,11 @@ <artifactId>derby</artifactId> <version>10.9.1.0</version> </dependency> + <dependency> + <groupId>org.mortbay.jetty</groupId> + <artifactId>jetty-runner</artifactId> + <version>8.1.7.v20120910</version> + </dependency> <dependency> <groupId>javax</groupId> <artifactId>javaee-web-api</artifactId> @@ -144,152 +151,152 @@ <dependency> <groupId>org.primefaces.themes</groupId> <artifactId>black-tie</artifactId> - <version>1.0.8</version> + <version>${primefaces.themes.version}</version> </dependency> <dependency> <groupId>org.primefaces.themes</groupId> <artifactId>blitzer</artifactId> - <version>1.0.8</version> + <version>${primefaces.themes.version}</version> </dependency> <dependency> <groupId>org.primefaces.themes</groupId> <artifactId>bluesky</artifactId> - <version>1.0.8</version> + <version>${primefaces.themes.version}</version> </dependency> <dependency> <groupId>org.primefaces.themes</groupId> <artifactId>casablanca</artifactId> - <version>1.0.8</version> + <version>${primefaces.themes.version}</version> </dependency> <dependency> <groupId>org.primefaces.themes</groupId> <artifactId>cupertino</artifactId> - <version>1.0.8</version> + <version>${primefaces.themes.version}</version> </dependency> <dependency> <groupId>org.primefaces.themes</groupId> <artifactId>dark-hive</artifactId> - <version>1.0.8</version> + <version>${primefaces.themes.version}</version> </dependency> <dependency> <groupId>org.primefaces.themes</groupId> <artifactId>dot-luv</artifactId> - <version>1.0.8</version> + <version>${primefaces.themes.version}</version> </dependency> <dependency> <groupId>org.primefaces.themes</groupId> <artifactId>eggplant</artifactId> - <version>1.0.8</version> + <version>${primefaces.themes.version}</version> </dependency> <dependency> <groupId>org.primefaces.themes</groupId> <artifactId>excite-bike</artifactId> - <version>1.0.8</version> + <version>${primefaces.themes.version}</version> </dependency> <dependency> <groupId>org.primefaces.themes</groupId> <artifactId>flick</artifactId> - <version>1.0.8</version> + <version>${primefaces.themes.version}</version> </dependency> <dependency> <groupId>org.primefaces.themes</groupId> <artifactId>hot-sneaks</artifactId> - <version>1.0.8</version> + <version>${primefaces.themes.version}</version> </dependency> <dependency> <groupId>org.primefaces.themes</groupId> <artifactId>humanity</artifactId> - <version>1.0.8</version> + <version>${primefaces.themes.version}</version> </dependency> <dependency> <groupId>org.primefaces.themes</groupId> <artifactId>le-frog</artifactId> - <version>1.0.8</version> + <version>${primefaces.themes.version}</version> </dependency> <dependency> <groupId>org.primefaces.themes</groupId> <artifactId>midnight</artifactId> - <version>1.0.8</version> + <version>${primefaces.themes.version}</version> </dependency> <dependency> <groupId>org.primefaces.themes</groupId> <artifactId>mint-choc</artifactId> - <version>1.0.8</version> + <version>${primefaces.themes.version}</version> </dependency> <dependency> <groupId>org.primefaces.themes</groupId> <artifactId>overcast</artifactId> - <version>1.0.8</version> + <version>${primefaces.themes.version}</version> </dependency> <dependency> <groupId>org.primefaces.themes</groupId> <artifactId>pepper-grinder</artifactId> - <version>1.0.8</version> + <version>${primefaces.themes.version}</version> </dependency> <dependency> <groupId>org.primefaces.themes</groupId> <artifactId>redmond</artifactId> - <version>1.0.8</version> + <version>${primefaces.themes.version}</version> </dependency> <dependency> <groupId>org.primefaces.themes</groupId> <artifactId>rocket</artifactId> - <version>1.0.8</version> + <version>${primefaces.themes.version}</version> </dependency> <dependency> <groupId>org.primefaces.themes</groupId> <artifactId>sam</artifactId> - <version>1.0.8</version> + <version>${primefaces.themes.version}</version> </dependency> <dependency> <groupId>org.primefaces.themes</groupId> <artifactId>smoothness</artifactId> - <version>1.0.8</version> + <version>${primefaces.themes.version}</version> </dependency> <dependency> <groupId>org.primefaces.themes</groupId> <artifactId>south-street</artifactId> - <version>1.0.8</version> + <version>${primefaces.themes.version}</version> </dependency> <dependency> <groupId>org.primefaces.themes</groupId> <artifactId>start</artifactId> - <version>1.0.8</version> + <version>${primefaces.themes.version}</version> </dependency> <dependency> <groupId>org.primefaces.themes</groupId> <artifactId>sunny</artifactId> - <version>1.0.8</version> + <version>${primefaces.themes.version}</version> </dependency> <dependency> <groupId>org.primefaces.themes</groupId> <artifactId>swanky-purse</artifactId> - <version>1.0.8</version> + <version>${primefaces.themes.version}</version> </dependency> <dependency> <groupId>org.primefaces.themes</groupId> <artifactId>trontastic</artifactId> - <version>1.0.8</version> + <version>${primefaces.themes.version}</version> </dependency> <dependency> <groupId>org.primefaces.themes</groupId> <artifactId>ui-darkness</artifactId> - <version>1.0.8</version> + <version>${primefaces.themes.version}</version> </dependency> <dependency> <groupId>org.primefaces.themes</groupId> <artifactId>ui-lightness</artifactId> - <version>1.0.8</version> + <version>${primefaces.themes.version}</version> </dependency> <dependency> <groupId>org.primefaces.themes</groupId> <artifactId>vader</artifactId> - <version>1.0.8</version> + <version>${primefaces.themes.version}</version> </dependency> <dependency> <groupId>org.primefaces.themes</groupId> <artifactId>glass-x</artifactId> - <version>1.0.8</version> + <version>${primefaces.themes.version}</version> </dependency> <dependency> <groupId>kieker</groupId> @@ -331,7 +338,7 @@ <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>findbugs-maven-plugin</artifactId> - <version>2.4.0</version> + <version>2.5.2</version> <configuration> <effort>Max</effort> <threshold>Low</threshold> @@ -368,8 +375,11 @@ <plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> - <version>8.1.4.v20120524</version> + <version>8.1.7.v20120910</version> <configuration> + <webApp> + <contextPath>/Kieker.WebGUI</contextPath> + </webApp> <scanIntervalSeconds>5</scanIntervalSeconds> <connectors> <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector"> @@ -383,7 +393,7 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> - <version>2.4</version> + <version>2.5.1</version> <configuration> <source>1.6</source> <target>1.6</target> @@ -413,7 +423,7 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> - <version>2.2</version> + <version>2.3</version> <configuration> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> diff --git a/Kieker.WebGUI/src/main/webapp/dialogs/ProjectOverviewPageDialogs.xhtml b/Kieker.WebGUI/src/main/webapp/dialogs/ProjectOverviewPageDialogs.xhtml index 3970abaa82b5c1742d36358ce9ed178828e0180a..25ae3ba6c45e221eaa9586e26070158da5fe01b5 100644 --- a/Kieker.WebGUI/src/main/webapp/dialogs/ProjectOverviewPageDialogs.xhtml +++ b/Kieker.WebGUI/src/main/webapp/dialogs/ProjectOverviewPageDialogs.xhtml @@ -71,4 +71,18 @@ </div> </h:form> </p:dialog> + + <p:dialog header="Save Project" resizable="false" modal="true" widgetVar="forceSaveDlg"> + <h:form> + <div style="text-align: center"> + <h:outputText value="The project has been modified externally in the meanwhile. Do you want to overwrite the changes?" /> + </div> + <hr/> + <div style="text-align: right"> + <p:commandButton value="Yes" action="#{currentCockpitEditorBean.saveProject(true)}" oncomplete="forceSaveDlg.hide()" update=":messages" /> + <p:spacer width="10px" height="10" /> + <p:commandButton value="Cancel" onclick="forceSaveDlg.hide()" /> + </div> + </h:form> + </p:dialog> </ui:composition> \ No newline at end of file diff --git a/Kieker.WebGUI/src/main/webapp/pages/CockpitEditorPage.xhtml b/Kieker.WebGUI/src/main/webapp/pages/CockpitEditorPage.xhtml index c7f1e6e011b1e6c076d7374a2b475d19b243b2ee..cda5721a49cd93928a414b473f4b998404453dea 100644 --- a/Kieker.WebGUI/src/main/webapp/pages/CockpitEditorPage.xhtml +++ b/Kieker.WebGUI/src/main/webapp/pages/CockpitEditorPage.xhtml @@ -3,107 +3,53 @@ <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:p="http://primefaces.org/ui" + xmlns:f="http://java.sun.com/jsf/core"> - <f:metadata> - <f:viewParam name="projectName" value="#{currentCockpitEditorBean.projectName}"/> - <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/Icons.css" /> - <link rel="stylesheet" type="text/css" href="../css/CockpitEditorPage.css" /> - </h:head> + <h:head/> <h:body> - <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(currentCockpitEditorBean.projectName, 30)}"/> - </p:toolbarGroup> - <p:toolbarGroup align="right"> - <p:button styleClass="perspective-button" icon="ui-icon-home" outcome="projectOverview" /> - <p:separator/> - <p:button styleClass="perspective-button" icon="ui-icon-analysisEditor" value="#{localizedMessages.analysisEditor}" style="white-space: none" outcome="analysisEditor"> - <f:param name="projectName" value="#{currentCockpitEditorBean.projectName}" rendered="#{not empty currentCockpitEditorBean.projectName}"/> - </p:button> - <p:button styleClass="perspective-button" icon="ui-icon-analysis" value="#{localizedMessages.analysis}" style="white-space: none" outcome="controller"> - <f:param name="projectName" value="#{currentCockpitEditorBean.projectName}" rendered="#{not empty currentCockpitEditorBean.projectName}"/> - </p:button> - <p:separator/> - <p:button styleClass="perspective-button" icon="ui-icon-cockpitEditor" value="#{localizedMessages.cockpitEditor}" style="white-space: none" disabled="true"/> - <p:button styleClass="perspective-button" icon="ui-icon-cockpit" value="#{localizedMessages.cockpit}" style="white-space: none" outcome="cockpit"> - <f:param name="projectName" value="#{currentCockpitEditorBean.projectName}" rendered="#{not empty currentCockpitEditorBean.projectName}"/> - </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-newProject" value=" Neues View" update=":messages" ajax="true" onclick="newViewDialog.show();" disabled="#{empty currentCockpitEditorBean.project}"/> - <p:separator /> - <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-save" value=" #{localizedMessages.saveProject}" update=":messages" ajax="true" action="#{currentCockpitEditorBean.saveProject(false)}" disabled="#{empty currentCockpitEditorBean.project}"/> - <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-saveAs" value=" #{localizedMessages.saveProjectAs}" update=":messages" ajax="true" disabled="#{true or empty currentCockpitEditorBean.project}"/> - <p:separator /> - <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-reload" value=" #{localizedMessages.reloadProject}" ajax="false" url="cockpitEditor?projectName=#{currentCockpitEditorBean.projectName}" disabled="#{empty currentCockpitEditorBean.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="#{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="#{request.contextPath}/j_spring_security_logout"/> - </p:menubar> - </h:form> - </p:layoutUnit> - <p:layoutUnit position="west" resizable="true" size="300" collapsible="true" header="Available Views"> - <h:form id="availableViewsForm"> - <p:dataList value="#{currentCockpitEditorBean.project.views}" var="viewElem"> - <p:commandLink id="dynaButton" value="#{viewElem.name}"/> - - <p:menu overlay="true" trigger="dynaButton" my="left top" at="left bottom" style="width:210px"> - <p:menuitem icon="ui-icon-analysisEditor" value=" #{localizedCockpitEditorPageMessages.selectView}" action="#{currentCockpitEditorBean.setActiveView(viewElem)}" styleClass="element-with-whitespace" update=":messages :centerForm"/> - <p:separator/> - <p:menuitem icon="ui-icon-copy" styleClass="element-with-whitespace" value=" #{localizedCockpitEditorPageMessages.copyView}" /> - <p:menuitem icon="ui-icon-edit" styleClass="element-with-whitespace" value=" #{localizedCockpitEditorPageMessages.renameView}"/> - <p:menuitem icon="ui-icon-delete" styleClass="element-with-whitespace" value=" #{localizedCockpitEditorPageMessages.deleteView}"/> - </p:menu> - </p:dataList> - </h:form> - </p:layoutUnit> - - <p:layoutUnit position="east" resizable="true" size="300" collapsible="true" header="Available Displays"> - <h:form rendered="#{not empty currentCockpitEditorBean.project}"> - <p:accordionPanel value="#{currentCockpitEditorBean.project.plugins}" multiple="true" activeIndex="" var="plugin"> - <p:tab title="#{plugin.name}" titletip="#{plugin.classname}"> - <h:outputText value="No Displays Available" rendered="#{empty plugin.displays}"/> - <ui:repeat value="#{plugin.displays}" var="display"> - <p:commandLink id="displayLink" value="#{display.name}" action="#{currentCockpitEditorBean.addDisplayToView(display)}" update=":availableViewsForm :centerForm"/><br/> - <p:tooltip for="displayLink" value="#{currentCockpitEditorBean.getDescription(display)}"/> - </ui:repeat> - </p:tab> - </p:accordionPanel> - </h:form> - </p:layoutUnit> - - <p:layoutUnit position="center"> + <ui:composition template="/templates/PagesTemplate.xhtml"> + + <ui:param name="projectName" value="#{currentCockpitEditorBean.projectName}"/> + <ui:param name="pagename" value="cockpitEditor"/> + <ui:param name="showProjectName" value="true"/> + + <ui:define name="metaData"> + <f:metadata> + <f:viewParam name="projectName" value="#{currentCockpitEditorBean.projectName}"/> + <f:event type="preRenderView" listener="#{currentCockpitEditorBean.initalize()}" /> + </f:metadata> + </ui:define> + + <ui:define name="bundleIncludes"> + <f:loadBundle var="localizedCockpitEditorPageMessages" basename="lang.CockpitEditorPage"/> + </ui:define> + + <ui:define name="cssIncludes"> + <link rel="stylesheet" type="text/css" href="${root}/css/CockpitEditorPage.css" /> + </ui:define> + + + <!-- Those are the menu bar entries left from the help-submenu. --> + <ui:define name="furtherMenuBarEntries"> + <p:submenu label="#{localizedMessages.file}"> + <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-newProject" value=" Neues View" update=":messages" ajax="true" onclick="newViewDialog.show();" disabled="#{empty currentCockpitEditorBean.project}"/> + <p:separator /> + <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-save" value=" #{localizedMessages.saveProject}" update=":messages" ajax="true" action="#{currentCockpitEditorBean.saveProject(false)}" disabled="#{empty currentCockpitEditorBean.project}"/> + <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-saveAs" value=" #{localizedMessages.saveProjectAs}" update=":messages" ajax="true" disabled="#{true or empty currentCockpitEditorBean.project}"/> + <p:separator /> + <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-reload" value=" #{localizedMessages.reloadProject}" ajax="false" url="cockpitEditor?projectName=#{currentCockpitEditorBean.projectName}" disabled="#{empty currentCockpitEditorBean.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> + </ui:define> + + + <ui:define name="centerContent"> <h:form id="centerForm"> <ui:fragment rendered="#{not empty currentCockpitEditorBean.activeView}"> <h:outputText value="Description: "/> @@ -115,45 +61,58 @@ <p:dashboard id="dynamicDashboard" binding="#{currentCockpitEditorBean.dashboard}"/> </ui:fragment> </h:form> - </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" var="property" rowIndexVar="rowIndex" emptyMessage="#{localizedMessages.noPropertiesAvailable}"> - <p:column headerText="#{localizedMessages.property}" style="width:125px"> - </p:column> - - <p:column headerText="#{localizedMessages.value}" style="width:125px"> - </p:column> - </p:dataTable> - </h:form> - </p:layoutUnit> - </p:layout> - - <p:dialog header="Save Project" resizable="false" modal="true" widgetVar="forceSaveDlg"> - <h:form> - <div style="text-align: center"> - <h:outputText value="The project has been modified externally in the meanwhile. Do you want to overwrite the changes?" /> - </div> - <hr/> - <div style="text-align: right"> - <p:commandButton value="Yes" action="#{currentCockpitEditorBean.saveProject(true)}" oncomplete="forceSaveDlg.hide()" update=":messages" /> - <p:spacer width="10px" height="10" /> - <p:commandButton value="Cancel" onclick="forceSaveDlg.hide()" /> - </div> - </h:form> - </p:dialog> - - <p: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 dialogs for the views. --> - <ui:include src="../dialogs/CockpitEditorPageDialogs.xhtml" /> - - <!-- Include the about-dialog. --> - <ui:include src="../dialogs/AboutDialog.xhtml" /> + </ui:define> + + <ui:define name="furtherLayoutUnits"> + <p:layoutUnit position="west" resizable="true" size="300" collapsible="true" header="Available Views"> + <h:form id="availableViewsForm"> + <p:dataList value="#{currentCockpitEditorBean.project.views}" var="viewElem"> + <p:commandLink id="dynaButton" value="#{viewElem.name}"/> + + <p:menu overlay="true" trigger="dynaButton" my="left top" at="left bottom" style="width:210px"> + <p:menuitem icon="ui-icon-analysisEditor" value=" #{localizedCockpitEditorPageMessages.selectView}" action="#{currentCockpitEditorBean.setActiveView(viewElem)}" styleClass="element-with-whitespace" update=":messages :centerForm"/> + <p:separator/> + <p:menuitem icon="ui-icon-copy" styleClass="element-with-whitespace" value=" #{localizedCockpitEditorPageMessages.copyView}" /> + <p:menuitem icon="ui-icon-edit" styleClass="element-with-whitespace" value=" #{localizedCockpitEditorPageMessages.renameView}"/> + <p:menuitem icon="ui-icon-delete" styleClass="element-with-whitespace" value=" #{localizedCockpitEditorPageMessages.deleteView}"/> + </p:menu> + </p:dataList> + </h:form> + </p:layoutUnit> + + <p:layoutUnit position="east" resizable="true" size="300" collapsible="true" header="Available Displays"> + <h:form rendered="#{not empty currentCockpitEditorBean.project}"> + <p:accordionPanel value="#{currentCockpitEditorBean.project.plugins}" multiple="true" activeIndex="" var="plugin"> + <p:tab title="#{plugin.name}" titletip="#{plugin.classname}"> + <h:outputText value="No Displays Available" rendered="#{empty plugin.displays}"/> + <ui:repeat value="#{plugin.displays}" var="display"> + <p:commandLink id="displayLink" value="#{display.name}" action="#{currentCockpitEditorBean.addDisplayToView(display)}" update=":availableViewsForm :centerForm"/><br/> + <p:tooltip for="displayLink" value="#{currentCockpitEditorBean.getDescription(display)}"/> + </ui:repeat> + </p:tab> + </p:accordionPanel> + </h:form> + </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" var="property" rowIndexVar="rowIndex" emptyMessage="#{localizedMessages.noPropertiesAvailable}"> + <p:column headerText="#{localizedMessages.property}" style="width:125px"> + </p:column> + + <p:column headerText="#{localizedMessages.value}" style="width:125px"> + </p:column> + </p:dataTable> + </h:form> + </p:layoutUnit> + </ui:define> + + <ui:define name="furtherDialogIncludes"> + <!-- Include the dialogs for the views. --> + <ui:include src="../dialogs/CockpitEditorPageDialogs.xhtml" /> + </ui:define> + + </ui:composition> + </h:body> </html> \ No newline at end of file diff --git a/Kieker.WebGUI/src/main/webapp/pages/ControllerPage.xhtml b/Kieker.WebGUI/src/main/webapp/pages/ControllerPage.xhtml index 623647308973d2b3be3c0206afde6f7c8b71e1a9..89d6bede4e18577cacb93b153f3674fde9bdefc6 100644 --- a/Kieker.WebGUI/src/main/webapp/pages/ControllerPage.xhtml +++ b/Kieker.WebGUI/src/main/webapp/pages/ControllerPage.xhtml @@ -3,72 +3,45 @@ <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:p="http://primefaces.org/ui" + xmlns:f="http://java.sun.com/jsf/core"> - <f:metadata> - <f:viewParam name="projectName" value="#{currentControllerBean.projectName}"/> - </f:metadata> + <h:head/> - <f:loadBundle var="localizedMessages" basename="lang.Common"/> - <f:loadBundle var="localizedControllerPageMessages" basename="lang.ControllerPage"/> + <h:body> - <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> + <ui:composition template="/templates/PagesTemplate.xhtml"> - <h:body> + <ui:param name="projectName" value="#{currentControllerBean.projectName}"/> + <ui:param name="pagename" value="controller"/> + <ui:param name="showProjectName" value="true"/> + + <ui:define name="metaData"> + <f:metadata> + <f:viewParam name="projectName" value="#{currentControllerBean.projectName}"/> + </f:metadata> + </ui:define> + + <ui:define name="bundleIncludes"> + <f:loadBundle var="localizedControllerPageMessages" basename="lang.ControllerPage"/> + </ui:define> + + <ui:define name="cssIncludes"> + <link rel="stylesheet" type="text/css" href="${root}/css/ControllerPage.css" /> + </ui:define> - <!-- 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:button styleClass="perspective-button" icon="ui-icon-home" outcome="projectOverview" /> - <p:separator/> - <p:button styleClass="perspective-button" icon="ui-icon-analysisEditor" value="#{localizedMessages.analysisEditor}" style="white-space: none" outcome="analysisEditor" > - <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:separator/> - <p:button styleClass="perspective-button" icon="ui-icon-cockpitEditor" value="#{localizedMessages.cockpitEditor}" style="white-space: none" outcome="cockpitEditor"> - <f:param name="projectName" value="#{currentControllerBean.projectName}" rendered="#{not empty currentControllerBean.projectName}"/> - </p:button> - <p:button styleClass="perspective-button" icon="ui-icon-cockpit" value="#{localizedMessages.cockpit}" style="white-space: none" outcome="cockpit"> - <f:param name="projectName" value="#{currentControllerBean.projectName}" rendered="#{not empty currentControllerBean.projectName}"/> - </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="#{request.contextPath}/j_spring_security_logout"/> - </p:menubar> - - </h:form> - </p:layoutUnit> - - - <p:layoutUnit position="center" id="centerLayout"> + <!-- Those are the menu bar entries left from the help-submenu. --> + <ui:define name="furtherMenuBarEntries"> + <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> + </ui:define> + + + + <ui:define name="centerContent"> <p:tabView id="tabView" style="height: 99%"> <p:tab title="#{localizedControllerPageMessages.personalLog}"> <h:form id="currentViewLog"> @@ -85,53 +58,47 @@ </h:form> </p:tab> </p:tabView> - </p:layoutUnit> - - <p:layoutUnit position="south" header="#{localizedControllerPageMessages.control}" resizable="true" collapsible="true"> - <h:form id="controllerForm"> - <p:commandButton value="#{localizedControllerPageMessages.analysisControllerInstantiateAnalysisController}" action="#{currentControllerBean.instantiateAnalysis()}" update=":messages :tabView:currentViewLog" disabled="#{empty currentControllerBean.projectName}"/> - <p:commandButton value="#{localizedControllerPageMessages.analysisControllerCleaAnalysisController}" action="#{currentControllerBean.cleanAnalysis()}" update=":messages :tabView:currentViewLog" disabled="#{empty currentControllerBean.projectName}"/> - <p:commandButton value="#{localizedControllerPageMessages.analysisControllerStartAnalysis}" action="#{currentControllerBean.startAnalysis()}" update=":messages :tabView:currentViewLog" disabled="#{empty currentControllerBean.projectName}"/> - <p:commandButton value="#{localizedControllerPageMessages.analysisControllerStopAnalysis}" action="#{currentControllerBean.stopAnalysis()}" update=":messages :tabView:currentViewLog" disabled="#{empty currentControllerBean.projectName}"/> - <p:poll interval="1" update=":ledsForm :tabView:analysisControllerLog"/> - </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" /> + </ui:define> + + <ui:define name="furtherLayoutUnits"> + <p:layoutUnit position="south" header="#{localizedControllerPageMessages.control}" resizable="true" collapsible="true"> + <h:form id="controllerForm"> + <p:commandButton value="#{localizedControllerPageMessages.analysisControllerInstantiateAnalysisController}" action="#{currentControllerBean.instantiateAnalysis()}" update=":messages :tabView:currentViewLog" disabled="#{empty currentControllerBean.projectName}"/> + <p:commandButton value="#{localizedControllerPageMessages.analysisControllerCleaAnalysisController}" action="#{currentControllerBean.cleanAnalysis()}" update=":messages :tabView:currentViewLog" disabled="#{empty currentControllerBean.projectName}"/> + <p:commandButton value="#{localizedControllerPageMessages.analysisControllerStartAnalysis}" action="#{currentControllerBean.startAnalysis()}" update=":messages :tabView:currentViewLog" disabled="#{empty currentControllerBean.projectName}"/> + <p:commandButton value="#{localizedControllerPageMessages.analysisControllerStopAnalysis}" action="#{currentControllerBean.stopAnalysis()}" update=":messages :tabView:currentViewLog" disabled="#{empty currentControllerBean.projectName}"/> + <p:poll interval="1" update=":ledsForm :tabView:analysisControllerLog"/> + </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> + </ui:define> + + </ui:composition> </h:body> - </html> \ No newline at end of file