/******************************************************************************* * Copyright (c) 2003, 2007 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.server.ui.internal.viewers; import org.eclipse.core.runtime.CoreException; import org.eclipse.jface.viewers.*; import org.eclipse.jface.window.Window; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableColumn; import org.eclipse.wst.server.core.IServer; import org.eclipse.wst.server.core.ServerPort; import org.eclipse.wst.server.core.internal.IMonitoredServerPort; import org.eclipse.wst.server.core.internal.IServerMonitorManager; import org.eclipse.wst.server.core.internal.ServerMonitorManager; import org.eclipse.wst.server.ui.internal.EclipseUtil; import org.eclipse.wst.server.ui.internal.Messages; import org.eclipse.wst.server.ui.internal.SWTUtil; /** * */ public class MonitorComposite extends Composite { //protected ServerPort selection; protected PortSelectionListener listener; protected IServer server; protected IServerMonitorManager smm; protected Table monitorTable; protected TableViewer monitorTableViewer; public interface PortSelectionListener { public void portSelected(ServerPort port); } public MonitorComposite(Composite parent, int style, PortSelectionListener listener2, IServer server) { super(parent, style); this.listener = listener2; this.server = server; smm = ServerMonitorManager.getInstance(); GridLayout layout = new GridLayout(); layout.marginWidth = 0; layout.marginHeight = 0; layout.verticalSpacing = 5; layout.horizontalSpacing = 5; layout.numColumns = 2; setLayout(layout); GridData data = new GridData(GridData.FILL_BOTH); setLayoutData(data); monitorTable = new Table(this, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL | SWT.MULTI | SWT.FULL_SELECTION); data = new GridData(GridData.FILL_HORIZONTAL | GridData.FILL_VERTICAL); //data.horizontalSpan = 2; data.heightHint = 150; //data.widthHint = 340; monitorTable.setLayoutData(data); monitorTable.setLinesVisible(true); monitorTableViewer = new TableViewer(monitorTable); TableLayout tableLayout = new TableLayout(); monitorTable.setLayout(tableLayout); monitorTable.setHeaderVisible(true); tableLayout.addColumnData(new ColumnWeightData(8, 80, true)); TableColumn col = new TableColumn(monitorTable, SWT.NONE); col.setText(Messages.dialogMonitorColumnStatus); tableLayout.addColumnData(new ColumnWeightData(12, 120, true)); col = new TableColumn(monitorTable, SWT.NONE); col.setText(Messages.dialogMonitorColumnType); tableLayout.addColumnData(new ColumnWeightData(8, 80, true)); col = new TableColumn(monitorTable, SWT.NONE); col.setText(Messages.dialogMonitorColumnPort); tableLayout.addColumnData(new ColumnWeightData(8, 80, true)); col = new TableColumn(monitorTable, SWT.NONE); col.setText(Messages.dialogMonitorColumnMonitorPort); tableLayout.addColumnData(new ColumnWeightData(8, 80, true)); col = new TableColumn(monitorTable, SWT.NONE); col.setText(Messages.dialogMonitorColumnContentType); monitorTableViewer.setContentProvider(new MonitorContentProvider(server)); monitorTableViewer.setLabelProvider(new MonitorLabelProvider(server)); monitorTableViewer.setInput(AbstractTreeContentProvider.ROOT); monitorTableViewer.setSorter(new ViewerSorter() { public int compare(Viewer viewer, Object e1, Object e2) { IMonitoredServerPort port1 = (IMonitoredServerPort) e1; IMonitoredServerPort port2 = (IMonitoredServerPort) e2; if (port1.getServerPort().getPort() == port2.getServerPort().getPort()) { if (port1.getMonitorPort() == port2.getMonitorPort()) { return 0; } else if (port1.getMonitorPort() > port2.getMonitorPort()) return 1; else return -1; } else if (port1.getServerPort().getPort() > port2.getServerPort().getPort()) return 1; else return -1; } }); Composite buttonComp = new Composite(this, SWT.NONE); buttonComp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_BEGINNING)); layout = new GridLayout(); layout.marginWidth = 0; layout.marginHeight = 0; buttonComp.setLayout(layout); final IServer server2 = server; Button add = SWTUtil.createButton(buttonComp, Messages.add); add.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { MonitorDialog dialog = new MonitorDialog(getShell(), server2); if (dialog.open() != Window.CANCEL) { ServerPort port = dialog.getServerPort(); IMonitoredServerPort sp = smm.createMonitor(server2, port, dialog.getMonitorPort(), dialog.getContentTypes()); if (sp != null) monitorTableViewer.add(sp); } } }); if (server.getServerType() == null) add.setEnabled(false); final Button edit = SWTUtil.createButton(buttonComp, Messages.edit); edit.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { IStructuredSelection sel = (IStructuredSelection) monitorTableViewer.getSelection(); IMonitoredServerPort port = (IMonitoredServerPort) sel.getFirstElement(); MonitorDialog dialog = new MonitorDialog(getShell(), server2, port.getServerPort(), port.getMonitorPort(), port.getContentTypes()); if (dialog.open() != Window.CANCEL) { smm.removeMonitor(port); monitorTableViewer.remove(port); port = smm.createMonitor(server2, dialog.getServerPort(), dialog.getMonitorPort(), dialog.getContentTypes()); if (port != null) { monitorTableViewer.add(port); monitorTableViewer.setSelection(new StructuredSelection(port)); } } } }); edit.setEnabled(false); final Button remove = SWTUtil.createButton(buttonComp, Messages.remove); remove.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { IMonitoredServerPort msp = (IMonitoredServerPort) getSelection(monitorTableViewer.getSelection()); if (msp.isStarted()) smm.stopMonitor(msp); smm.removeMonitor(msp); monitorTableViewer.remove(msp); } }); remove.setEnabled(false); final Button start = SWTUtil.createButton(buttonComp, Messages.start); start.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { IStructuredSelection sel = (IStructuredSelection) monitorTableViewer.getSelection(); IMonitoredServerPort msp = (IMonitoredServerPort) sel.getFirstElement(); try { smm.startMonitor(msp); } catch (CoreException ce) { EclipseUtil.openError(getShell(), ce.getLocalizedMessage()); } monitorTableViewer.refresh(msp); monitorTableViewer.setSelection(new StructuredSelection(msp)); } }); start.setEnabled(false); final Button stop = SWTUtil.createButton(buttonComp, Messages.stop); stop.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { IStructuredSelection sel = (IStructuredSelection) monitorTableViewer.getSelection(); IMonitoredServerPort msp = (IMonitoredServerPort) sel.getFirstElement(); smm.stopMonitor(msp); monitorTableViewer.refresh(msp); monitorTableViewer.setSelection(new StructuredSelection(msp)); } }); stop.setEnabled(false); monitorTableViewer.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent event) { IMonitoredServerPort port = (IMonitoredServerPort) getSelection(monitorTableViewer.getSelection()); if (port != null) { edit.setEnabled(!port.isStarted()); remove.setEnabled(true); start.setEnabled(!port.isStarted()); stop.setEnabled(port.isStarted()); } else { edit.setEnabled(false); remove.setEnabled(false); start.setEnabled(false); stop.setEnabled(false); } } }); IMonitoredServerPort[] msps = ServerMonitorManager.getInstance().getMonitoredPorts(server); if (msps != null && msps.length > 0) monitorTableViewer.setSelection(new StructuredSelection(msps[0])); } protected Object getSelection(ISelection sel2) { IStructuredSelection sel = (IStructuredSelection) sel2; return sel.getFirstElement(); } }