/* * Copyright 2013 JBoss Inc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.overlord.rtgov.ui.client.local.pages.situations; import java.util.Map.Entry; import javax.inject.Inject; import org.overlord.rtgov.ui.client.local.ClientMessages; import org.overlord.rtgov.ui.client.model.TraceNodeBean; import com.google.gwt.event.logical.shared.ValueChangeEvent; import com.google.gwt.event.logical.shared.ValueChangeHandler; import com.google.gwt.event.shared.HandlerRegistration; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.HasValue; import com.google.gwt.user.client.ui.Label; /** * Details widget when the user clicks on a node in the call trace widget. * @author eric.wittmann@redhat.com */ public class CallTraceDetails extends FlowPanel implements HasValue<TraceNodeBean> { @Inject ClientMessages i18n; /** * Constructor. */ public CallTraceDetails() { setStyleName("span6"); //$NON-NLS-1$ addStyleName("details-meta-data-section"); //$NON-NLS-1$ addStyleName("call-trace-detail"); //$NON-NLS-1$ } /** * @see com.google.gwt.event.logical.shared.HasValueChangeHandlers#addValueChangeHandler(com.google.gwt.event.logical.shared.ValueChangeHandler) */ @Override public HandlerRegistration addValueChangeHandler(ValueChangeHandler<TraceNodeBean> handler) { return addHandler(handler, ValueChangeEvent.getType()); } /** * @see com.google.gwt.user.client.ui.HasValue#getValue() */ @Override public TraceNodeBean getValue() { return null; } /** * @see com.google.gwt.user.client.ui.HasValue#setValue(java.lang.Object) */ @Override public void setValue(TraceNodeBean value) { setValue(value, false); } /** * @see com.google.gwt.user.client.ui.HasValue#setValue(java.lang.Object, boolean) */ @Override public void setValue(TraceNodeBean value, boolean fireEvents) { clear(); boolean isCall = "Call".equals(value.getType()); //$NON-NLS-1$ Label label = null; if (isCall) { label = new Label(i18n.format("call-trace-details.selected-node")); //$NON-NLS-1$ label.setStyleName("details-meta-data-section-header"); //$NON-NLS-1$ add(label); addClearFix(); label = new Label(value.getOperation() + ":{" + value.getComponent() + "}"); //$NON-NLS-1$ //$NON-NLS-2$ label.setStyleName("details-meta-data-section-value"); //$NON-NLS-1$ add(label); addClearFix(); addDivider(); } label = new Label(i18n.format("call-trace-details.summary")); //$NON-NLS-1$ label.setStyleName("details-meta-data-section-header"); //$NON-NLS-1$ add(label); addClearFix(); addProperty(i18n.format("call-trace-details.type"), value.getType()); //$NON-NLS-1$ addProperty(i18n.format("call-trace-details.component"), value.getComponent()); //$NON-NLS-1$ addProperty(i18n.format("call-trace-details.interface"), value.getIface()); //$NON-NLS-1$ addProperty(i18n.format("call-trace-details.operation"), value.getOperation()); //$NON-NLS-1$ addProperty(i18n.format("call-trace-details.request"), value.getRequest()); //$NON-NLS-1$ addProperty(i18n.format("call-trace-details.response"), value.getResponse()); //$NON-NLS-1$ addProperty(i18n.format("call-trace-details.fault"), value.getFault()); //$NON-NLS-1$ if (value.getRequestLatency() != -1) addProperty(i18n.format("call-trace-details.request-latency"), String.valueOf(value.getRequestLatency()) + "ms"); //$NON-NLS-1$ //$NON-NLS-2$ if (value.getResponseLatency() != -1) addProperty(i18n.format("call-trace-details.response-latency"), String.valueOf(value.getResponseLatency()) + "ms"); //$NON-NLS-1$ //$NON-NLS-2$ if (value.getDuration() != -1) addProperty(i18n.format("call-trace-details.duration"), String.valueOf(value.getDuration()) + "ms"); //$NON-NLS-1$ //$NON-NLS-2$ if (value.getPercentage() != -1) addProperty(i18n.format("call-trace-details.percentage"), String.valueOf(value.getPercentage()) + "ms"); //$NON-NLS-1$ //$NON-NLS-2$ if (!value.getProperties().isEmpty()) { addDivider(); label = new Label(i18n.format("call-trace-details.properties")); //$NON-NLS-1$ label.setStyleName("details-meta-data-section-header"); //$NON-NLS-1$ add(label); addClearFix(); for (Entry<String, String> entry : value.getProperties().entrySet()) { addProperty(entry.getKey(), entry.getValue()); } } } /** * @param label * @param value */ protected void addProperty(String label, String value) { if (value == null) return; Label widget; widget = new Label(label); widget.setStyleName("details-meta-data-section-label"); //$NON-NLS-1$ add(widget); widget = new Label(value); widget.setStyleName("details-meta-data-section-value"); //$NON-NLS-1$ add(widget); addClearFix(); } /** * Adds a clearfix div. */ private void addClearFix() { Label label = new Label(" "); //$NON-NLS-1$ label.setStyleName("clearfix"); //$NON-NLS-1$ add(label); } /** * Adds a divider div. */ private void addDivider() { Label label = new Label(" "); //$NON-NLS-1$ label.setStyleName("divider-20"); //$NON-NLS-1$ add(label); } }