diff options
author | deboer | 2005-05-31 14:14:37 +0000 |
---|---|---|
committer | deboer | 2005-05-31 14:14:37 +0000 |
commit | 28e8098e0472ffb8a178e4c74d13cde9d384eb6a (patch) | |
tree | 043107f4350a91e6450519dd1e2b854330256de3 | |
parent | 627cc4ea4380419396152fa1f55cdf811cc51ce0 (diff) | |
download | webtools.servertools-28e8098e0472ffb8a178e4c74d13cde9d384eb6a.tar.gz webtools.servertools-28e8098e0472ffb8a178e4c74d13cde9d384eb6a.tar.xz webtools.servertools-28e8098e0472ffb8a178e4c74d13cde9d384eb6a.zip |
*** empty log message ***
16 files changed, 373 insertions, 282 deletions
diff --git a/plugins/org.eclipse.wst.internet.monitor.core/monitorcore/org/eclipse/wst/internet/monitor/core/internal/http/ResendHTTPRequest.java b/plugins/org.eclipse.wst.internet.monitor.core/monitorcore/org/eclipse/wst/internet/monitor/core/internal/http/ResendHTTPRequest.java index b015a99b3..2a48859dd 100644 --- a/plugins/org.eclipse.wst.internet.monitor.core/monitorcore/org/eclipse/wst/internet/monitor/core/internal/http/ResendHTTPRequest.java +++ b/plugins/org.eclipse.wst.internet.monitor.core/monitorcore/org/eclipse/wst/internet/monitor/core/internal/http/ResendHTTPRequest.java @@ -100,7 +100,9 @@ public class ResendHTTPRequest extends HTTPRequest { * @param type */ public void setRequest(byte[] request, int type) { - if (type == TRANSPORT && request != null) + if (request == null) + request = new byte[0]; + if (type == TRANSPORT) header = request; else if (type == CONTENT) content = request; diff --git a/plugins/org.eclipse.wst.internet.monitor.core/monitorcore/org/eclipse/wst/internet/monitor/core/internal/provisional/Request.java b/plugins/org.eclipse.wst.internet.monitor.core/monitorcore/org/eclipse/wst/internet/monitor/core/internal/provisional/Request.java index 386768edf..afc6eaddb 100644 --- a/plugins/org.eclipse.wst.internet.monitor.core/monitorcore/org/eclipse/wst/internet/monitor/core/internal/provisional/Request.java +++ b/plugins/org.eclipse.wst.internet.monitor.core/monitorcore/org/eclipse/wst/internet/monitor/core/internal/provisional/Request.java @@ -153,7 +153,7 @@ public class Request implements IAdaptable { * </p> * * @param type the content type: one of {@link #TRANSPORT}, - * {@link #CONTENT}, or {@link #ALL} + * {@link #CONTENT}, or {@link #ALL} * @return the content bytes */ public byte[] getRequest(int type) { @@ -171,7 +171,7 @@ public class Request implements IAdaptable { * </p> * * @param type the content type: one of {@link #TRANSPORT}, - * {@link #CONTENT}, or {@link #ALL} + * {@link #CONTENT}, or {@link #ALL} * @return the content bytes */ public byte[] getResponse(int type) { diff --git a/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/Messages.java b/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/Messages.java index be61d116a..0f09c96bf 100644 --- a/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/Messages.java +++ b/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/Messages.java @@ -40,6 +40,7 @@ public class Messages extends NLS { public static String headerLabel; public static String imageViewInvalid; public static String xmlViewInvalid; + public static String htmlViewInvalid; public static String viewDateFormat; public static String viewTime; public static String viewResponseTime; diff --git a/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/Messages.properties b/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/Messages.properties index 829cd25e4..5fdfe8779 100644 --- a/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/Messages.properties +++ b/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/Messages.properties @@ -33,32 +33,33 @@ actionProperties=Properties... headerLabel=Header imageViewInvalid=<Not a valid image file> xmlViewInvalid=<Not a valid XML file> +htmlViewInvalid=<Not a valid HTML file> # --------------- Errors --------------- errorDialogTitle=Error # --------------- General UI --------------- -monitorList=TCP/IP Monitors: +monitorList=TCP/IP &Monitors: columnLocal=Local Port columnRemote=Host name columnType=Type columnStatus=Status -add=Add... -edit=Edit... -remove=Remove -start=Start -stop=Stop +add=&Add... +edit=&Edit... +remove=&Remove +start=&Start +stop=S&top started=Started stopped=Stopped newMonitor=New Monitor editMonitor=Edit Monitor -localPort=Local monitoring port: +localPort=&Local monitoring port: remoteGroup=Monitor -remoteHost=Host name: -remotePort=Port: -parseType=Type: +remoteHost=&Host name: +remotePort=&Port: +parseType=&Type: preferenceDescription=Configure TCP/IP monitors on local and remote ports. -prefShowView=&Show the TCP/IP Monitor view when there is activity
\ No newline at end of file +prefShowView=S&how the TCP/IP Monitor view when there is activity
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/view/FilterAction.java b/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/view/FilterAction.java index cc79b003c..3c4d83f96 100644 --- a/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/view/FilterAction.java +++ b/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/view/FilterAction.java @@ -17,11 +17,11 @@ import org.eclipse.wst.internet.monitor.core.internal.IContentFilter; * */ public class FilterAction extends Action { - protected IViewerManager vm; + protected ViewerManager vm; protected IContentFilter filter; protected boolean enabled; - public FilterAction(IViewerManager vm, IContentFilter filter) { + public FilterAction(ViewerManager vm, IContentFilter filter) { super(filter.getName(), IAction.AS_CHECK_BOX); this.vm = vm; this.filter = filter; diff --git a/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/view/IViewerManager.java b/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/view/IViewerManager.java deleted file mode 100644 index 3e41348f6..000000000 --- a/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/view/IViewerManager.java +++ /dev/null @@ -1,98 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2005 IBM Corporation and others. - * 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: - * IBM Corporation - Initial API and implementation - *******************************************************************************/ -package org.eclipse.wst.internet.monitor.ui.internal.view; - -import java.util.List; - -import org.eclipse.core.runtime.IConfigurationElement; -import org.eclipse.wst.internet.monitor.core.internal.IContentFilter; -import org.eclipse.wst.internet.monitor.core.internal.provisional.Request; -import org.eclipse.wst.internet.monitor.ui.internal.provisional.ContentViewer; -import org.eclipse.wst.internet.monitor.ui.internal.viewers.HeaderViewer; -/** - * Manager interface for TCP/IP request and response message viewers - */ -public interface IViewerManager { - /** - * Set whether or not to show HTTP header details. - * - * @param b boolean - */ - public void setDisplayHeaderInfo(boolean b); - - /** - * Returns whether or not HTTP header details is showing. - * - * @return boolean - */ - public boolean getDisplayHeaderInfo(); - - /** - * Show the TCP/IP request message in a parent Composite - * - * @param request the request - */ - public void setRequest(Request request); - - /** - * Returns an array of the available TCP/IP request viewer ids - * - * @return a list of request viewers - */ - public List getRequestViewers(); - - /** - * Returns an array of the available TCP/IP response viewer ids - * - * @return a list of response viewers - */ - public List getResponseViewers(); - - /** - * Set the TCP/IP request message viewer - * - * @param element - */ - public void setRequestViewer(IConfigurationElement element); - - /** - * Set the TCP/IP response message viewer - * - * @param element - */ - public void setResponseViewer(IConfigurationElement element); - - /** - * - * @param filter - */ - public void addFilter(IContentFilter filter); - - /** - * - * @param filter - */ - public void removeFilter(IContentFilter filter); - - /** - * Return the current request viewer. - * - * @return the current request viewer - */ - public ContentViewer getCurrentRequestViewer(); - - /** - * Return the current request header viewer. - * - * @return the current request header viewer - */ - public HeaderViewer getCurrentRequestHeaderViewer(); -}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/view/MonitorView.java b/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/view/MonitorView.java index fdde091bd..1344c95bf 100644 --- a/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/view/MonitorView.java +++ b/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/view/MonitorView.java @@ -14,7 +14,6 @@ import java.text.SimpleDateFormat; import java.util.Iterator; import java.util.List; -import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.jface.action.*; import org.eclipse.jface.preference.IPreferenceNode; import org.eclipse.jface.preference.PreferenceDialog; @@ -25,8 +24,8 @@ import org.eclipse.osgi.util.NLS; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.BusyIndicator; import org.eclipse.swt.custom.SashForm; -import org.eclipse.swt.events.ModifyEvent; -import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Combo; @@ -52,13 +51,13 @@ public class MonitorView extends ViewPart { protected MonitorTreeContentProvider contentProvider; protected IRequestListener listener; - protected IViewerManager vm; + protected ViewerManager vm; protected List requestViewers; protected List responseViewers; protected static SimpleDateFormat format = new SimpleDateFormat(Messages.viewDateFormat); protected static final String VIEW_ID = "org.eclipse.wst.internet.monitor.view"; - protected static final String DEFAULT_VIEWER = "org.eclipse.wst.internet.monitor.viewers.byteviewer"; + protected static final String DEFAULT_VIEWER = "org.eclipse.wst.internet.monitor.viewers.byte"; protected IAction httpHeaderAction; @@ -91,6 +90,8 @@ public class MonitorView extends ViewPart { public void doRequestChanged(final Request rr) { Display.getDefault().asyncExec(new Runnable() { public void run() { + if (treeViewer == null) + return; IStructuredSelection sel = (IStructuredSelection) treeViewer.getSelection(); treeViewer.refresh(rr); @@ -208,7 +209,7 @@ public class MonitorView extends ViewPart { requestLabel.setText(NLS.bind(Messages.viewRequest, "")); requestLabel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - Combo requestViewerCombo = new Combo(requestHeader, SWT.DROP_DOWN | SWT.READ_ONLY); + final Combo requestViewerCombo = new Combo(requestHeader, SWT.DROP_DOWN | SWT.READ_ONLY); data = new GridData(GridData.HORIZONTAL_ALIGN_END); data.verticalSpan = 2; requestViewerCombo.setLayoutData(data); @@ -240,7 +241,7 @@ public class MonitorView extends ViewPart { responseLabel.setText(NLS.bind(Messages.viewResponse, "")); responseLabel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - Combo responseViewerCombo = new Combo(responseHeader, SWT.DROP_DOWN | SWT.READ_ONLY); + final Combo responseViewerCombo = new Combo(responseHeader, SWT.DROP_DOWN | SWT.READ_ONLY); data = new GridData(GridData.HORIZONTAL_ALIGN_END); data.verticalSpan = 2; responseViewerCombo.setLayoutData(data); @@ -258,37 +259,49 @@ public class MonitorView extends ViewPart { Iterator iterator = requestViewers.iterator(); int ctr = 0; while (iterator.hasNext()) { - IConfigurationElement element = (IConfigurationElement) iterator.next(); - requestViewerCombo.add(element.getAttribute("label"), ctr); - if (element.getAttribute("id").equals(DEFAULT_VIEWER)) { + Viewer viewer = (Viewer) iterator.next(); + requestViewerCombo.add(viewer.getLabel(), ctr); + if (viewer.getId().equals(DEFAULT_VIEWER)) { requestViewerCombo.select(ctr); - vm.setRequestViewer(element); - } - ctr++; + vm.setRequestViewer(viewer); + } + ctr++; } - requestViewerCombo.addModifyListener(new ModifyListener() { - public void modifyText(ModifyEvent arg0) { - Combo rvCombo = (Combo) arg0.getSource(); - vm.setRequestViewer((IConfigurationElement) requestViewers.get(rvCombo.getSelectionIndex())); + requestViewerCombo.addSelectionListener(new SelectionListener() { + public void widgetSelected(SelectionEvent e) { + Viewer viewer = (Viewer) requestViewers.get(requestViewerCombo.getSelectionIndex()); + if (currentRequest != null && viewer != null) + currentRequest.setProperty("request-viewer", viewer.getId()); + vm.setRequestViewer(viewer); + } + + public void widgetDefaultSelected(SelectionEvent e) { + // ignore } }); requestHeader.layout(true); iterator = responseViewers.iterator(); ctr = 0; - while(iterator.hasNext()) { - IConfigurationElement element = (IConfigurationElement) iterator.next(); - responseViewerCombo.add(element.getAttribute("label"), ctr); - if(element.getAttribute("id").equals(DEFAULT_VIEWER)) { + while (iterator.hasNext()) { + Viewer viewer = (Viewer) iterator.next(); + responseViewerCombo.add(viewer.getLabel(), ctr); + if (viewer.getId().equals(DEFAULT_VIEWER)) { responseViewerCombo.select(ctr); - vm.setResponseViewer(element); - } + vm.setResponseViewer(viewer); + } ctr++; } - responseViewerCombo.addModifyListener(new ModifyListener() { - public void modifyText(ModifyEvent arg0) { - Combo rvCombo = (Combo) arg0.getSource(); - vm.setResponseViewer((IConfigurationElement) requestViewers.get(rvCombo.getSelectionIndex())); + responseViewerCombo.addSelectionListener(new SelectionListener() { + public void widgetSelected(SelectionEvent e) { + Viewer viewer = (Viewer) responseViewers.get(responseViewerCombo.getSelectionIndex()); + if (currentRequest != null && viewer != null) + currentRequest.setProperty("response-viewer", viewer.getId()); + vm.setResponseViewer(viewer); + } + + public void widgetDefaultSelected(SelectionEvent e) { + // ignore } }); responseHeader.layout(true); @@ -298,35 +311,51 @@ public class MonitorView extends ViewPart { public void selectionChanged(SelectionChangedEvent event) { ISelection selection = event.getSelection(); - Request req = null; + currentRequest = null; if (selection != null && !selection.isEmpty()) { StructuredSelection sel = (StructuredSelection) selection; currentSelection = sel; Object obj = sel.iterator().next(); if (obj instanceof Request) - req = (Request) obj; + currentRequest = (Request) obj; } - if (req != null) { - label.setText(NLS.bind(Messages.viewTime, format.format(req.getDate()))); + if (currentRequest != null) { + label.setText(NLS.bind(Messages.viewTime, format.format(currentRequest.getDate()))); - if (req.getResponseTime() == -1) + if (currentRequest.getResponseTime() == -1) label2.setText(NLS.bind(Messages.viewResponseTime, "")); else { - String time = NLS.bind(Messages.viewResponseTimeFormat, req.getResponseTime() + ""); + String time = NLS.bind(Messages.viewResponseTimeFormat, currentRequest.getResponseTime() + ""); label2.setText(NLS.bind(Messages.viewResponseTime, time)); } - label3.setText(NLS.bind(Messages.viewType, req.getProtocol())); + label3.setText(NLS.bind(Messages.viewType, currentRequest.getProtocol())); // request information - requestLabel.setText(NLS.bind(Messages.viewRequest, "localhost:" + req.getLocalPort())); - requestSizeLabel.setText(getSizeString(req.getRequest(Request.CONTENT), req.getRequest(Request.ALL))); + requestLabel.setText(NLS.bind(Messages.viewRequest, "localhost:" + currentRequest.getLocalPort())); + requestSizeLabel.setText(getSizeString(currentRequest.getRequest(Request.CONTENT), currentRequest.getRequest(Request.ALL))); // response information - responseLabel.setText(NLS.bind(Messages.viewResponse, req.getRemoteHost() + ":" + req.getRemotePort())); - responseSizeLabel.setText(getSizeString(req.getResponse(Request.CONTENT), req.getResponse(Request.ALL))); - - vm.setRequest(req); + responseLabel.setText(NLS.bind(Messages.viewResponse, currentRequest.getRemoteHost() + ":" + currentRequest.getRemotePort())); + responseSizeLabel.setText(getSizeString(currentRequest.getResponse(Request.CONTENT), currentRequest.getResponse(Request.ALL))); + + vm.setRequest(currentRequest); + + Viewer viewer = vm.findViewer((String) currentRequest.getProperty("request-viewer")); + if (viewer == null) + viewer = vm.findViewer(DEFAULT_VIEWER); + if (viewer != null) { + vm.setRequestViewer(viewer); + requestViewerCombo.select(requestViewers.indexOf(viewer)); + } + + viewer = vm.findViewer((String) currentRequest.getProperty("response-viewer")); + if (viewer == null && currentRequest.getName() != null) + viewer = vm.getDefaultViewer(currentRequest.getName()); + if (viewer != null) { + vm.setResponseViewer(viewer); + responseViewerCombo.select(responseViewers.indexOf(viewer)); + } } else { label.setText(NLS.bind(Messages.viewTime, "")); label2.setText(NLS.bind(Messages.viewResponseTime, "")); @@ -334,9 +363,8 @@ public class MonitorView extends ViewPart { requestSizeLabel.setText(NLS.bind(Messages.viewSize, "")); responseLabel.setText(NLS.bind(Messages.viewResponse, "")); responseSizeLabel.setText(NLS.bind(Messages.viewSize, "")); - vm.setRequest(req); + vm.setRequest(currentRequest); } - currentRequest = req; } }); treeViewer.expandToLevel(2); diff --git a/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/view/Viewer.java b/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/view/Viewer.java new file mode 100644 index 000000000..b5cce39d3 --- /dev/null +++ b/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/view/Viewer.java @@ -0,0 +1,73 @@ +/********************************************************************** + * Copyright (c) 2003, 2005 IBM Corporation and others. + * 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: + * IBM Corporation - Initial API and implementation + **********************************************************************/ +package org.eclipse.wst.internet.monitor.ui.internal.view; + +import org.eclipse.core.runtime.IConfigurationElement; +import org.eclipse.wst.internet.monitor.ui.internal.Trace; +import org.eclipse.wst.internet.monitor.ui.internal.provisional.ContentViewer; +/** + * + */ +public class Viewer { + private IConfigurationElement element; + + /** + * Create a new content viewer. + * + * @param element a configuration element + */ + public Viewer(IConfigurationElement element) { + super(); + this.element = element; + } + + public String getId() { + return element.getAttribute("id"); + } + + public String getLabel() { + String label = element.getAttribute("label"); + if (label == null) + return "n/a"; + return label; + } + + /** + * Create an instance of the viewer. + * + * @return the viewer, or <code>null</code> if it couldn't be loaded + */ + public ContentViewer createViewer() { + try { + return (ContentViewer) element.createExecutableExtension("class"); + } catch (Exception e) { + Trace.trace(Trace.SEVERE, "Could not create viewer" + toString() + ": " + e.getMessage()); + return null; + } + } + + public boolean isRequestViewer() { + return element.getAttribute("type").toLowerCase().indexOf("request") >= 0; + } + + public boolean isResponseViewer() { + return element.getAttribute("type").toLowerCase().indexOf("response") >= 0; + } + + /** + * Return a string representation of this object. + * + * @return String + */ + public String toString() { + return "ContentViewer[" + getId() + "]"; + } +}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/view/ViewerManager.java b/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/view/ViewerManager.java index f8e28723b..67486c57f 100644 --- a/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/view/ViewerManager.java +++ b/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/view/ViewerManager.java @@ -26,11 +26,13 @@ import org.eclipse.wst.internet.monitor.ui.internal.viewers.HeaderViewer; /** * */ -public class ViewerManager implements IViewerManager{ +public class ViewerManager { private boolean displayHeaderInf; protected ContentViewer reqViewer; protected ContentViewer respViewer; + protected Viewer requestViewer; + protected Viewer responseViewer; protected HeaderViewer reqHeader; protected HeaderViewer respHeader; @@ -59,16 +61,45 @@ public class ViewerManager implements IViewerManager{ respViewer = new ByteViewer(); respViewer.init(respVComp); setDisplayHeaderInfo(MonitorUIPlugin.getShowHeaderPreference()); - setAvailableViewers(); + loadAvailableViewers(); + } + + protected Viewer getDefaultViewer(String name) { + if (name == null) + return null; + + String name2 = name.toLowerCase(); + if (name2.endsWith(".xml")) + return findViewer("org.eclipse.wst.internet.monitor.viewers.xml"); + else if (name2.endsWith(".html")) + return findViewer("org.eclipse.wst.internet.monitor.viewers.browser"); + else if (name2.endsWith(".gif") || name2.endsWith(".jpg") || + name2.endsWith(".jpeg") || name2.endsWith(".png")) + return findViewer("org.eclipse.wst.internet.monitor.viewers.image"); + else + return findViewer("org.eclipse.wst.internet.monitor.viewers.byte"); } - private void setAvailableViewers() { + protected Viewer findViewer(String id) { + if (id == null) + return null; + + Iterator iterator = viewers.iterator(); + while (iterator.hasNext()) { + Viewer viewer = (Viewer) iterator.next(); + if (id.equals(viewer.getId())) + return viewer; + } + return null; + } + + private void loadAvailableViewers() { 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]); + viewers.add(new Viewer(cf[i])); } } @@ -122,8 +153,9 @@ public class ViewerManager implements IViewerManager{ b = filter(rr.getResponse(Request.CONTENT)); respViewer.setContent(b); request = rr; - // Set the editor to editable if the request hasn't been sent and the - // editor can be set as editable. + + // set the editor to editable if the request hasn't been sent and the + // editor can be set as editable if (request instanceof ResendHTTPRequest && request.getResponse(Request.ALL) == null) { if (displayHeaderInf) { reqHeader.setEditable(true); @@ -166,13 +198,12 @@ public class ViewerManager implements IViewerManager{ * @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); + Viewer viewer = (Viewer) iterator.next(); + if (viewer.isRequestViewer()) + temp.add(viewer); } return temp; } @@ -181,13 +212,12 @@ public class ViewerManager implements IViewerManager{ * @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); + Viewer viewer = (Viewer) iterator.next(); + if (viewer.isResponseViewer()) + temp.add(viewer); } return temp; } @@ -195,15 +225,19 @@ public class ViewerManager implements IViewerManager{ /* (non-Javadoc) * @see org.eclipse.tcpip.monitor.internal.view.IViewerManager#setRequestViewer(java.lang.String) */ - public void setRequestViewer(IConfigurationElement element) { - // Call set request to save and reset the request. + public void setRequestViewer(Viewer viewer) { + if (viewer != null && viewer.equals(requestViewer)) + return; + + // call set request to save and reset the request setRequest(request); reqViewer.dispose(); - try { - reqViewer = (ContentViewer) element.createExecutableExtension("class"); - } catch (CoreException e) { - Trace.trace(Trace.SEVERE, "Error", e); - } + + requestViewer = viewer; + reqViewer = viewer.createViewer(); + if (reqViewer == null) + return; + reqViewer.init(reqVComp); //reqViewer.setRequestResponse(rr); byte[] b = null; @@ -224,13 +258,15 @@ public class ViewerManager implements IViewerManager{ /* (non-Javadoc) * @see org.eclipse.tcpip.monitor.internal.view.IViewerManager#setResponseViewer(java.lang.String) */ - public void setResponseViewer(IConfigurationElement element) { + public void setResponseViewer(Viewer viewer) { + if (viewer != null && viewer.equals(responseViewer)) + return; respViewer.dispose(); - try { - respViewer = (ContentViewer) element.createExecutableExtension("class"); - } catch (CoreException e) { - Trace.trace(Trace.SEVERE, "Error", e); - } + + responseViewer = viewer; + respViewer = viewer.createViewer(); + if (respViewer == null) + return; respViewer.init(respVComp); //respViewer.setRequestResponse(rr); byte[] b = null; diff --git a/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/viewers/BrowserViewer.java b/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/viewers/BrowserViewer.java new file mode 100644 index 000000000..4cdfd8483 --- /dev/null +++ b/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/viewers/BrowserViewer.java @@ -0,0 +1,79 @@ +/******************************************************************************* + * Copyright (c) 2003, 2005 IBM Corporation and others. + * 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: + * IBM Corporation - Initial API and implementation + *******************************************************************************/ +package org.eclipse.wst.internet.monitor.ui.internal.viewers; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.browser.Browser; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.wst.internet.monitor.ui.internal.Messages; +import org.eclipse.wst.internet.monitor.ui.internal.provisional.ContentViewer; +/** + * A browser viewer. + */ +public class BrowserViewer extends ContentViewer { + protected Browser browser; + + protected byte[] content; + + /** (non-Javadoc) + * @see ContentViewer#init(Composite) + */ + public void init(Composite parent) { + browser = new Browser(parent, SWT.BORDER); + browser.setLayoutData(new GridData(GridData.FILL_BOTH)); + } + + /** (non-Javadoc) + * @see ContentViewer#setContent(byte[]) + */ + public void setContent(byte[] b) { + content = b; + if (b == null || b.length == 0) { + browser.setText(Messages.htmlViewInvalid); + } else { + byte cr = '\r'; + byte lf = '\n'; + int trimFront = 0; + int trimBack = 0; + int len = b.length - 1; + while (b[trimFront] == cr || b[trimFront] == lf) + trimFront++; + while (b[len - trimBack] == cr || b[len - trimBack] == lf) + trimBack++; + + if (trimFront + trimBack > 0) { + byte[] temp = b; + b = new byte[temp.length - trimBack - trimFront]; + for (int i = trimFront; i < temp.length - trimBack; i++) { + b[i - trimFront] = temp[i]; + } + } + browser.setText(new String(b)); + } + } + + /** + * @see ContentViewer#getContent() + */ + public byte[] getContent() { + return content; + } + + /** (non-Javadoc) + * @see ContentViewer#dispose() + */ + public void dispose() { + browser.dispose(); + browser = null; + content = null; + } +}
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/viewers/ByteViewer.java b/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/viewers/ByteViewer.java index a88b17cde..30377dd28 100644 --- a/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/viewers/ByteViewer.java +++ b/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/viewers/ByteViewer.java @@ -13,7 +13,6 @@ package org.eclipse.wst.internet.monitor.ui.internal.viewers; import org.eclipse.jface.resource.JFaceResources; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Text; @@ -26,51 +25,16 @@ import org.eclipse.wst.internet.monitor.ui.internal.provisional.ContentViewer; */ public class ByteViewer extends ContentViewer { protected Text text; - protected Composite comp; - - /** (non-Javadoc) - * @see ContentViewer#dispose() - */ - public void dispose() { - comp.dispose(); - } - - /** (non-Javadoc) - * @see ContentViewer#setContent(byte[]) - */ - public void setContent(byte[] b) { - String out = ""; - if (b != null) - out = MonitorUIPlugin.parse(b); - - String lineSeparator = System.getProperty("line.separator"); - int ls = lineSeparator.length(); - if (out.length() > ls) { - while (out.substring(0, ls).indexOf(lineSeparator) >= 0) - out = out.substring(ls, out.length()); - } - - text.setText(out); - } /** (non-Javadoc) * @see ContentViewer#init(Composite) */ public void init(Composite parent) { - comp = new Composite(parent, SWT.NONE); - GridLayout layout = new GridLayout(); - layout.numColumns = 1; - layout.marginHeight = 0; - layout.marginWidth = 0; - comp.setLayout(layout); - GridData data = new GridData(GridData.FILL_BOTH); - comp.setLayoutData(data); - - text = new Text(comp, SWT.BORDER | SWT.MULTI | SWT.READ_ONLY | SWT.H_SCROLL | SWT.V_SCROLL); - Display display = comp.getDisplay(); + text = new Text(parent, SWT.BORDER | SWT.MULTI | SWT.READ_ONLY | SWT.H_SCROLL | SWT.V_SCROLL); + Display display = parent.getDisplay(); text.setBackground(display.getSystemColor(SWT.COLOR_LIST_BACKGROUND)); text.setForeground(display.getSystemColor(SWT.COLOR_LIST_FOREGROUND)); - text.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.FILL_VERTICAL)); + text.setLayoutData(new GridData(GridData.FILL_BOTH)); text.setFont(JFaceResources.getTextFont()); PlatformUI.getWorkbench().getHelpSystem().setHelp(text, ContextIds.VIEW_RESPONSE); } @@ -81,7 +45,7 @@ public class ByteViewer extends ContentViewer { public void setEditable(boolean editable) { text.setEditable(editable); } - + /** (non-Javadoc) * @see ContentViewer#getContent() */ @@ -102,4 +66,30 @@ public class ByteViewer extends ContentViewer { System.arraycopy(twoNewlines, 0, retBytes, contentBytes.length, 2); return retBytes; } + + /** (non-Javadoc) + * @see ContentViewer#setContent(byte[]) + */ + public void setContent(byte[] b) { + String out = ""; + if (b != null) + out = MonitorUIPlugin.parse(b); + + String lineSeparator = System.getProperty("line.separator"); + int ls = lineSeparator.length(); + if (out.length() > ls) { + while (out.substring(0, ls).indexOf(lineSeparator) >= 0) + out = out.substring(ls, out.length()); + } + + text.setText(out); + } + + /** (non-Javadoc) + * @see ContentViewer#dispose() + */ + public void dispose() { + text.dispose(); + text = null; + } }
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/viewers/HeaderViewer.java b/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/viewers/HeaderViewer.java index 7888ceccf..c8fe4138b 100644 --- a/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/viewers/HeaderViewer.java +++ b/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/viewers/HeaderViewer.java @@ -27,11 +27,12 @@ import org.eclipse.wst.internet.monitor.ui.internal.MonitorUIPlugin; * An transport (header) viewer. */ public class HeaderViewer { + private static final int HEADER_TEXT_SIZE = 110; + protected boolean displayHeader; protected Composite headerComp; protected Composite innerComp; - protected Composite rootComp; protected Label headerLabel; protected Text headerText; @@ -41,9 +42,6 @@ public class HeaderViewer { protected GridData data; protected boolean hidden; - - protected static int HEADER_LABEL_SIZE = 15; - protected static int HEADER_TEXT_SIZE = 110; /** * Request header constant. @@ -62,7 +60,6 @@ public class HeaderViewer { * @param message */ public HeaderViewer(Composite parent, byte message) { - rootComp = parent; displayHeader = true; hidden = false; @@ -82,7 +79,6 @@ public class HeaderViewer { layout.marginWidth = 2; innerComp.setLayout(layout); data = new GridData(GridData.FILL_BOTH); - data.heightHint = HEADER_LABEL_SIZE; innerComp.setLayoutData(data); rr = null; @@ -133,12 +129,11 @@ public class HeaderViewer { headerText.setFont(JFaceResources.getTextFont()); PlatformUI.getWorkbench().getHelpSystem().setHelp(headerText, ContextIds.VIEW_RESPONSE); - rootComp.layout(true); + headerComp.getParent().layout(true); } else { innerComp.dispose(); data = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING); - data.heightHint = HEADER_LABEL_SIZE; headerComp.setLayoutData(data); innerComp = new Composite(headerComp, SWT.NONE); @@ -148,13 +143,12 @@ public class HeaderViewer { layout.marginWidth = 2; innerComp.setLayout(layout); data = new GridData(GridData.FILL_BOTH); - data.heightHint = HEADER_LABEL_SIZE; innerComp.setLayoutData(data); headerLabel = new Label(innerComp, SWT.NONE); headerLabel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING)); - rootComp.layout(true); + headerComp.getParent().layout(true); } } getView(); diff --git a/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/viewers/ImageViewer.java b/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/viewers/ImageViewer.java index 4c02f38b6..f8618ed17 100644 --- a/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/viewers/ImageViewer.java +++ b/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/viewers/ImageViewer.java @@ -16,7 +16,6 @@ import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.ImageData; import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.wst.internet.monitor.ui.internal.Messages; @@ -25,8 +24,6 @@ import org.eclipse.wst.internet.monitor.ui.internal.provisional.ContentViewer; * An image viewer. */ public class ImageViewer extends ContentViewer { - protected Composite rootComp; - protected Composite viewerComp; protected Label messageLabel; protected byte[] content; @@ -35,18 +32,7 @@ public class ImageViewer extends ContentViewer { * @see ContentViewer#init(Composite) */ public void init(Composite parent) { - rootComp = parent; - - viewerComp = new Composite(parent, SWT.NONE); - GridLayout layout = new GridLayout(); - layout.numColumns = 1; - layout.marginHeight = 0; - layout.marginWidth = 0; - viewerComp.setLayout(layout); - GridData data = new GridData(GridData.FILL_BOTH); - viewerComp.setLayoutData(data); - - messageLabel = new Label(viewerComp, SWT.NONE); + messageLabel = new Label(parent, SWT.NONE); messageLabel.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING | GridData.VERTICAL_ALIGN_BEGINNING)); messageLabel.setText(Messages.imageViewInvalid); } @@ -64,15 +50,15 @@ public class ImageViewer extends ContentViewer { int trimFront = 0; int trimBack = 0; int len = b.length - 1; - while(b[trimFront] == cr || b[trimFront] == lf) + while (b[trimFront] == cr || b[trimFront] == lf) trimFront++; - while(b[len - trimBack] == cr || b[len - trimBack] == lf) + while (b[len - trimBack] == cr || b[len - trimBack] == lf) trimBack++; if (trimFront + trimBack > 0) { byte[] temp = b; b = new byte[temp.length - trimBack - trimFront]; - for(int i = trimFront; i < temp.length - trimBack; i++) { + for (int i = trimFront; i < temp.length - trimBack; i++) { b[i - trimFront] = temp[i]; } } @@ -85,8 +71,9 @@ public class ImageViewer extends ContentViewer { } } - viewerComp.layout(true); - messageLabel.setFont(viewerComp.getParent().getFont()); + Composite parent = messageLabel.getParent(); + messageLabel.setFont(parent.getFont()); + parent.layout(true); } /** @@ -100,6 +87,8 @@ public class ImageViewer extends ContentViewer { * @see ContentViewer#dispose() */ public void dispose() { - viewerComp.dispose(); + messageLabel.dispose(); + messageLabel = null; + content = null; } }
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/viewers/XMLViewer.java b/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/viewers/XMLViewer.java index 3d8c0f4c1..150ebe4fd 100644 --- a/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/viewers/XMLViewer.java +++ b/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/internal/viewers/XMLViewer.java @@ -14,13 +14,7 @@ import java.io.*; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.transform.OutputKeys; -import javax.xml.transform.Result; -import javax.xml.transform.Source; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerConfigurationException; -import javax.xml.transform.TransformerException; -import javax.xml.transform.TransformerFactory; +import javax.xml.transform.*; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; @@ -45,12 +39,9 @@ import org.xml.sax.*; * XML Viewer. */ public class XMLViewer extends ContentViewer { - protected GridData data; + protected Composite viewerComp; protected StackLayout layout; protected Text messageText; - - protected Composite rootComp; - protected Composite viewerComp; protected Label messageLabel; protected boolean xmlTagMissing = false; @@ -59,13 +50,6 @@ public class XMLViewer extends ContentViewer { protected String originalEncoding; protected byte[] content; - - /** (non-Javadoc) - * @see ContentViewer#dispose() - */ - public void dispose() { - viewerComp.dispose(); - } /** (non-Javadoc) * @see ContentViewer#setContent(byte[]) @@ -136,15 +120,12 @@ public class XMLViewer extends ContentViewer { * @see ContentViewer#init(Composite) */ public void init(Composite parent) { - rootComp = parent; - viewerComp = new Composite(parent, SWT.NONE); layout = new StackLayout(); layout.marginHeight = 0; layout.marginWidth = 0; viewerComp.setLayout(layout); - data = new GridData(GridData.FILL_BOTH); - viewerComp.setLayoutData(data); + viewerComp.setLayoutData(new GridData(GridData.FILL_BOTH)); messageText = new Text(viewerComp, SWT.BORDER | SWT.MULTI | SWT.READ_ONLY | SWT.H_SCROLL | SWT.V_SCROLL); Display display = viewerComp.getDisplay(); @@ -227,4 +208,13 @@ public class XMLViewer extends ContentViewer { } return out.toByteArray(); } + + /** (non-Javadoc) + * @see ContentViewer#dispose() + */ + public void dispose() { + viewerComp.dispose(); + viewerComp = null; + content = null; + } }
\ No newline at end of file diff --git a/plugins/org.eclipse.wst.internet.monitor.ui/plugin.properties b/plugins/org.eclipse.wst.internet.monitor.ui/plugin.properties index ae803d577..c45f6575e 100644 --- a/plugins/org.eclipse.wst.internet.monitor.ui/plugin.properties +++ b/plugins/org.eclipse.wst.internet.monitor.ui/plugin.properties @@ -18,8 +18,9 @@ actionResend=Resend request actionModify=Modify request actionModifyResend=Send Modified Request -byteView=Byte View -imageView=Image View -xmlView=XML View +byteView=Byte +imageView=Image +xmlView=XML +browserView=Web Browser preferenceTitle=TCP/IP Monitor diff --git a/plugins/org.eclipse.wst.internet.monitor.ui/plugin.xml b/plugins/org.eclipse.wst.internet.monitor.ui/plugin.xml index 96b286ec4..9b6c8552f 100644 --- a/plugins/org.eclipse.wst.internet.monitor.ui/plugin.xml +++ b/plugins/org.eclipse.wst.internet.monitor.ui/plugin.xml @@ -31,20 +31,25 @@ <extension point="org.eclipse.wst.internet.monitor.ui.viewers"> <viewer - id="org.eclipse.wst.internet.monitor.viewers.byteviewer" + id="org.eclipse.wst.internet.monitor.viewers.byte" class="org.eclipse.wst.internet.monitor.ui.internal.viewers.ByteViewer" type="requestresponse" label="%byteView"/> <viewer - id="org.eclipse.wst.internet.monitor.viewers.imageviewer" + id="org.eclipse.wst.internet.monitor.viewers.image" class="org.eclipse.wst.internet.monitor.ui.internal.viewers.ImageViewer" type="requestresponse" label="%imageView"/> <viewer - id="org.eclipse.wst.internet.monitor.viewers.XMLViewer" + id="org.eclipse.wst.internet.monitor.viewers.xml" class="org.eclipse.wst.internet.monitor.ui.internal.viewers.XMLViewer" type="requestresponse" label="%xmlView"/> + <viewer + id="org.eclipse.wst.internet.monitor.viewers.browser" + class="org.eclipse.wst.internet.monitor.ui.internal.viewers.BrowserViewer" + type="requestresponse" + label="%browserView"/> </extension> <extension point="org.eclipse.core.runtime.adapters"> |