Example usage for com.google.gwt.coreext.client DataBag iterate

List of usage examples for com.google.gwt.coreext.client DataBag iterate

Introduction

In this page you can find the example usage for com.google.gwt.coreext.client DataBag iterate.

Prototype

public final native void iterate(IterationCallback callback) ;

Source Link

Usage

From source file:com.google.speedtracer.client.visualizations.view.EventWaterfallRowDetails.java

License:Apache License

/**
 * Goes to concrete implementation to construct details map for an event.
 * //from  w  w w  .  ja  va 2 s .  co  m
 * @param e the {@link UiEvent}
 * @return the details Map for the UiEvent
 */
private IterableFastStringMap<CellRenderer> getDetailsMapForEvent(UiEvent e) {
    final IterableFastStringMap<CellRenderer> details = new IterableFastStringMap<CellRenderer>();

    details.put("Description", new StringCellRenderer(e.getHelpString()));
    details.put("@", new StringCellRenderer(TimeStampFormatter.formatMilliseconds(e.getTime())));
    if (e.getDuration() > 0) {
        details.put("Duration",
                new StringCellRenderer(TimeStampFormatter.formatMilliseconds(e.getDuration(), 3)));
    }

    String currentAppUrl = eventWaterfall.getVisualization().getModel().getDataDispatcher().getTabDescription()
            .getUrl();

    // This is the stackTrace output by newer versions of WebKit.
    JSOArray<StackFrame> stackTrace = e.getStackTrace();
    if (stackTrace != null) {
        details.put("Stack Trace", new StackTraceRenderer(stackTrace, symbolClickListener, this, currentAppUrl,
                this, true, resources));
    }
    // This is the caller location output by older versions of WebKit.
    // TODO(jaimeyap): remove this once stack trace API reaches Chromium beta.
    if (e.hasCallLocation()) {
        stackTrace = JSOArray.create();
        stackTrace.push(StackFrame.create(e.getCallerScriptName(), e.getCallerFunctionName(),
                e.getCallerScriptLine(), 0));
        details.put("Caused by", new StackTraceRenderer(stackTrace, symbolClickListener, this, currentAppUrl,
                this, true, resources));
    }

    switch (e.getType()) {
    case TimerFiredEvent.TYPE:
        TimerInstalled timerData = eventWaterfall.getSourceDispatcher()
                .getTimerMetaData(e.<TimerInstalled>cast().getTimerId());
        populateDetailsForTimerInstall(timerData, details);
        break;
    case TimerInstalled.TYPE:
        populateDetailsForTimerInstall(e.<TimerInstalled>cast(), details);
        break;
    case TimerCleared.TYPE:
        details.put("Cleared Timer Id", new StringCellRenderer(e.<TimerCleared>cast().getTimerId() + ""));
        break;
    case PaintEvent.TYPE:
        PaintEvent paintEvent = e.cast();
        details.put("Origin", new StringCellRenderer(paintEvent.getX() + ", " + paintEvent.getY()));
        details.put("Size", new StringCellRenderer(paintEvent.getWidth() + " x " + paintEvent.getHeight()));
        break;
    case ParseHtmlEvent.TYPE:
        ParseHtmlEvent parseHtmlEvent = e.cast();
        details.put("Line Number", new StringCellRenderer(parseHtmlEvent.getStartLine() + ""));
        details.put("Length", new StringCellRenderer(parseHtmlEvent.getLength() + " characters"));
        break;
    case EvalScript.TYPE:
        EvalScript scriptTagEvent = e.cast();
        details.put("Url", new StringCellRenderer(scriptTagEvent.getURL()));
        details.put("Line Number", new StringCellRenderer(scriptTagEvent.getLineNumber() + ""));
        break;
    case XhrReadyStateChangeEvent.TYPE:
        XhrReadyStateChangeEvent xhrEvent = e.cast();
        details.put("Ready State", new StringCellRenderer(xhrEvent.getReadyState() + ""));
        details.put("Url", new StringCellRenderer(xhrEvent.getUrl()));
        break;
    case XhrLoadEvent.TYPE:
        details.put("Url", new StringCellRenderer(e.<XhrLoadEvent>cast().getUrl()));
        break;
    case LogEvent.TYPE:
        LogEvent logEvent = e.cast();
        details.put("Message", new StringCellRenderer(logEvent.getMessage()));
        break;
    case JavaScriptExecutionEvent.TYPE:
        JavaScriptExecutionEvent jsExecEvent = e.cast();
        JSOArray<StackFrame> function = JSOArray.create();
        function.push(
                StackFrame.create(jsExecEvent.getScriptName(), "[unknown]", jsExecEvent.getScriptLine(), 0));
        details.put("Function Call", new StackTraceRenderer(function, symbolClickListener, this, currentAppUrl,
                this, true, resources));
        break;
    case ResourceDataReceivedEvent.TYPE:
        ResourceDataReceivedEvent dataRecEvent = e.cast();
        DataDispatcher dataDispatcher = eventWaterfall.getVisualization().getModel().getDataDispatcher();
        NetworkEventDispatcher networkDispatcher = dataDispatcher.getNetworkEventDispatcher();
        NetworkResource resource = networkDispatcher.getResource(dataRecEvent.getRequestId());
        if (resource != null) {
            String resourceUrlStr = resource.getLastPathComponent();
            resourceUrlStr = "".equals(resourceUrlStr) ? resource.getUrl() : resourceUrlStr;
            details.put("Processing Resource", new StringCellRenderer(resourceUrlStr));
        }
        break;
    default:
        break;
    }

    if (e.getOverhead() > 0) {
        details.put("Overhead",
                new StringCellRenderer(TimeStampFormatter.formatMilliseconds(e.getOverhead(), 2)));
    }

    if (CustomEvent.isCustomEvent(e.getType())) {
        // Render key-value pairs for the custom event.
        // Simply iterate over the custom data on the CustomEvent.
        CustomEvent customEvent = e.cast();
        DataBag customData = customEvent.getCustomData();
        customData.iterate(new IterationCallback() {
            public void onIteration(String key, String value) {
                details.put(key, new StringCellRenderer(value));
            }
        });
    }

    return details;
}