diff --git a/gazelle-proxy-common-war/src/main/webapp/messages.xhtml b/gazelle-proxy-common-war/src/main/webapp/messages.xhtml index c6f505604de09823a6aa70ac6222d58bc5c25d0c..c5ef7c63d67d898543cd45ba10c0aeb8690234c9 100644 --- a/gazelle-proxy-common-war/src/main/webapp/messages.xhtml +++ b/gazelle-proxy-common-war/src/main/webapp/messages.xhtml @@ -12,7 +12,7 @@ <h1>#{messages['net.ihe.gazelle.proxy.MessageList']}</h1> <a4j:form> <rich:simpleTogglePanel switchType="client" id="search" - label="#{messages['net.ihe.gazelle.proxy.SearchCriteria']}"> + opened="false" label="Dynamic search criteria"> <h:panelGrid columns="2"> <s:decorate id="messageTypeDeco" template="/layout/edit.xhtml"> <ui:define name="label">#{messages['net.ihe.gazelle.proxy.MessageType']}</ui:define> @@ -22,7 +22,7 @@ var="cmdField" label="#{cmdField.toString()}" /> <a4j:support event="onchange" action="#{messagesBean.redirectToMessages(messagesBean.messageType,messagesBean.proxyPort,messagesBean.responderIP,messagesBean.responderPort,messagesBean.initiatorIP,messagesBean.initiatorPort,null,messagesBean.dateFrom,messagesBean.dateTo,null,null)}" - reRender="search,panelOfMessages" /> + reRender="search,search2,panelOfMessages" /> </h:selectOneMenu> </s:decorate> </h:panelGrid> @@ -30,16 +30,22 @@ <s:decorate id="initiatorIPDeco" template="/layout/edit.xhtml"> <ui:define name="label">#{messages['net.ihe.gazelle.proxy.InitiatorsIP']}</ui:define> <h:inputText id="initiatorIP" value="#{messagesBean.initiatorIP}"> - <a4j:support event="onchange" reRender="search,panelOfMessages" + <a4j:support event="onchange" + reRender="search,search2,panelOfMessages" actionListener="#{messagesBean.validateInitiatorIP()}" - action="#{messagesBean.redirectToMessages(messagesBean.messageType,messagesBean.proxyPort,messagesBean.responderIP,messagesBean.responderPort,messagesBean.initiatorIP,messagesBean.initiatorPort,messagesBean.connectionId,messagesBean.dateFrom,messagesBean.dateTo,messagesBean.dicomAffectedSopClassUID,messagesBean.dicomCommandField)}" - ajaxSingle="true" /> + ajaxSingle="true" + action="#{messagesBean.redirectToMessages(messagesBean.messageType,messagesBean.proxyPort,messagesBean.responderIP,messagesBean.responderPort,messagesBean.initiatorIP,messagesBean.initiatorPort,messagesBean.connectionId,messagesBean.dateFrom,messagesBean.dateTo,messagesBean.dicomAffectedSopClassUID,messagesBean.dicomCommandField)}" /> + </h:inputText> - <h:graphicImage value="/img/deleteJR.gif" width="14" height="14"> + <h:graphicImage id="del1" value="/img/deleteJR.gif" width="14" + height="14" style="cursor:pointer"> <a4j:support event="onclick" action="#{messagesBean.redirectToMessages(messagesBean.messageType,messagesBean.proxyPort,messagesBean.responderIP,messagesBean.responderPort,null,messagesBean.initiatorPort,messagesBean.connectionId,messagesBean.dateFrom,messagesBean.dateTo,messagesBean.dicomAffectedSopClassUID,messagesBean.dicomCommandField)}" - reRender="search,panelOfMessages" ajaxSingle="true" /> + reRender="search,search2,panelOfMessages" ajaxSingle="true" /> </h:graphicImage> + <rich:toolTip for="del1"> + <h:outputText value="Clear field and search" /> + </rich:toolTip> </s:decorate> <rich:spacer width="20px" /> <s:decorate id="initiatorPortDeco" template="/layout/edit.xhtml"> @@ -47,31 +53,42 @@ <h:panelGrid columns="2"> <rich:inputNumberSpinner value="#{messagesBean.initiatorPort}" minValue="1" maxValue="65535"> - <a4j:support event="onchange" reRender="search,panelOfMessages" + <a4j:support event="onchange" + reRender="search,search2,panelOfMessages" action="#{messagesBean.redirectToMessages(messagesBean.messageType,messagesBean.proxyPort,messagesBean.responderIP,messagesBean.responderPort,messagesBean.initiatorIP,messagesBean.initiatorPort,messagesBean.connectionId,messagesBean.dateFrom,messagesBean.dateTo,messagesBean.dicomAffectedSopClassUID,messagesBean.dicomCommandField)}" ajaxSingle="true" /> </rich:inputNumberSpinner> - <h:graphicImage value="/img/deleteJR.gif" width="14" height="14"> + <h:graphicImage id="del2" value="/img/deleteJR.gif" width="14" + height="14" style="cursor:pointer"> <a4j:support event="onclick" action="#{messagesBean.redirectToMessages(messagesBean.messageType,messagesBean.proxyPort,messagesBean.responderIP,messagesBean.responderPort,messagesBean.initiatorIP,null,messagesBean.connectionId,messagesBean.dateFrom,messagesBean.dateTo,messagesBean.dicomAffectedSopClassUID,messagesBean.dicomCommandField)}" - reRender="search,panelOfMessages" ajaxSingle="true" /> + reRender="search,search2,panelOfMessages" ajaxSingle="true" /> </h:graphicImage> + <rich:toolTip for="del2"> + <h:outputText value="Clear field and search" /> + </rich:toolTip> </h:panelGrid> </s:decorate> <s:decorate id="responderIPDeco" template="/layout/edit.xhtml"> <ui:define name="label">#{messages['net.ihe.gazelle.proxy.RespondersIP']}</ui:define> <h:inputText id="responderIP" value="#{messagesBean.responderIP}"> - <a4j:support event="onchange" reRender="search,panelOfMessages" + <a4j:support event="onchange" + reRender="search,search2,panelOfMessages" actionListener="#{messagesBean.validateResponderIP()}" - action="#{messagesBean.redirectToMessages(messagesBean.messageType,messagesBean.proxyPort,messagesBean.responderIP,messagesBean.responderPort,messagesBean.initiatorIP,messagesBean.initiatorPort,messagesBean.connectionId,messagesBean.dateFrom,messagesBean.dateTo,messagesBean.dicomAffectedSopClassUID,messagesBean.dicomCommandField)}" - ajaxSingle="true" /> + ajaxSingle="true" + action="#{messagesBean.redirectToMessages(messagesBean.messageType,messagesBean.proxyPort,messagesBean.responderIP,messagesBean.responderPort,messagesBean.initiatorIP,messagesBean.initiatorPort,messagesBean.connectionId,messagesBean.dateFrom,messagesBean.dateTo,messagesBean.dicomAffectedSopClassUID,messagesBean.dicomCommandField)}" /> + </h:inputText> - <h:graphicImage value="/img/deleteJR.gif" width="14" height="14"> + <h:graphicImage id="del3" value="/img/deleteJR.gif" width="14" + height="14" style="cursor:pointer"> <a4j:support event="onclick" action="#{messagesBean.redirectToMessages(messagesBean.messageType,messagesBean.proxyPort,null,messagesBean.responderPort,messagesBean.initiatorIP,messagesBean.initiatorPort,messagesBean.connectionId,messagesBean.dateFrom,messagesBean.dateTo,messagesBean.dicomAffectedSopClassUID,messagesBean.dicomCommandField)}" - reRender="search,panelOfMessages" ajaxSingle="true" /> + reRender="search,search2,panelOfMessages" ajaxSingle="true" /> </h:graphicImage> + <rich:toolTip for="del3"> + <h:outputText value="Clear field and search" /> + </rich:toolTip> </s:decorate> <rich:spacer width="20px" /> <s:decorate id="responderPortDeco" template="/layout/edit.xhtml"> @@ -79,15 +96,20 @@ <h:panelGrid columns="2"> <rich:inputNumberSpinner value="#{messagesBean.responderPort}" minValue="1" maxValue="65535"> - <a4j:support event="onchange" reRender="search,panelOfMessages" + <a4j:support event="onchange" + reRender="search,search2,panelOfMessages" action="#{messagesBean.redirectToMessages(messagesBean.messageType,messagesBean.proxyPort,messagesBean.responderIP,messagesBean.responderPort,messagesBean.initiatorIP,messagesBean.initiatorPort,messagesBean.connectionId,messagesBean.dateFrom,messagesBean.dateTo,messagesBean.dicomAffectedSopClassUID,messagesBean.dicomCommandField)}" ajaxSingle="true" /> </rich:inputNumberSpinner> - <h:graphicImage value="/img/deleteJR.gif" width="14" height="14"> + <h:graphicImage id="del4" value="/img/deleteJR.gif" width="14" + height="14" style="cursor:pointer"> <a4j:support event="onclick" action="#{messagesBean.redirectToMessages(messagesBean.messageType,messagesBean.proxyPort,messagesBean.responderIP,null,messagesBean.initiatorIP,messagesBean.initiatorPort,messagesBean.connectionId,messagesBean.dateFrom,messagesBean.dateTo,messagesBean.dicomAffectedSopClassUID,messagesBean.dicomCommandField)}" - reRender="search,panelOfMessages" ajaxSingle="true" /> + reRender="search,search2,panelOfMessages" ajaxSingle="true" /> </h:graphicImage> + <rich:toolTip for="del4"> + <h:outputText value="Clear field and search" /> + </rich:toolTip> </h:panelGrid> </s:decorate> </h:panelGrid> @@ -97,15 +119,20 @@ <h:panelGrid columns="2"> <rich:inputNumberSpinner value="#{messagesBean.proxyPort}" minValue="1" maxValue="65535"> - <a4j:support event="onchange" reRender="search,panelOfMessages" + <a4j:support event="onchange" + reRender="search,search2,panelOfMessages" action="#{messagesBean.redirectToMessages(messagesBean.messageType,messagesBean.proxyPort,messagesBean.responderIP,messagesBean.responderPort,messagesBean.initiatorIP,messagesBean.initiatorPort,messagesBean.connectionId,messagesBean.dateFrom,messagesBean.dateTo,messagesBean.dicomAffectedSopClassUID,messagesBean.dicomCommandField)}" ajaxSingle="true" /> </rich:inputNumberSpinner> - <h:graphicImage value="/img/deleteJR.gif" width="14" height="14"> + <h:graphicImage id="del5" value="/img/deleteJR.gif" width="14" + height="14" style="cursor:pointer"> <a4j:support event="onclick" action="#{messagesBean.redirectToMessages(messagesBean.messageType,null,messagesBean.responderIP,messagesBean.responderPort,messagesBean.initiatorIP,messagesBean.initiatorPort,messagesBean.connectionId,messagesBean.dateFrom,messagesBean.dateTo,messagesBean.dicomAffectedSopClassUID,messagesBean.dicomCommandField)}" - reRender="search,panelOfMessages" ajaxSingle="true" /> + reRender="search,search2,panelOfMessages" ajaxSingle="true" /> </h:graphicImage> + <rich:toolTip for="del5"> + <h:outputText value="Clear field and search" /> + </rich:toolTip> </h:panelGrid> </s:decorate> </h:panelGrid> @@ -115,15 +142,20 @@ <h:panelGrid columns="2"> <rich:inputNumberSpinner value="#{messagesBean.connectionId}" minValue="0" maxValue="100000000"> - <a4j:support event="onchange" reRender="search,panelOfMessages" + <a4j:support event="onchange" + reRender="search,search2,panelOfMessages" action="#{messagesBean.redirectToMessages(messagesBean.messageType,messagesBean.proxyPort,messagesBean.responderIP,messagesBean.responderPort,messagesBean.initiatorIP,messagesBean.initiatorPort,messagesBean.connectionId,messagesBean.dateFrom,messagesBean.dateTo,messagesBean.dicomAffectedSopClassUID,messagesBean.dicomCommandField)}" ajaxSingle="true" /> </rich:inputNumberSpinner> - <h:graphicImage value="/img/deleteJR.gif" width="14" height="14"> + <h:graphicImage id="del6" value="/img/deleteJR.gif" width="14" + height="14" style="cursor:pointer"> <a4j:support event="onclick" action="#{messagesBean.redirectToMessages(messagesBean.messageType,messagesBean.proxyPort,messagesBean.responderIP,messagesBean.responderPort,messagesBean.initiatorIP,messagesBean.initiatorPort,null,messagesBean.dateFrom,messagesBean.dateTo,messagesBean.dicomAffectedSopClassUID,messagesBean.dicomCommandField)}" - reRender="search,panelOfMessages" ajaxSingle="true" /> + reRender="search,search2,panelOfMessages" ajaxSingle="true" /> </h:graphicImage> + <rich:toolTip for="del6"> + <h:outputText value="Clear field and search" /> + </rich:toolTip> </h:panelGrid> </s:decorate> </h:panelGrid> @@ -134,44 +166,56 @@ <h:selectOneMenu value="#{messagesBean.dicomAffectedSopClassUID}"> <f:selectItems value="#{messagesBean.getDicomAffectedSopClassUIDs()}" /> - <a4j:support event="onchange" reRender="search,panelOfMessages" - ajaxSingle="true" /> + <a4j:support event="onchange" + reRender="search,search2,panelOfMessages" ajaxSingle="true" /> </h:selectOneMenu> - <h:graphicImage value="/img/deleteJR.gif" width="14" height="14"> + <h:graphicImage id="del7" value="/img/deleteJR.gif" width="14" + height="14" style="cursor:pointer"> <a4j:support event="onclick" action="#{messagesBean.redirectToMessages(messagesBean.messageType,messagesBean.proxyPort,messagesBean.responderIP,messagesBean.responderPort,messagesBean.initiatorIP,messagesBean.initiatorPort,messagesBean.connectionId,messagesBean.dateFrom,messagesBean.dateTo,null,messagesBean.dicomCommandField)}" - reRender="search,panelOfMessages" ajaxSingle="true" /> + reRender="search,search2,panelOfMessages" ajaxSingle="true" /> </h:graphicImage> + <rich:toolTip for="del7"> + <h:outputText value="Clear field and search" /> + </rich:toolTip> </s:decorate> - + <s:decorate template="/layout/edit.xhtml"> <ui:define name="label">OR </ui:define> - <h:inputText id="oidValueId" value="#{messagesBean.dicomAffectedSopClassUID}" - size="60"> - <a4j:support event="onchange" reRender="search,panelOfMessages" - actionListener="#{messagesBean.validateOID()}" - ajaxSingle="true" /> + <h:inputText id="oidValueId" + value="#{messagesBean.dicomAffectedSopClassUID}" size="60"> + <a4j:support event="onchange" + actionListener="#{messagesBean.validateOID()}" ajaxSingle="true" + reRender="search,search2,panelOfMessages" /> </h:inputText> - <h:graphicImage value="/img/deleteJR.gif" width="14" height="14"> + <h:graphicImage id="del8" value="/img/deleteJR.gif" width="14" + height="14" style="cursor:pointer"> <a4j:support event="onclick" action="#{messagesBean.redirectToMessages(messagesBean.messageType,messagesBean.proxyPort,messagesBean.responderIP,messagesBean.responderPort,messagesBean.initiatorIP,messagesBean.initiatorPort,messagesBean.connectionId,messagesBean.dateFrom,messagesBean.dateTo,null,messagesBean.dicomCommandField)}" - reRender="search,panelOfMessages" ajaxSingle="true" /> + reRender="search,search2,panelOfMessages" ajaxSingle="true" /> </h:graphicImage> + <rich:toolTip for="del8"> + <h:outputText value="Clear field and search" /> + </rich:toolTip> </s:decorate> - + <s:decorate template="/layout/edit.xhtml"> <ui:define name="label">#{messages['net.ihe.gazelle.proxy.DicomCommandField']}</ui:define> <h:selectOneMenu value="#{messagesBean.dicomCommandField}"> <f:selectItems value="#{messagesBean.getDicomCommandFields()}" /> - <a4j:support event="onchange" reRender="search,panelOfMessages" - ajaxSingle="true" /> + <a4j:support event="onchange" + reRender="search,search2,panelOfMessages" ajaxSingle="true" /> </h:selectOneMenu> - <h:graphicImage value="/img/deleteJR.gif" width="14" height="14"> + <h:graphicImage id="del9" value="/img/deleteJR.gif" width="14" + height="14" style="cursor:pointer"> <a4j:support event="onclick" action="#{messagesBean.redirectToMessages(messagesBean.messageType,messagesBean.proxyPort,messagesBean.responderIP,messagesBean.responderPort,messagesBean.initiatorIP,messagesBean.initiatorPort,messagesBean.connectionId,messagesBean.dateFrom,messagesBean.dateTo,messagesBean.dicomAffectedSopClassUID,null)}" - reRender="search,panelOfMessages" ajaxSingle="true" /> + reRender="search,search2,panelOfMessages" ajaxSingle="true" /> </h:graphicImage> + <rich:toolTip for="del9"> + <h:outputText value="Clear field and search" /> + </rich:toolTip> </s:decorate> </h:panelGrid> @@ -182,15 +226,19 @@ <rich:calendar id="datefrom" value="#{messagesBean.dateFrom}" popup="true" showApplyButton="true" datePattern="d/M/yy HH:mm" cellWidth="24px" cellHeight="22px" style="width:200px"> - <a4j:support event="onchanged" reRender="search,panelOfMessages" + <a4j:support event="onchanged" actionListener="#{messagesBean.validateDate()}" - ajaxSingle="true" /> + ajaxSingle="true" reRender="search,search2,panelOfMessages" /> </rich:calendar> - <h:graphicImage value="/img/deleteJR.gif" width="14" height="14"> + <h:graphicImage id="del10" value="/img/deleteJR.gif" width="14" + height="14" style="cursor:pointer"> <a4j:support event="onclick" action="#{messagesBean.redirectToMessages(messagesBean.messageType,messagesBean.proxyPort,messagesBean.responderIP,messagesBean.responderPort,messagesBean.initiatorIP,messagesBean.initiatorPort,messagesBean.connectionId,null,messagesBean.dateTo,messagesBean.dicomAffectedSopClassUID,messagesBean.dicomCommandField)}" - reRender="search,panelOfMessages" ajaxSingle="true" /> + reRender="search,search2,panelOfMessages" ajaxSingle="true" /> </h:graphicImage> + <rich:toolTip for="del10"> + <h:outputText value="Clear field and search" /> + </rich:toolTip> </s:div> </s:decorate> <rich:spacer width="20px" /> @@ -200,15 +248,19 @@ <rich:calendar id="dateto" value="#{messagesBean.dateTo}" popup="true" showApplyButton="true" datePattern="d/M/yy HH:mm" cellWidth="24px" cellHeight="22px" style="width:200px"> - <a4j:support event="onchanged" reRender="search,panelOfMessages" + <a4j:support event="onchanged" actionListener="#{messagesBean.validateDate()}" - ajaxSingle="true" /> + ajaxSingle="true" reRender="search,search2,panelOfMessages" /> </rich:calendar> - <h:graphicImage value="/img/deleteJR.gif" width="14" height="14"> + <h:graphicImage id="del11" value="/img/deleteJR.gif" width="14" + height="14" style="cursor:pointer"> <a4j:support event="onclick" action="#{messagesBean.redirectToMessages(messagesBean.messageType,messagesBean.proxyPort,messagesBean.responderIP,messagesBean.responderPort,messagesBean.initiatorIP,messagesBean.initiatorPort,messagesBean.connectionId,messagesBean.dateFrom,null,messagesBean.dicomAffectedSopClassUID,messagesBean.dicomCommandField)}" - reRender="search,panelOfMessages" ajaxSingle="true" /> + reRender="search,search2,panelOfMessages" ajaxSingle="true" /> </h:graphicImage> + <rich:toolTip for="del11"> + <h:outputText value="Clear field and search" /> + </rich:toolTip> </s:div> </s:decorate> </h:panelGrid> @@ -218,44 +270,347 @@ <h:selectOneMenu id="selectDate" value="#{messagesBean.currentSelectDate}"> <f:selectItem id="item" itemLabel="--" itemValue="1" /> - <f:selectItem id="item1" itemLabel="#{messages['net.ihe.gazelle.proxy.LastHour']}" + <f:selectItem id="item1" + itemLabel="#{messages['net.ihe.gazelle.proxy.LastHour']}" itemValue="last hour" /> - <f:selectItem id="item2" itemLabel="#{messages['net.ihe.gazelle.proxy.Today']}" itemValue="today" /> - <f:selectItem id="item3" itemLabel="#{messages['net.ihe.gazelle.proxy.Yesterday']}" + <f:selectItem id="item2" + itemLabel="#{messages['net.ihe.gazelle.proxy.Today']}" + itemValue="today" /> + <f:selectItem id="item3" + itemLabel="#{messages['net.ihe.gazelle.proxy.Yesterday']}" itemValue="yesterday" /> - <f:selectItem id="item4" itemLabel="#{messages['net.ihe.gazelle.proxy.ThisWeek']}" + <f:selectItem id="item4" + itemLabel="#{messages['net.ihe.gazelle.proxy.ThisWeek']}" itemValue="this week" /> - <f:selectItem id="item5" itemLabel="#{messages['net.ihe.gazelle.proxy.LastWeek']}" + <f:selectItem id="item5" + itemLabel="#{messages['net.ihe.gazelle.proxy.LastWeek']}" itemValue="last week" /> - <f:selectItem id="item6" itemLabel="#{messages['net.ihe.gazelle.proxy.ThisMonth']}" + <f:selectItem id="item6" + itemLabel="#{messages['net.ihe.gazelle.proxy.ThisMonth']}" itemValue="this month" /> - <f:selectItem id="item7" itemLabel="#{messages['net.ihe.gazelle.proxy.LastMonth']}" + <f:selectItem id="item7" + itemLabel="#{messages['net.ihe.gazelle.proxy.LastMonth']}" itemValue="last month" /> - <a4j:support event="onchange" reRender="search,panelOfMessages" - ajaxSingle="true" + <a4j:support event="onchange" ajaxSingle="true" actionListener="#{messagesBean.selectDate(messagesBean.currentSelectDate)}" + reRender="search,search2,panelOfMessages" action="#{messagesBean.redirectToMessages(messagesBean.messageType,messagesBean.proxyPort,messagesBean.responderIP,messagesBean.responderPort,messagesBean.initiatorIP,messagesBean.initiatorPort,messagesBean.connectionId,messagesBean.dateFrom,messagesBean.dateTo,messagesBean.dicomAffectedSopClassUID,messagesBean.dicomCommandField)}" /> </h:selectOneMenu> - <h:graphicImage value="/img/deleteJR.gif" width="14" height="14"> + <h:graphicImage id="del12" value="/img/deleteJR.gif" width="14" + height="14" style="cursor:pointer"> <a4j:support event="onclick" action="#{messagesBean.redirectToMessages(messagesBean.messageType,messagesBean.proxyPort,messagesBean.responderIP,messagesBean.responderPort,messagesBean.initiatorIP,messagesBean.initiatorPort,messagesBean.connectionId,null,null,messagesBean.dicomAffectedSopClassUID,messagesBean.dicomCommandField)}" - reRender="search,panelOfMessages" ajaxSingle="true" /> + reRender="search,search2,panelOfMessages" ajaxSingle="true" /> </h:graphicImage> + <rich:toolTip for="del12"> + <h:outputText value="Clear field and search" /> + </rich:toolTip> </s:decorate> </h:panelGrid> <br /> <a4j:commandButton actionListener="#{messagesBean.clearFilter()}" - reRender="search,panelOfMessages" + reRender="search,search2,panelOfMessages" value="#{messages['net.ihe.gazelle.proxy.Reset']}" styleClass="commandButton" /> - <a4j:commandButton reRender="search,panelOfMessages" value="#{messages['net.ihe.gazelle.proxy.Refresh']}" + <a4j:commandButton reRender="panelOfMessages" + value="#{messages['net.ihe.gazelle.proxy.Refresh']}" + styleClass="commandButton" + actionListener="#{messagesBean.rebuildDataModel()}" /> + </rich:simpleTogglePanel> + + <rich:spacer height="5" /> + </a4j:form> + + <a4j:form> + <rich:simpleTogglePanel switchType="client" id="search2" + label="#{messages['net.ihe.gazelle.proxy.SearchCriteria']}"> + <h:panelGrid columns="2"> + <s:decorate id="BmessageTypeDeco" template="/layout/edit.xhtml"> + <ui:define name="label">#{messages['net.ihe.gazelle.proxy.MessageType']}</ui:define> + <h:selectOneMenu id="BmessageTypeBox" + value="#{messagesBean.messageType}"> + <s:selectItems value="#{messagesBean.getMessageTypes()}" + var="cmdField" label="#{cmdField.toString()}" /> + <a4j:support event="onchange" reRender="search2" /> + </h:selectOneMenu> + </s:decorate> + </h:panelGrid> + <h:panelGrid columns="3"> + <s:decorate id="BinitiatorIPDeco" template="/layout/edit.xhtml"> + <ui:define name="label">#{messages['net.ihe.gazelle.proxy.InitiatorsIP']}</ui:define> + <h:inputText id="BinitiatorIP" value="#{messagesBean.initiatorIP}"> + <a4j:support event="onchange" reRender="search2" + actionListener="#{messagesBean.validateInitiatorIP()}" + ajaxSingle="true" /> + + </h:inputText> + <h:graphicImage id="del13" value="/img/deleteJR.gif" width="14" + height="14" style="cursor:pointer"> + <a4j:support event="onclick" + action="#{messagesBean.redirectToMessages(messagesBean.messageType,messagesBean.proxyPort,messagesBean.responderIP,messagesBean.responderPort,null,messagesBean.initiatorPort,messagesBean.connectionId,messagesBean.dateFrom,messagesBean.dateTo,messagesBean.dicomAffectedSopClassUID,messagesBean.dicomCommandField)}" + reRender="search2" ajaxSingle="true" /> + </h:graphicImage> + <rich:toolTip for="del13"> + <h:outputText value="Clear field and search" /> + </rich:toolTip> + </s:decorate> + <rich:spacer width="20px" /> + <s:decorate id="BinitiatorPortDeco" template="/layout/edit.xhtml"> + <ui:define name="label">#{messages['net.ihe.gazelle.proxy.InitiatorsPort']}</ui:define> + <h:panelGrid columns="2"> + <rich:inputNumberSpinner value="#{messagesBean.initiatorPort}" + minValue="1" maxValue="65535"> + </rich:inputNumberSpinner> + <h:graphicImage id="del14" value="/img/deleteJR.gif" width="14" + height="14" style="cursor:pointer"> + <a4j:support event="onclick" + action="#{messagesBean.redirectToMessages(messagesBean.messageType,messagesBean.proxyPort,messagesBean.responderIP,messagesBean.responderPort,messagesBean.initiatorIP,null,messagesBean.connectionId,messagesBean.dateFrom,messagesBean.dateTo,messagesBean.dicomAffectedSopClassUID,messagesBean.dicomCommandField)}" + reRender="search2" ajaxSingle="true" /> + </h:graphicImage> + <rich:toolTip for="del14"> + <h:outputText value="Clear field and search" /> + </rich:toolTip> + </h:panelGrid> + </s:decorate> + + <s:decorate id="BresponderIPDeco" template="/layout/edit.xhtml"> + <ui:define name="label">#{messages['net.ihe.gazelle.proxy.RespondersIP']}</ui:define> + <h:inputText id="BresponderIP" value="#{messagesBean.responderIP}"> + <a4j:support event="onchange" reRender="search2" + actionListener="#{messagesBean.validateResponderIP()}" + ajaxSingle="true" /> + </h:inputText> + <h:graphicImage id="del15" value="/img/deleteJR.gif" width="14" + height="14" style="cursor:pointer"> + <a4j:support event="onclick" + action="#{messagesBean.redirectToMessages(messagesBean.messageType,messagesBean.proxyPort,null,messagesBean.responderPort,messagesBean.initiatorIP,messagesBean.initiatorPort,messagesBean.connectionId,messagesBean.dateFrom,messagesBean.dateTo,messagesBean.dicomAffectedSopClassUID,messagesBean.dicomCommandField)}" + reRender="search2" ajaxSingle="true" /> + </h:graphicImage> + <rich:toolTip for="del15"> + <h:outputText value="Clear field and search" /> + </rich:toolTip> + </s:decorate> + <rich:spacer width="20px" /> + <s:decorate id="BresponderPortDeco" template="/layout/edit.xhtml"> + <ui:define name="label">#{messages['net.ihe.gazelle.proxy.RespondersPort']}</ui:define> + <h:panelGrid columns="2"> + <rich:inputNumberSpinner value="#{messagesBean.responderPort}" + minValue="1" maxValue="65535"> + </rich:inputNumberSpinner> + <h:graphicImage id="del16" value="/img/deleteJR.gif" width="14" + height="14" style="cursor:pointer"> + <a4j:support event="onclick" + action="#{messagesBean.redirectToMessages(messagesBean.messageType,messagesBean.proxyPort,messagesBean.responderIP,null,messagesBean.initiatorIP,messagesBean.initiatorPort,messagesBean.connectionId,messagesBean.dateFrom,messagesBean.dateTo,messagesBean.dicomAffectedSopClassUID,messagesBean.dicomCommandField)}" + reRender="search2" ajaxSingle="true" /> + </h:graphicImage> + <rich:toolTip for="del16"> + <h:outputText value="Clear field and search" /> + </rich:toolTip> + </h:panelGrid> + </s:decorate> + </h:panelGrid> + <h:panelGrid columns="2"> + <s:decorate id="BproxyPortDeco" template="/layout/edit.xhtml"> + <ui:define name="label">#{messages['net.ihe.gazelle.proxy.ProxysPort']}</ui:define> + <h:panelGrid columns="2"> + <rich:inputNumberSpinner value="#{messagesBean.proxyPort}" + minValue="1" maxValue="65535"> + </rich:inputNumberSpinner> + <h:graphicImage id="del17" value="/img/deleteJR.gif" width="14" + height="14" style="cursor:pointer"> + <a4j:support event="onclick" + action="#{messagesBean.redirectToMessages(messagesBean.messageType,null,messagesBean.responderIP,messagesBean.responderPort,messagesBean.initiatorIP,messagesBean.initiatorPort,messagesBean.connectionId,messagesBean.dateFrom,messagesBean.dateTo,messagesBean.dicomAffectedSopClassUID,messagesBean.dicomCommandField)}" + reRender="search2" ajaxSingle="true" /> + </h:graphicImage> + <rich:toolTip for="del17"> + <h:outputText value="Clear field and search" /> + </rich:toolTip> + </h:panelGrid> + </s:decorate> + </h:panelGrid> + <h:panelGrid columns="1"> + <s:decorate template="/layout/edit.xhtml"> + <ui:define name="label">#{messages['net.ihe.gazelle.proxy.ConnectionID']}</ui:define> + <h:panelGrid columns="2"> + <rich:inputNumberSpinner value="#{messagesBean.connectionId}" + minValue="0" maxValue="100000000"> + </rich:inputNumberSpinner> + <h:graphicImage id="del18" value="/img/deleteJR.gif" width="14" + height="14" style="cursor:pointer"> + <a4j:support event="onclick" + action="#{messagesBean.redirectToMessages(messagesBean.messageType,messagesBean.proxyPort,messagesBean.responderIP,messagesBean.responderPort,messagesBean.initiatorIP,messagesBean.initiatorPort,null,messagesBean.dateFrom,messagesBean.dateTo,messagesBean.dicomAffectedSopClassUID,messagesBean.dicomCommandField)}" + reRender="search2" ajaxSingle="true" /> + </h:graphicImage> + <rich:toolTip for="del18"> + <h:outputText value="Clear field and search" /> + </rich:toolTip> + </h:panelGrid> + </s:decorate> + </h:panelGrid> + + <h:panelGrid columns="2" rendered="#{messagesBean.isDICOM()}"> + <s:decorate template="/layout/edit.xhtml"> + <ui:define name="label">#{messages['net.ihe.gazelle.proxy.DICOMAffectedSopClassUID']}</ui:define> + <h:selectOneMenu value="#{messagesBean.dicomAffectedSopClassUID}"> + <f:selectItems + value="#{messagesBean.getDicomAffectedSopClassUIDs()}" /> + <a4j:support event="onchange" reRender="search2" + ajaxSingle="true" /> + </h:selectOneMenu> + + <h:graphicImage id="del19" value="/img/deleteJR.gif" width="14" + height="14" style="cursor:pointer"> + <a4j:support event="onclick" + action="#{messagesBean.redirectToMessages(messagesBean.messageType,messagesBean.proxyPort,messagesBean.responderIP,messagesBean.responderPort,messagesBean.initiatorIP,messagesBean.initiatorPort,messagesBean.connectionId,messagesBean.dateFrom,messagesBean.dateTo,null,messagesBean.dicomCommandField)}" + reRender="search2" ajaxSingle="true" /> + </h:graphicImage> + <rich:toolTip for="del19"> + <h:outputText value="Clear field and search" /> + </rich:toolTip> + </s:decorate> + + <s:decorate template="/layout/edit.xhtml"> + <ui:define name="label">OR </ui:define> + <h:inputText id="BoidValueId" + value="#{messagesBean.dicomAffectedSopClassUID}" size="60"> + <a4j:support event="onchange" + actionListener="#{messagesBean.validateOID()}" ajaxSingle="true" + reRender="search2" /> + </h:inputText> + <h:graphicImage id="del20" value="/img/deleteJR.gif" width="14" + height="14" style="cursor:pointer"> + <a4j:support event="onclick" + action="#{messagesBean.redirectToMessages(messagesBean.messageType,messagesBean.proxyPort,messagesBean.responderIP,messagesBean.responderPort,messagesBean.initiatorIP,messagesBean.initiatorPort,messagesBean.connectionId,messagesBean.dateFrom,messagesBean.dateTo,null,messagesBean.dicomCommandField)}" + reRender="search2" ajaxSingle="true" /> + </h:graphicImage> + <rich:toolTip for="del20"> + <h:outputText value="Clear field and search" /> + </rich:toolTip> + </s:decorate> + + <s:decorate template="/layout/edit.xhtml"> + <ui:define name="label">#{messages['net.ihe.gazelle.proxy.DicomCommandField']}</ui:define> + <h:selectOneMenu value="#{messagesBean.dicomCommandField}"> + <f:selectItems value="#{messagesBean.getDicomCommandFields()}" /> + </h:selectOneMenu> + <h:graphicImage id="del21" value="/img/deleteJR.gif" width="14" + height="14" style="cursor:pointer"> + <a4j:support event="onclick" + action="#{messagesBean.redirectToMessages(messagesBean.messageType,messagesBean.proxyPort,messagesBean.responderIP,messagesBean.responderPort,messagesBean.initiatorIP,messagesBean.initiatorPort,messagesBean.connectionId,messagesBean.dateFrom,messagesBean.dateTo,messagesBean.dicomAffectedSopClassUID,null)}" + reRender="search2" ajaxSingle="true" /> + </h:graphicImage> + <rich:toolTip for="del21"> + <h:outputText value="Clear field and search" /> + </rich:toolTip> + </s:decorate> + </h:panelGrid> + + <h:panelGrid columns="3"> + <s:decorate id="BdateFromDeco" template="/layout/edit.xhtml"> + <ui:define name="label">#{messages['net.ihe.gazelle.proxy.DateFrom']}</ui:define> + <s:div width="300px"> + <rich:calendar id="Bdatefrom" value="#{messagesBean.dateFrom}" + popup="true" showApplyButton="true" datePattern="d/M/yy HH:mm" + cellWidth="24px" cellHeight="22px" style="width:200px"> + <a4j:support event="onchanged" + actionListener="#{messagesBean.validateDate()}" + ajaxSingle="true" reRender="search2" /> + </rich:calendar> + <h:graphicImage id="del22" value="/img/deleteJR.gif" width="14" + height="14" style="cursor:pointer"> + <a4j:support event="onclick" + action="#{messagesBean.redirectToMessages(messagesBean.messageType,messagesBean.proxyPort,messagesBean.responderIP,messagesBean.responderPort,messagesBean.initiatorIP,messagesBean.initiatorPort,messagesBean.connectionId,null,messagesBean.dateTo,messagesBean.dicomAffectedSopClassUID,messagesBean.dicomCommandField)}" + reRender="search2" ajaxSingle="true" /> + </h:graphicImage> + <rich:toolTip for="del22"> + <h:outputText value="Clear field and search" /> + </rich:toolTip> + </s:div> + </s:decorate> + <rich:spacer width="20px" /> + <s:decorate id="BdateToDeco" template="/layout/edit.xhtml"> + <ui:define name="label">#{messages['net.ihe.gazelle.proxy.DateTo']}</ui:define> + <s:div width="300px"> + <rich:calendar id="Bdateto" value="#{messagesBean.dateTo}" + popup="true" showApplyButton="true" datePattern="d/M/yy HH:mm" + cellWidth="24px" cellHeight="22px" style="width:200px"> + <a4j:support event="onchanged" + actionListener="#{messagesBean.validateDate()}" + ajaxSingle="true" reRender="search2" /> + </rich:calendar> + <h:graphicImage id="del23" value="/img/deleteJR.gif" width="14" + height="14" style="cursor:pointer"> + <a4j:support event="onclick" + action="#{messagesBean.redirectToMessages(messagesBean.messageType,messagesBean.proxyPort,messagesBean.responderIP,messagesBean.responderPort,messagesBean.initiatorIP,messagesBean.initiatorPort,messagesBean.connectionId,messagesBean.dateFrom,null,messagesBean.dicomAffectedSopClassUID,messagesBean.dicomCommandField)}" + reRender="search2" ajaxSingle="true" /> + </h:graphicImage> + <rich:toolTip for="del23"> + <h:outputText value="Clear field and search" /> + </rich:toolTip> + </s:div> + </s:decorate> + </h:panelGrid> + <h:panelGrid columns="3"> + <s:decorate template="/layout/edit.xhtml"> + <ui:define name="label">#{messages['net.ihe.gazelle.proxy.RapidDateSelection']}</ui:define> + <h:selectOneMenu id="BselectDate" + value="#{messagesBean.currentSelectDate}"> + <f:selectItem id="Bitem" itemLabel="--" itemValue="1" /> + <f:selectItem id="Bitem1" + itemLabel="#{messages['net.ihe.gazelle.proxy.LastHour']}" + itemValue="last hour" /> + <f:selectItem id="Bitem2" + itemLabel="#{messages['net.ihe.gazelle.proxy.Today']}" + itemValue="today" /> + <f:selectItem id="Bitem3" + itemLabel="#{messages['net.ihe.gazelle.proxy.Yesterday']}" + itemValue="yesterday" /> + <f:selectItem id="Bitem4" + itemLabel="#{messages['net.ihe.gazelle.proxy.ThisWeek']}" + itemValue="this week" /> + <f:selectItem id="Bitem5" + itemLabel="#{messages['net.ihe.gazelle.proxy.LastWeek']}" + itemValue="last week" /> + <f:selectItem id="Bitem6" + itemLabel="#{messages['net.ihe.gazelle.proxy.ThisMonth']}" + itemValue="this month" /> + <f:selectItem id="Bitem7" + itemLabel="#{messages['net.ihe.gazelle.proxy.LastMonth']}" + itemValue="last month" /> + <a4j:support event="onchange" ajaxSingle="true" + actionListener="#{messagesBean.selectDate(messagesBean.currentSelectDate)}" + reRender="search2" /> + </h:selectOneMenu> + <h:graphicImage id="del24" value="/img/deleteJR.gif" width="14" + height="14" style="cursor:pointer"> + <a4j:support event="onclick" + action="#{messagesBean.redirectToMessages(messagesBean.messageType,messagesBean.proxyPort,messagesBean.responderIP,messagesBean.responderPort,messagesBean.initiatorIP,messagesBean.initiatorPort,messagesBean.connectionId,null,null,messagesBean.dicomAffectedSopClassUID,messagesBean.dicomCommandField)}" + reRender="search2" ajaxSingle="true" /> + </h:graphicImage> + <rich:toolTip for="del24"> + <h:outputText value="Clear field and search" /> + </rich:toolTip> + </s:decorate> + </h:panelGrid> + <br /> + + <a4j:commandButton actionListener="#{messagesBean.clearFilter()}" + reRender="search2,panelOfMessages" + value="#{messages['net.ihe.gazelle.proxy.Reset']}" styleClass="commandButton" /> + <a4j:commandButton value="Search" styleClass="commandButton" + reRender="search2,panelOfMessages" + action="#{messagesBean.redirectToMessages(messagesBean.messageType,messagesBean.proxyPort,messagesBean.responderIP,messagesBean.responderPort,messagesBean.initiatorIP,messagesBean.initiatorPort,messagesBean.connectionId,messagesBean.dateFrom,messagesBean.dateTo,messagesBean.dicomAffectedSopClassUID,messagesBean.dicomCommandField)}" /> </rich:simpleTogglePanel> <rich:spacer height="5" /> - <s:div id="panelOfMessages"> + </a4j:form> + + + <a4j:form id="panelOfMessages"> + <s:div id="panelOfMessagesDiv"> <ui:include src="messageList.xhtml"> <ui:param name="messagesList" value="#{messagesBean.messageDataModel}" /> diff --git a/gazelle-proxy-jar/src/main/java/net/ihe/gazelle/proxy/gui/HibernateMessageDataModel.java b/gazelle-proxy-jar/src/main/java/net/ihe/gazelle/proxy/gui/HibernateMessageDataModel.java index bd084891800d12d1ab185c146c25ad8b34a99b66..6c16d264753a1912d34de162bde361e38b7a26ae 100644 --- a/gazelle-proxy-jar/src/main/java/net/ihe/gazelle/proxy/gui/HibernateMessageDataModel.java +++ b/gazelle-proxy-jar/src/main/java/net/ihe/gazelle/proxy/gui/HibernateMessageDataModel.java @@ -5,14 +5,34 @@ import javax.faces.context.FacesContext; import net.ihe.gazelle.common.filter.HibernateDataModel; import net.ihe.gazelle.hql.HQLQueryBuilder; import net.ihe.gazelle.proxy.dao.MessageFilter; +import net.ihe.gazelle.proxy.dao.MessageFilterStandard; import net.ihe.gazelle.proxy.model.message.AbstractMessage; +import net.ihe.gazelle.proxy.netty.ChannelType; public class HibernateMessageDataModel<T extends AbstractMessage> extends HibernateDataModel<T> { + /** + * + */ + private static final long serialVersionUID = 1308547516757053507L; private MessageFilter<T> messageFilter; public HibernateMessageDataModel(MessageFilter<T> messageFilter) { super(AbstractMessage.class); + if (messageFilter.getClass().isAssignableFrom(MessageFilterStandard.class)) { + MessageFilterStandard<?> messageFilterStandard = (MessageFilterStandard<?>) messageFilter; + if (messageFilterStandard.getMessageType().equals(ChannelType.DICOM)) { + if (messageFilterStandard.getDicomAffectedSopClassUID() == "") { + messageFilterStandard.setDicomAffectedSopClassUID(null); + } + if (messageFilterStandard.getInitiatorIP() == "") { + messageFilterStandard.setInitiatorIP(null); + } + if (messageFilterStandard.getResponderIP() == "") { + messageFilterStandard.setResponderIP(null); + } + } + } this.messageFilter = messageFilter; } diff --git a/gazelle-proxy-jar/src/main/java/net/ihe/gazelle/proxy/gui/MessagesBean.java b/gazelle-proxy-jar/src/main/java/net/ihe/gazelle/proxy/gui/MessagesBean.java index 0e9ed2a3e512178dd28db31e7ac0b3c3f8ac17c5..e56fc3f6328be3c483293e9d4df4460ff95f283c 100644 --- a/gazelle-proxy-jar/src/main/java/net/ihe/gazelle/proxy/gui/MessagesBean.java +++ b/gazelle-proxy-jar/src/main/java/net/ihe/gazelle/proxy/gui/MessagesBean.java @@ -350,7 +350,7 @@ public class MessagesBean implements Serializable { return getSelectItems(map); } - private void rebuildDataModel() { + public void rebuildDataModel() { messageDataModel = new HibernateMessageDataModel<AbstractMessage>(messageFilterStandard); } @@ -430,6 +430,26 @@ public class MessagesBean implements Serializable { rebuildDataModel(); } + public void setMessageTypeWithString(String message) { + if (message != null) { + if (message.equals("DICOM")) { + messageFilterStandard.setMessageType(ChannelType.DICOM); + } else if (message.equals("HL7")) { + messageFilterStandard.setMessageType(ChannelType.HL7); + } else if (message.equals("SYSLOG")) { + messageFilterStandard.setMessageType(ChannelType.SYSLOG); + } else if (message.equals("HTTP")) { + messageFilterStandard.setMessageType(ChannelType.HTTP); + } else if (message.equals("RAW")) { + messageFilterStandard.setMessageType(ChannelType.RAW); + } + } else { + messageFilterStandard.setMessageType(ChannelType.HTTP); + } + + rebuildDataModel(); + } + public void setProxyPort(Integer proxyPort) { messageFilterStandard.setProxyPort(proxyPort); } diff --git a/gazelle-proxy-jar/src/main/java/net/ihe/gazelle/proxy/model/message/DicomMessage.java b/gazelle-proxy-jar/src/main/java/net/ihe/gazelle/proxy/model/message/DicomMessage.java index 6ea95f88f2baafe95c3a0f28d019c7054a2cc342..8cce5194ede42e1965ee0797115a866fbd945d5f 100644 --- a/gazelle-proxy-jar/src/main/java/net/ihe/gazelle/proxy/model/message/DicomMessage.java +++ b/gazelle-proxy-jar/src/main/java/net/ihe/gazelle/proxy/model/message/DicomMessage.java @@ -85,6 +85,10 @@ public class DicomMessage extends AbstractMessage implements java.io.Serializabl return infoAffectedSOPClassUID; } + public void setInfoAffectedSOPClassUID(String infoAffectedSOPClassUID) { + this.infoAffectedSOPClassUID = infoAffectedSOPClassUID; + } + public String getInfoCommandField() { return infoCommandField; }