blob: 93dddab53f74f617f63d8b7e8b9a6c232223ff97 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2003, 2008 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.wizard.page;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.viewers.*;
import org.eclipse.wst.server.core.IServer;
import org.eclipse.wst.server.core.IServerAttributes;
import org.eclipse.wst.server.core.IServerWorkingCopy;
import org.eclipse.wst.server.ui.internal.SWTUtil;
import org.eclipse.wst.server.ui.internal.viewers.BaseContentProvider;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Image;
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.Label;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
/**
* A wizard page used to detect a server.
*/
public class NewDetectServerComposite extends Composite {
protected String host;
protected IServerWorkingCopy server;
protected IServerSelectionListener listener;
protected List servers = new ArrayList();
protected Button detect;
protected Table table;
protected TableViewer tableViewer;
protected Label hostLabel;
public interface IServerSelectionListener {
public void serverSelected(IServerAttributes server);
}
public class ServerContentProvider extends BaseContentProvider {
public Object[] getElements(Object inputElement) {
return servers.toArray();
}
}
public class ServerLabelProvider implements ITableLabelProvider {
public void addListener(ILabelProviderListener listener2) {
// do nothing
}
public void dispose() {
// do nothing
}
public Image getColumnImage(Object element, int columnIndex) {
return null;
}
public String getColumnText(Object element, int columnIndex) {
IServer server2 = (IServer) element;
if (columnIndex == 0)
return server2.getName();
else if (columnIndex == 0)
return "n/a";
return null;
}
public boolean isLabelProperty(Object element, String property) {
return false;
}
public void removeListener(ILabelProviderListener listener2) {
// do nothing
}
}
/**
* Create a new NewDetectServerComposite.
*
* @param parent a parent composite
* @param listener2 a server selection listener
*/
public NewDetectServerComposite(Composite parent, IServerSelectionListener listener2) {
super(parent, SWT.NONE);
this.listener = listener2;
createControl();
}
protected Label createHeadingLabel(Composite parent, String text, int span) {
Label label = createLabel(parent, text, span, true, false);
label.setFont(JFaceResources.getBannerFont());
return label;
}
protected Label createLabel(Composite parent, String text, int span, boolean alignTop, boolean indent) {
Label label = new Label(parent, SWT.WRAP);
label.setText(text);
GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_CENTER);
if (alignTop)
data.verticalAlignment = GridData.BEGINNING;
data.horizontalSpan = span;
if (indent)
data.horizontalIndent = 10;
label.setLayoutData(data);
return label;
}
/**
* Creates the UI of the page.
*/
protected void createControl() {
GridLayout layout = new GridLayout();
layout.horizontalSpacing = SWTUtil.convertHorizontalDLUsToPixels(this, 4);
layout.verticalSpacing = SWTUtil.convertVerticalDLUsToPixels(this, 4);
layout.marginWidth = 0;
layout.marginHeight = 0;
layout.numColumns = 2;
setLayout(layout);
//WorkbenchHelp.setHelp(this, ContextIds.SELECT_CLIENT_WIZARD);
createHeadingLabel(this, "Select the Server", 2);
table = new Table(this, SWT.BORDER | SWT.FULL_SELECTION | SWT.V_SCROLL | SWT.H_SCROLL | SWT.SINGLE);
GridData data = new GridData(GridData.FILL_HORIZONTAL | GridData.FILL_VERTICAL);
data.heightHint = 60;
data.widthHint = 50;
data.horizontalSpan = 2;
data.horizontalIndent = 10;
table.setLayoutData(data);
TableLayout tableLayout = new TableLayout();
table.setHeaderVisible(true);
tableLayout.addColumnData(new ColumnWeightData(50, 100, true));
TableColumn col = new TableColumn(table, SWT.NONE);
col.setText("Server");
tableLayout.addColumnData(new ColumnWeightData(40, 80, true));
TableColumn col2 = new TableColumn(table, SWT.NONE);
col2.setText("Status");
table.setLayout(tableLayout);
tableViewer = new TableViewer(table);
tableViewer.setContentProvider(new ServerContentProvider());
tableViewer.setLabelProvider(new ServerLabelProvider());
tableViewer.setColumnProperties(new String[] {"name", "status"});
tableViewer.setInput("root");
String date = "<now>";
hostLabel = createLabel(this, "Last detected servers on " + host + " at " + date + ":", 1, false, true);
detect = SWTUtil.createButton(this, "Refresh");
detect.setEnabled(false);
data = (GridData) detect.getLayoutData();
data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_END;
// listeners
detect.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
// do nothing
}
});
tableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
public void selectionChanged(SelectionChangedEvent event) {
IStructuredSelection sel = (IStructuredSelection) event.getSelection();
Object obj = sel.getFirstElement();
IServerWorkingCopy newServer = null;
if (obj instanceof IServerWorkingCopy)
newServer = (IServerWorkingCopy) obj;
if ((newServer == null && server != null) || (newServer != null && !newServer.equals(server))) {
server = newServer;
listener.serverSelected(server);
}
}
});
setHost(null);
Dialog.applyDialogFont(this);
}
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
servers = new ArrayList();
tableViewer.refresh();
if (host != null) {
hostLabel.setText("Detected servers on " + host + ":");
detect.setEnabled(true);
table.setEnabled(true);
} else {
hostLabel.setText("No host selected");
detect.setEnabled(false);
table.setEnabled(false);
}
}
public IServerWorkingCopy getServer() {
return server;
}
}