/********************************************************************** * Copyright (c) 2003 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Common Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/cpl-v10.html  * * Contributors: * IBM - Initial API and implementation **********************************************************************/ package net.sourceforge.phpdt.monitor.ui.internal.view; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import net.sourceforge.phpdt.monitor.core.IContentFilter; import net.sourceforge.phpdt.monitor.core.IRequest; import net.sourceforge.phpdt.monitor.ui.IContentViewer; import net.sourceforge.phpdt.monitor.ui.internal.MonitorUIPlugin; import net.sourceforge.phpdt.monitor.ui.internal.Trace; import net.sourceforge.phpdt.monitor.ui.internal.viewers.ByteViewer; import net.sourceforge.phpdt.monitor.ui.internal.viewers.HeaderViewer; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.IExtensionRegistry; import org.eclipse.core.runtime.Platform; import org.eclipse.swt.widgets.Composite; /** * */ public class ViewerManager implements IViewerManager { private boolean displayHeaderInf; protected IContentViewer reqViewer; protected IContentViewer respViewer; protected HeaderViewer reqHeader; protected HeaderViewer respHeader; protected Composite reqHComp; protected Composite reqVComp; protected Composite respHComp; protected Composite respVComp; protected List viewers; protected IRequest request; protected List filters = new ArrayList(); public ViewerManager(Composite reqHeadParent, Composite reqViewParent, Composite respHeadParent, Composite respViewParent) { reqHComp = reqHeadParent; respHComp = respHeadParent; reqVComp = reqViewParent; respVComp = respViewParent; reqHeader = new HeaderViewer(reqHComp, HeaderViewer.REQUEST_HEADER); respHeader = new HeaderViewer(respHComp, HeaderViewer.RESPONSE_HEADER); reqViewer = new ByteViewer(); reqViewer.init(reqVComp); respViewer = new ByteViewer(); respViewer.init(respVComp); setDisplayHeaderInfo(MonitorUIPlugin.getShowHeaderPreference()); setAvailableViewers(); } private void setAvailableViewers() { IExtensionRegistry registry = Platform.getExtensionRegistry(); IConfigurationElement[] cf = registry.getConfigurationElementsFor(MonitorUIPlugin.PLUGIN_ID, "viewers"); int size = cf.length; viewers = new ArrayList(size); for (int i = 0; i < size; i++) { viewers.add(cf[i]); } } /* (non-Javadoc) * @see org.eclipse.monitor.internal.view.IViewerManager#hideHeader() */ /*public void hideHeader() { displayHeaderInf = false; if (!reqHeader.isHidden()) reqHeader.hideViewer(); if (!respHeader.isHidden()) respHeader.hideViewer(); }*/ /* (non-Javadoc) * @see org.eclipse.monitor.internal.view.IViewerManager#showHeader() */ /*public void showHeader() { if (reqHeader.isHidden()) reqHeader.showViewer(); if (respHeader.isHidden()) respHeader.showViewer(); }*/ /* (non-Javadoc) * @see org.eclipse.monitor.internal.view.IViewerManager#setDisplayHeaderInfo(boolean) */ public void setDisplayHeaderInfo(boolean b) { displayHeaderInf = b; reqHeader.setDisplayHeader(b); respHeader.setDisplayHeader(b); MonitorUIPlugin.setShowHeaderPreference(b); } /* (non-Javadoc) * @see org.eclipse.monitor.internal.view.IViewerManager#getDisplayHeaderInfo() */ public boolean getDisplayHeaderInfo() { return displayHeaderInf; } public void setRequest(IRequest rr) { reqHeader.setRequestResponse(rr); respHeader.setRequestResponse(rr); byte[] b = null; if (rr != null) b = filter(rr.getRequest(IRequest.CONTENT)); reqViewer.setContent(b); b = null; if (rr != null) b = filter(rr.getResponse(IRequest.CONTENT)); respViewer.setContent(b); request = rr; } public void addFilter(IContentFilter filter) { filters.add(filter); setRequest(request); } public void removeFilter(IContentFilter filter) { filters.remove(filter); setRequest(request); } protected byte[] filter(byte[] b) { if (b == null) return null; Iterator iterator = filters.iterator(); while (iterator.hasNext()) { IContentFilter filter = (IContentFilter) iterator.next(); try { b = filter.filter(request, false, b); } catch (Exception e) { Trace.trace(Trace.SEVERE, "Error while filtering with " + filter.getId(), e); } } return b; } /* (non-Javadoc) * @see org.eclipse.tcpip.monitor.internal.view.IViewerManager#getRequestViewers() */ public List getRequestViewers() { IConfigurationElement element; Iterator iterator = viewers.iterator(); List temp = new ArrayList(); while (iterator.hasNext()) { element = (IConfigurationElement) iterator.next(); if (element.getAttribute("type").toLowerCase().indexOf("request") >= 0) temp.add(element); } return temp; } /* (non-Javadoc) * @see org.eclipse.tcpip.monitor.internal.view.IViewerManager#getResponseViewers() */ public List getResponseViewers() { IConfigurationElement element; Iterator iterator = viewers.iterator(); List temp = new ArrayList(); while (iterator.hasNext()) { element = (IConfigurationElement) iterator.next(); if (element.getAttribute("type").toLowerCase().indexOf("response") >= 0) temp.add(element); } return temp; } /* (non-Javadoc) * @see org.eclipse.tcpip.monitor.internal.view.IViewerManager#setRequestViewer(java.lang.String) */ public void setRequestViewer(IConfigurationElement element) { reqViewer.dispose(); try { reqViewer = (IContentViewer) element.createExecutableExtension("class"); } catch (CoreException e) { Trace.trace(Trace.SEVERE, "Error", e); } reqViewer.init(reqVComp); //reqViewer.setRequestResponse(rr); byte[] b = null; if (request != null) b = filter(request.getRequest(IRequest.CONTENT)); reqViewer.setContent(b); reqVComp.layout(true); } /* (non-Javadoc) * @see org.eclipse.tcpip.monitor.internal.view.IViewerManager#setResponseViewer(java.lang.String) */ public void setResponseViewer(IConfigurationElement element) { respViewer.dispose(); try { respViewer = (IContentViewer) element.createExecutableExtension("class"); } catch (CoreException e){ Trace.trace(Trace.SEVERE, "Error", e); } respViewer.init(respVComp); //respViewer.setRequestResponse(rr); byte[] b = null; if (request != null) b = filter(request.getResponse(IRequest.CONTENT)); respViewer.setContent(b); respVComp.layout(true); } }