Package com.subgraph.vega.internal.ui.http.requestlogviewer

Source Code of com.subgraph.vega.internal.ui.http.requestlogviewer.HttpViewLabelProvider

/*******************************************************************************
* Copyright (c) 2011 Subgraph.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*     Subgraph - initial API and implementation
******************************************************************************/
package com.subgraph.vega.internal.ui.http.requestlogviewer;

import java.util.Map;
import java.util.TreeMap;

import org.apache.http.Header;
import org.apache.http.HttpResponse;
import org.eclipse.jface.viewers.ITableColorProvider;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;

import com.subgraph.vega.api.model.requests.IRequestLogRecord;

public class HttpViewLabelProvider extends LabelProvider implements ITableLabelProvider, ITableColorProvider {
  private final Map<Integer, Color> colorMap = new TreeMap<Integer, Color>();
 
  @Override
  public void dispose() {
    for (Color color: colorMap.values()) {
      color.dispose();
    }
  }

  @Override
  public Image getColumnImage(Object element, int columnIndex) {
    return null;
  }

  @Override
  public String getColumnText(Object element, int columnIndex) {
    if(!(element instanceof IRequestLogRecord))
      return null;
    final IRequestLogRecord record = (IRequestLogRecord) element;
    switch(columnIndex) {
    case 0:
      return Long.toString(record.getRequestId());
    case 1:
      return record.getHttpHost().toURI();
    case 2:
      return record.getRequest().getRequestLine().getMethod();
    case 3:
      return record.getRequest().getRequestLine().getUri();
    case 4:
      return Integer.valueOf(record.getResponse().getStatusLine().getStatusCode()).toString();
    case 5:
      return getResponseLength(record.getResponse());
    case 6:
      return Long.toString(record.getRequestMilliseconds());
    case 7:
      final int count = record.getTagCount();
      if (count != 0) {
        return Integer.toString(count);
      } else {
        return "";
      }
    }
    return null;
  }
 
  public String getResponseLength(HttpResponse response) {
    final Header lengthHeader = response.getFirstHeader("Content-Length");
    if(lengthHeader != null)
      return lengthHeader.getValue();
   
    if(response.getEntity() == null)
      return "";
   
    return Long.toString(response.getEntity().getContentLength());
  }

  @Override
  public Color getForeground(Object element, int columnIndex) {
    IRequestLogRecord record = (IRequestLogRecord) element;
    if (record.getTagCount() != 0) {
      return getColorInverse(record.getTag(0).getRowColor());
    }
    return null;
  }

  @Override
  public Color getBackground(Object element, int columnIndex) {
    IRequestLogRecord record = (IRequestLogRecord) element;
    if (record.getTagCount() != 0) {
      return getColor(record.getTag(0).getRowColor());
    }
    return null;
  }

  private Color getColor(int colorCode) {
    Color color = colorMap.get(colorCode);
    if (color == null) {
      color = new Color(Display.getCurrent(), (colorCode >> 16) & 0xff, (colorCode >> 8) & 0xff, colorCode & 0xff);
      colorMap.put(colorCode, color);
    }
    return color;
  }
 
  // REVISIT: this isn't very nice.
  private Color getColorInverse(int colorCode) {
    final int inverseR = 255 - ((colorCode >> 16) & 0xff);
    final int inverseG = 255 - ((colorCode >> 8) & 0xff);
    final int inverseB = 255 - (colorCode & 0xff);

    return getColor(inverseR << 16 | inverseG << 8 | inverseB);
  }
 
}
TOP

Related Classes of com.subgraph.vega.internal.ui.http.requestlogviewer.HttpViewLabelProvider

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.