diff --git a/Kieker.WebGUI/bin/data/Advanced Example/Advanced Example.kax b/Kieker.WebGUI/bin/data/Advanced Example/Advanced Example.kax index d1465a37812d7af1dcea41cb91dc792347b0a92a..3f33d0980aeb207f7481dcb76cfdc8178171054c 100644 --- a/Kieker.WebGUI/bin/data/Advanced Example/Advanced Example.kax +++ b/Kieker.WebGUI/bin/data/Advanced Example/Advanced Example.kax @@ -78,4 +78,6 @@ <repositories name="systemModelRepository" repository="//@repositories.0"/> </plugins> <repositories name="System Model Repository" classname="kieker.tools.traceAnalysis.systemModel.repository.SystemModelRepository"/> + <properties name="recordsTimeUnit" value="NANOSECONDS"/> + <properties name="projectName" value="AnalysisProject"/> </Project> diff --git a/Kieker.WebGUI/bin/data/Advanced Example/meta.dat b/Kieker.WebGUI/bin/data/Advanced Example/meta.dat index 42c1f91e037c51698c4f5f06e42b9a609d63bcd3..f46da07d8b5039c4f521a49becfa932d1968263f 100644 --- a/Kieker.WebGUI/bin/data/Advanced Example/meta.dat +++ b/Kieker.WebGUI/bin/data/Advanced Example/meta.dat @@ -1,5 +1,5 @@ # -#Tue Apr 30 13:11:52 CEST 2013 +#Sun May 19 16:38:30 CEST 2013 owner=admin last\ user=admin -analysis\ layout=id0 -3839 -1470 312 72;id1 -3471 -1470 336 72;id2 -3095 -1476 288 132;id3 -2749 -1464 276 108;id4 -2041 -1479 468 96;id5 -1173 -1461 816 144;id6 -2109 -1225 876 84;id7 -1195 -1073 804 84;id8 -1177 -1237 840 144;id9 -411 -1394 564 72;id10 -309 -1509 360 72;id11 121 -1488 372 72;\#id1.2 id2.6 -3273.5 -1460.5 -3273.5 -1430.5;id1.2 id2.5 -3273.5 -1460.5 -3273.5 -1454.5;id3.12 id4.14 -2581.5 -1466.5 -2581.5 -1469.5;id3.12 id6.20 -2581.5 -1466.5 -2581.5 -1215.5;id4.0 id11.R -1641.5 -1487.5 -1641.5 -1617.5 -99.5 -1617.5 -99.5 -1478.5;id5.1 id11.R -727.5 -1493.5 -727.5 -1478.5;id5.17 id9.29 -727.5 -1457.5 -727.5 -1384.5;id6.21 id7.23 -1631.5 -1227.5 -1631.5 -1075.5;id6.22 id7.24 -1641.5 -1203.5 -1641.5 -1051.5;id8.2 id11.R -99.5 -1269.5 -99.5 -1478.5;id8.27 id9.29 -727.5 -1209.5 -727.5 -1384.5;id9.3 id11.R -99.5 -1384.5 -99.5 -1478.5;id10.4 id11.R -99.5 -1499.5 -99.5 -1478.5; +analysis\ layout=id0 -593 -253 348 72;id1 -611 -32 312 72;id2 -243 -32 336 72;id3 133 -38 288 132;id4 479 -26 276 108;id5 1187 -41 468 96;id6 2055 -23 816 144;id7 1119 213 876 84;id8 2033 365 804 84;id9 2051 201 840 144;id10 2817 44 564 72;id11 2919 -71 360 72;id12 3349 -50 372 72;\#id2.2 id3.6 -43.5 -20 -43.5 10;id2.2 id3.5 -43.5 -20 -43.5 -14;id4.12 id5.14 648.5 -26 648.5 -29;id4.12 id7.20 648.5 -26 648.5 225;id5.0 id12.R 1588.5 -47 1588.5 -177 3130.5 -177 3130.5 -38;id6.1 id12.R 2502.5 -53 2502.5 -38;id6.17 id10.29 2502.5 -17 2502.5 56;id7.21 id8.23 1598.5 213 1598.5 365;id7.22 id8.24 1588.5 237 1588.5 389;id9.2 id12.R 3130.5 171 3130.5 -38;id9.27 id10.29 2502.5 231 2502.5 56;id10.3 id12.R 3130.5 56 3130.5 -38;id11.4 id12.R 3130.5 -59 3130.5 -38; diff --git a/Kieker.WebGUI/bin/data/Bookstore-Example/Bookstore-Example.kax b/Kieker.WebGUI/bin/data/Bookstore-Example/Bookstore-Example.kax index c73f9b70ab0acf35b69e3dc94e85585f76fc7d11..a48eb3ed422f662db4a9159ff22f466fe49a5837 100644 --- a/Kieker.WebGUI/bin/data/Bookstore-Example/Bookstore-Example.kax +++ b/Kieker.WebGUI/bin/data/Bookstore-Example/Bookstore-Example.kax @@ -44,4 +44,6 @@ <displayConnectors name="Invalid Counter" display="//@plugins.4/@displays.0"/> <displayConnectors name="Global Counter" display="//@plugins.5/@displays.0"/> </views> + <properties name="recordsTimeUnit" value="NANOSECONDS"/> + <properties name="projectName" value="AnalysisProject"/> </Project> diff --git a/Kieker.WebGUI/bin/data/Bookstore-Example/meta.dat b/Kieker.WebGUI/bin/data/Bookstore-Example/meta.dat index 9b513dfeff73e639804f667dc0d166a13155e442..ef80c58e5959ca3f40e4392fa6f3fecf5be6e7f6 100644 --- a/Kieker.WebGUI/bin/data/Bookstore-Example/meta.dat +++ b/Kieker.WebGUI/bin/data/Bookstore-Example/meta.dat @@ -1,5 +1,5 @@ # -#Fri Apr 12 20:59:13 CEST 2013 +#Sun May 19 16:38:40 CEST 2013 owner=admin last\ user=admin -analysis\ layout=id0 -567 -161 192 72;id1 49 -173 336 84;id2 759 -75 276 72;id3 419 -63 276 84;id4 419 -203 252 84;id5 -295 -161 264 84;id6 747 -207 252 72;\#id1.2 id4.8 248.5 -173.5 248.5 -191.5;id1.3 id3.5 248.5 -149.5 248.5 -51.5;id4.9 id6.14 588.5 -203.5 588.5 -195.5; +analysis\ layout=id0 -593 -253 348 72;id1 -671 -51 192 72;id2 -55 -63 336 84;id3 655 35 276 72;id4 315 47 276 84;id5 315 -93 252 84;id6 -399 -51 264 84;id7 643 -97 252 72;\#id2.2 id5.8 144.5 -63 144.5 -81;id2.3 id4.5 144.5 -39 144.5 59;id5.9 id7.14 484.5 -93 484.5 -85; diff --git a/Kieker.WebGUI/bin/data/Timer-Counter-Example/Timer-Counter-Example.kax b/Kieker.WebGUI/bin/data/Timer-Counter-Example/Timer-Counter-Example.kax index e2a5ae664f1ceaac7d345c1990b0380ed3f07799..79c0ac2ce3f5a8bc16847b4cc2bbb48c7d8432b2 100644 --- a/Kieker.WebGUI/bin/data/Timer-Counter-Example/Timer-Counter-Example.kax +++ b/Kieker.WebGUI/bin/data/Timer-Counter-Example/Timer-Counter-Example.kax @@ -35,4 +35,6 @@ <displayConnectors name="Display 0" display="//@plugins.1/@displays.0"/> <displayConnectors name="Display 1" display="//@plugins.2/@displays.0"/> </views> + <properties name="recordsTimeUnit" value="NANOSECONDS"/> + <properties name="projectName" value="AnalysisProject"/> </Project> diff --git a/Kieker.WebGUI/bin/data/Timer-Counter-Example/meta.dat b/Kieker.WebGUI/bin/data/Timer-Counter-Example/meta.dat index ca4ed86d860c4fcc97ea702269d25ad16f0e5a3a..a1d9d7c5a042c3f05ec5b8eb4797ee5111c669fd 100644 --- a/Kieker.WebGUI/bin/data/Timer-Counter-Example/meta.dat +++ b/Kieker.WebGUI/bin/data/Timer-Counter-Example/meta.dat @@ -1,5 +1,5 @@ # -#Sat Apr 20 16:01:48 CEST 2013 +#Sun May 19 16:38:48 CEST 2013 owner=admin last\ user=admin -analysis\ layout=id0 -578 -97 216 84;id1 -274 -219 264 84;id2 -274 -85 264 84;id3 24 -97 204 72;id4 24 -227 204 72;\#id0.0 id1.2 -438.5 -97.5 -438.5 -207.5;id1.3 id4.10 -110.5 -219.5 -110.5 -215.5; +analysis\ layout=id0 -593 -253 348 72;id1 -659 29 216 84;id2 -355 -93 264 84;id3 -355 41 264 84;id4 -57 29 204 72;id5 -57 -101 204 72;\#id1.0 id2.2 -519.5 29 -519.5 -81;id2.3 id5.10 -191.5 -93 -191.5 -89; diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/application/GlobalPropertiesBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/application/GlobalPropertiesBean.java index 8299dd869b3fea8aba0cb66e77ac69d2c20f2da5..99af78d6662504d279a1c7d6137082a5319bb919 100644 --- a/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/application/GlobalPropertiesBean.java +++ b/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/application/GlobalPropertiesBean.java @@ -64,6 +64,7 @@ public class GlobalPropertiesBean implements Serializable { 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 static final String PROPERTY_NAME_GLOBAL_CONFIGURATION_COMPONENT = "nameGlobalConfigurationComponent"; private String themeCookieName; private String projectOverviewPage; @@ -193,6 +194,10 @@ public class GlobalPropertiesBean implements Serializable { return GlobalPropertiesBean.getLocalizedString(GlobalPropertiesBean.PROPERTY_MSG_PROJECT_DELETED); } + public String getGlobalConfigurationComponentName() { + return GlobalPropertiesBean.getLocalizedString(GlobalPropertiesBean.PROPERTY_NAME_GLOBAL_CONFIGURATION_COMPONENT); + } + 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 final Locale currLocale = FacesContext.getCurrentInstance().getELContext().getLocale(); diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/view/CurrentAnalysisEditorBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/view/CurrentAnalysisEditorBean.java index fe2ec941344f801bd6d350300dd857e697230178..9661a3e7781860ad43640d861a07ebaf22eb21d6 100644 --- a/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/view/CurrentAnalysisEditorBean.java +++ b/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/view/CurrentAnalysisEditorBean.java @@ -19,6 +19,7 @@ package kieker.webgui.web.beans.view; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -26,6 +27,7 @@ import javax.faces.application.FacesMessage; import javax.faces.context.FacesContext; import javax.faces.event.ValueChangeEvent; +import kieker.analysis.AnalysisController; import kieker.analysis.model.analysisMetaModel.MIAnalysisComponent; import kieker.analysis.model.analysisMetaModel.MIAnalysisMetaModelFactory; import kieker.analysis.model.analysisMetaModel.MIDependency; @@ -39,6 +41,7 @@ import kieker.analysis.model.analysisMetaModel.MIReader; import kieker.analysis.model.analysisMetaModel.MIRepository; import kieker.analysis.model.analysisMetaModel.MIRepositoryConnector; import kieker.analysis.model.analysisMetaModel.impl.MAnalysisMetaModelFactory; +import kieker.analysis.plugin.annotation.Property; import kieker.common.logging.Log; import kieker.common.logging.LogFactory; import kieker.webgui.common.exception.LibraryLoadException; @@ -292,6 +295,15 @@ public class CurrentAnalysisEditorBean { this.currentLayout = paramMap.get("layoutString"); final boolean overwriteNewerProject = Boolean.parseBoolean(paramMap.get("overwriteNewerProject")); + // Convert the global component property to project properties + this.project.getProperties().clear(); + for (final MIProperty mProperty : this.globalConfigurationInstance.getProperties()) { + final MIProperty mCopy = CurrentAnalysisEditorBean.FACTORY.createProperty(); + mCopy.setName(mProperty.getName()); + mCopy.setValue(mProperty.getValue()); + this.project.getProperties().add(mCopy); + } + try { this.projectService.saveProject(this.projectName, this.project, this.timeStamp, overwriteNewerProject, this.userBean.getUsername(), this.currentLayout, null); @@ -408,6 +420,10 @@ public class CurrentAnalysisEditorBean { return result; } + public boolean isGlobalConfigComponentSelected() { + return this.selectedComponent == this.globalConfigurationInstance; + } + /** * Delivers a human readable description of the given property. * @@ -481,10 +497,7 @@ public class CurrentAnalysisEditorBean { * repositories and their connections. All further components will be added mostly by other methods. */ public void initializeGraph() { - this.globalConfigurationInstance = CurrentAnalysisEditorBean.FACTORY.createFilter(); - final MIProperty prop1 = CurrentAnalysisEditorBean.FACTORY.createProperty(); - prop1.setName("Bla"); - this.globalConfigurationInstance.getProperties().add(prop1); + this.initializeGlobalConfigurationInstance(); // Make sure that the currentAnalysisEditorGraphBean knows "this" as well. this.currentAnalysisEditorGraphBean.setCurrentAnalysisEditorBean(this); @@ -543,6 +556,29 @@ public class CurrentAnalysisEditorBean { this.currentAnalysisEditorGraphBean.checkReadOnlyForGuests(); } + private void initializeGlobalConfigurationInstance() { + this.globalConfigurationInstance = CurrentAnalysisEditorBean.FACTORY.createFilter(); + + final kieker.analysis.annotation.AnalysisController annotation = AnalysisController.class.getAnnotation(kieker.analysis.annotation.AnalysisController.class); + final Property[] properties = annotation.configuration(); + final Map<String, String> propertyMap = new HashMap<String, String>(); + + for (final Property property : properties) { + propertyMap.put(property.name(), property.defaultValue()); + } + + for (final MIProperty mProperty : this.project.getProperties()) { + propertyMap.put(mProperty.getName(), mProperty.getValue()); + } + + for (final Map.Entry<String, String> property : propertyMap.entrySet()) { + final MIProperty mProperty = CurrentAnalysisEditorBean.FACTORY.createProperty(); + mProperty.setName(property.getKey()); + mProperty.setValue(property.getValue()); + this.globalConfigurationInstance.getProperties().add(mProperty); + } + } + /** * This method should be called if a node (plugin, repository) has been selected. * diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/view/CurrentAnalysisEditorGraphBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/view/CurrentAnalysisEditorGraphBean.java index 0d5a0973cb2ff9474730721ccffea503a34c962f..fce9de8ca5d572b51f6e3f1b7e81d7ebbdf105d7 100644 --- a/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/view/CurrentAnalysisEditorGraphBean.java +++ b/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/view/CurrentAnalysisEditorGraphBean.java @@ -34,6 +34,7 @@ import kieker.common.logging.LogFactory; import kieker.monitoring.core.registry.Registry; import kieker.webgui.common.exception.GraphLayoutException; import kieker.webgui.service.IGraphLayoutService; +import kieker.webgui.web.beans.application.GlobalPropertiesBean; import kieker.webgui.web.beans.session.UserBean; import org.primefaces.context.RequestContext; @@ -89,7 +90,7 @@ public class CurrentAnalysisEditorGraphBean { private static final String JS_CMD_ADD_FILTER = "var center = graph.getScreenCenter(); graph.addNode(center.x, center.y, %s,[%s],[%s],[%s],'Filter', false)"; private static final String JS_CMD_ADD_READER = "var center = graph.getScreenCenter(); graph.addNode(center.x, center.y, %s,[%s],null,[%s], 'Reader', false)"; private static final String JS_CMD_ADD_REPOSITORY = "var center = graph.getScreenCenter(); graph.addNode(center.x, center.y, %s, null, [%s], null, 'Repository',false)"; - private static final String JS_CMD_ADD_GLOBAL_COMPONENT = "var center = graph.getScreenCenter(); graph.addNode(center.x, center.y, {'id':'%s', 'name':'Project-Configuration', 'nodeClass':'', 'tooltip':''}, null, null, null,'Global', false); graph.setNodeData('%s.close', {'$visible' : false});"; + private static final String JS_CMD_ADD_GLOBAL_COMPONENT = "var center = graph.getScreenCenter(); graph.addNode(center.x, center.y, {'id':'%s', 'name':'%s', 'nodeClass':'', 'tooltip':'%s'}, null, null, null, 'Global', false); graph.setNodeData('%s.close', {'$visible' : false});"; private static final String JS_CMD_ENABLE_GRID = "graph.setGridVisible(true, false)"; private static final String JS_CMD_DISABLE_GRID = "graph.setGridVisible(false, false)"; @@ -118,6 +119,8 @@ public class CurrentAnalysisEditorGraphBean { private IGraphLayoutService layouter; @Autowired private UserBean userBean; + @Autowired + private GlobalPropertiesBean globalPropertiesBean; /** * Creates a new instance of this class. <b>Do not call this constructor manually. It will only be accessed by Spring.</b> @@ -140,7 +143,11 @@ public class CurrentAnalysisEditorGraphBean { // Create an MIAnalysisComponent instance, which represents the global configuration of the project final MIAnalysisComponent globalComponent = this.currentAnalysisEditorBean.getGlobalConfigurationComponent(); final int id = this.componentMap.get(globalComponent); - RequestContext.getCurrentInstance().execute(String.format(CurrentAnalysisEditorGraphBean.JS_CMD_ADD_GLOBAL_COMPONENT, "id" + id, "id" + id)); + RequestContext.getCurrentInstance() + .execute( + String.format(CurrentAnalysisEditorGraphBean.JS_CMD_ADD_GLOBAL_COMPONENT, "id" + id, + this.globalPropertiesBean.getGlobalConfigurationComponentName(), this.globalPropertiesBean.getGlobalConfigurationComponentName(), + "id" + id)); } /** diff --git a/Kieker.WebGUI/src/main/resources/lang/Common_de.properties b/Kieker.WebGUI/src/main/resources/lang/Common_de.properties index 10dd44a24394b11b5e7dd5271554124b08c7c654..183b2ae52e29712d6940d40eba58e5ca60b23612 100644 --- a/Kieker.WebGUI/src/main/resources/lang/Common_de.properties +++ b/Kieker.WebGUI/src/main/resources/lang/Common_de.properties @@ -73,4 +73,6 @@ 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. -msgProjectDeleted = Das Projekt wurde erfolgreich gelöscht. \ No newline at end of file +msgProjectDeleted = Das Projekt wurde erfolgreich gelöscht. + +nameGlobalConfigurationComponent = Globale Konfiguration \ 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 index d827892e022856f08fe0f1f3a463273a719eb94c..7d49dd7b4bca7b19127081fa4c9f5cf959871cad 100644 --- a/Kieker.WebGUI/src/main/resources/lang/Common_en.properties +++ b/Kieker.WebGUI/src/main/resources/lang/Common_en.properties @@ -73,4 +73,6 @@ 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. -msgProjectDeleted = The project has been deleted successfully. \ No newline at end of file +msgProjectDeleted = The project has been deleted successfully. + +nameGlobalConfigurationComponent = Global Configuration \ No newline at end of file diff --git a/Kieker.WebGUI/src/main/webapp/pages/AnalysisEditorPage.xhtml b/Kieker.WebGUI/src/main/webapp/pages/AnalysisEditorPage.xhtml index 13b01accf03ee17bbe8650acab4d0e4fb8ca51d9..60dc14524db25c3a494057c918cc01510efbea26 100644 --- a/Kieker.WebGUI/src/main/webapp/pages/AnalysisEditorPage.xhtml +++ b/Kieker.WebGUI/src/main/webapp/pages/AnalysisEditorPage.xhtml @@ -146,27 +146,27 @@ <p:dataTable editable="true" value="#{currentAnalysisEditorBean.advancedPluginProperties}" var="property" rowIndexVar="rowIndex" emptyMessage="#{localizedMessages.noPropertiesAvailable}" 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="#{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}"/> + <h:outputText id="classNameProperty" value="#{localizedAnalysisEditorPageMessages.className}" rendered="#{rowIndex == 0 and not currentAnalysisEditorBean.globalConfigComponentSelected}"/> + <h:outputText id="nameProperty" value="#{localizedAnalysisEditorPageMessages.name}" rendered="#{rowIndex == 1 and not currentAnalysisEditorBean.globalConfigComponentSelected}"/> + <h:outputText id="normalProperty" value="#{property.name}" rendered="#{rowIndex > 1 or currentAnalysisEditorBean.globalConfigComponentSelected}"/> + <p:tooltip for="classNameProperty" value="#{localizedAnalysisEditorPageMessages.tooltipClassName}" rendered="#{rowIndex == 0 and not currentAnalysisEditorBean.globalConfigComponentSelected}"/> + <p:tooltip for="nameProperty" value="#{localizedAnalysisEditorPageMessages.tooltipName}" rendered="#{rowIndex == 1 and not currentAnalysisEditorBean.globalConfigComponentSelected}"/> + <p:tooltip for="normalProperty" value="#{currentAnalysisEditorBean.getDescription(currentAnalysisEditorBean.selectedPlugin, property.name)}" rendered="#{rowIndex > 1 or currentAnalysisEditorBean.globalConfigComponentSelected}"/> </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}" disabled="#{not sec:areAnyGranted('User, Administrator')}" > + <p:inplace id="nameEditor" editor="true" rendered="#{rowIndex == 1 and not currentAnalysisEditorBean.globalConfigComponentSelected}" disabled="#{not sec:areAnyGranted('User, Administrator')}" > <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}" disabled="#{not sec:areAnyGranted('User, Administrator')}"> + <p:inplace id="normalEditor" editor="true" rendered="#{rowIndex > 1 or currentAnalysisEditorBean.globalConfigComponentSelected}" disabled="#{not sec:areAnyGranted('User, Administrator')}"> <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:tooltip for="className" value="#{localizedAnalysisEditorPageMessages.tooltipClassName}" rendered="#{rowIndex == 0 and not currentAnalysisEditorBean.globalConfigComponentSelected}"/> + <p:tooltip for="nameEditor" value="#{localizedAnalysisEditorPageMessages.tooltipName}" rendered="#{rowIndex == 1 and not currentAnalysisEditorBean.globalConfigComponentSelected}"/> + <p:tooltip for="normalEditor" value="#{currentAnalysisEditorBean.getDescription(currentAnalysisEditorBean.selectedPlugin, property.name)}" rendered="#{rowIndex > 1 or currentAnalysisEditorBean.globalConfigComponentSelected}"/> </p:column> </p:dataTable> </h:form>