[139297] Installable server license
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/IInstallableRuntime.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/IInstallableRuntime.java
index 6745ad3..20bfa99 100644
--- a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/IInstallableRuntime.java
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/IInstallableRuntime.java
@@ -31,6 +31,15 @@
 	public String getId();
 
 	/**
+	 * Downloads the license from the update site.
+	 * 
+	 * @param monitor a progress monitor
+	 * @return the license
+	 * @throws CoreException
+	 */
+	public String getLicense(IProgressMonitor monitor) throws CoreException;
+
+	/**
 	 * Kicks off a background job to install the runtime.
 	 * 
 	 * @param path the path to install the runtime at
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/IInstallableServer.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/IInstallableServer.java
index 5180a29..c87a31c 100644
--- a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/IInstallableServer.java
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/IInstallableServer.java
@@ -72,6 +72,15 @@
 	public String getVersion();
 
 	/**
+	 * Downloads the license from the update site.
+	 * 
+	 * @param monitor a progress monitor
+	 * @return the license
+	 * @throws CoreException
+	 */
+	public String getLicense(IProgressMonitor monitor) throws CoreException;
+
+	/**
 	 * Install this server.
 	 * 
 	 * @param monitor a progress monitor, or <code>null</code> if progress
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/InstallableRuntime.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/InstallableRuntime.java
index ae32f5d..ff12dfd 100644
--- a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/InstallableRuntime.java
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/InstallableRuntime.java
@@ -93,6 +93,31 @@
 	}
 
 	/*
+	 * @see IInstallableRuntime#getLicense(IProgressMonitor)
+	 */
+	public String getLicense(IProgressMonitor monitor) throws CoreException {
+		String featureId = getFeatureId();
+		String featureVersion = getFeatureVersion();
+		String fromSite = getFromSite();
+
+		if (featureId == null || featureVersion == null || fromSite == null)
+			return null;
+
+		ISite site = InstallableRuntime.getSite(fromSite, monitor);
+		ISiteFeatureReference[] featureRefs = site.getFeatureReferences();
+		for (int i = 0; i < featureRefs.length; i++) {
+			if (featureId.equals(featureRefs[i].getName()) && featureVersion.equals(featureRefs[i].getVersionedIdentifier().getVersion().toString())) {
+				IFeature feature = featureRefs[i].getFeature(monitor);
+				IURLEntry license = feature.getLicense();
+				if (license != null)
+					return license.getAnnotation();
+				return null;
+			}
+		}
+		return null;
+	}
+
+	/*
 	 * @see IInstallableRuntime#install(IPath)
 	 */
 	public void install(final IPath path) {
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/InstallableServer.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/InstallableServer.java
index 09637da..f8349b2 100644
--- a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/InstallableServer.java
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/InstallableServer.java
@@ -17,8 +17,10 @@
 import org.eclipse.core.runtime.PluginVersionIdentifier;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.osgi.util.NLS;
+import org.eclipse.update.core.IFeature;
 import org.eclipse.update.core.ISite;
 import org.eclipse.update.core.ISiteFeatureReference;
+import org.eclipse.update.core.IURLEntry;
 import org.eclipse.update.core.VersionedIdentifier;
 import org.eclipse.update.standalone.InstallCommand;
 /**
@@ -118,6 +120,31 @@
 	}
 
 	/*
+	 * @see IInstallableServer#getLicense(IProgressMonitor)
+	 */
+	public String getLicense(IProgressMonitor monitor) throws CoreException {
+		String featureId = getFeatureId();
+		String featureVersion = getFeatureVersion();
+		String fromSite = getFromSite();
+
+		if (featureId == null || featureVersion == null || fromSite == null)
+			return null;
+		
+		ISite site = InstallableRuntime.getSite(fromSite, monitor);
+		ISiteFeatureReference[] featureRefs = site.getFeatureReferences();
+		for (int i = 0; i < featureRefs.length; i++) {
+			if (featureId.equals(featureRefs[i].getVersionedIdentifier().getIdentifier()) && featureVersion.equals(featureRefs[i].getVersionedIdentifier().getVersion().toString())) {
+				IFeature feature = featureRefs[i].getFeature(monitor);
+				IURLEntry license = feature.getLicense();
+				if (license != null)
+					return license.getAnnotation();
+				return null;
+			}
+		}
+		return null;
+	}
+
+	/*
 	 * @see IInstallableServer#install(IProgressMonitor)
 	 */
 	public void install(IProgressMonitor monitor) throws CoreException {
diff --git a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/Messages.java b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/Messages.java
index e84b0b9..82df183 100644
--- a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/Messages.java
+++ b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/Messages.java
@@ -305,6 +305,11 @@
 	public static String wizNewInstallableServerRestart;
 	public static String installableServerCompTree;
 	public static String installableServerLink;
+	public static String wizLicenseTitle;
+	public static String wizLicenseDescription;
+	public static String wizLicenseAccept;
+	public static String wizLicenseDecline;
+	public static String wizLicenseNone;
 
 	public static String errorStartingMonitor;
 	public static String audioPrefSelectFile;
diff --git a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/Messages.properties b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/Messages.properties
index 44a085d..6d600d9 100644
--- a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/Messages.properties
+++ b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/Messages.properties
@@ -58,6 +58,13 @@
 wizNewInstallableServerJob=Installing support for {0}
 wizNewInstallableServerRestart=Installation complete. The new server will not be available until after the workbench is restarted. Do you want to restart now?
 
+# License wizard
+wizLicenseTitle=Feature License
+wizLicenseDescription=Some features have license agreements that you need to accept before proceeding with the installation.
+wizLicenseAccept=I &accept the terms in the license agreement
+wizLicenseDecline=I &do not accept the terms in the license agreement
+wizLicenseNone=Feature does not contain a license.
+
 # Add/Remove Modules
 wizModuleWizardTitle=Add and Remove Projects
 wizModuleTitle=Add and Remove Projects
diff --git a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/wizard/NewInstallableServerWizard.java b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/wizard/NewInstallableServerWizard.java
index b0161c1..ba0090a 100644
--- a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/wizard/NewInstallableServerWizard.java
+++ b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/wizard/NewInstallableServerWizard.java
@@ -18,13 +18,18 @@
 import org.eclipse.core.runtime.Status;
 import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.operation.IRunnableWithProgress;
 
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.ui.PlatformUI;
+import org.eclipse.wst.server.core.TaskModel;
 import org.eclipse.wst.server.core.internal.IInstallableServer;
 import org.eclipse.wst.server.ui.internal.Messages;
+import org.eclipse.wst.server.ui.internal.Trace;
+import org.eclipse.wst.server.ui.internal.wizard.fragment.LicenseWizardFragment;
 import org.eclipse.wst.server.ui.internal.wizard.fragment.NewInstallableServerWizardFragment;
+import org.eclipse.wst.server.ui.wizard.IWizardHandle;
 import org.eclipse.wst.server.ui.wizard.WizardFragment;
 /**
  * A wizard to create a new installable server.
@@ -37,6 +42,7 @@
 		super(Messages.wizNewServerWizardTitle, new WizardFragment() {
 			protected void createChildFragments(List list) {
 				list.add(new NewInstallableServerWizardFragment());
+				list.add(new LicenseWizardFragment());
 				list.add(new WizardFragment() {
 					public void performFinish(IProgressMonitor monitor) throws CoreException {
 						IInstallableServer is = (IInstallableServer) getTaskModel().getObject("installableServer");
@@ -48,6 +54,45 @@
 		});
 	}
 
+	public static void invalidateLicense(TaskModel taskModel) {
+		IInstallableServer is = (IInstallableServer) taskModel.getObject("installableServer");
+		IInstallableServer ls = (IInstallableServer) taskModel.getObject(LicenseWizardFragment.LICENSE_SERVER);
+		if (is == ls)
+			return;
+		
+		taskModel.putObject(LicenseWizardFragment.LICENSE, LicenseWizardFragment.LICENSE_UNKNOWN);
+		taskModel.putObject(LicenseWizardFragment.LICENSE_ACCEPT, null);
+		taskModel.putObject(LicenseWizardFragment.LICENSE_SERVER, null);
+	}
+
+	public static void updateLicense(IWizardHandle wizard, final TaskModel taskModel) {
+		final IInstallableServer is = (IInstallableServer) taskModel.getObject("installableServer");
+		IInstallableServer ls = (IInstallableServer) taskModel.getObject(LicenseWizardFragment.LICENSE_SERVER);
+		if (is == ls)
+			return;
+		
+		IRunnableWithProgress runnable = new IRunnableWithProgress() {
+			public void run(IProgressMonitor monitor) {
+				String license = LicenseWizardFragment.LICENSE_UNKNOWN;
+				try {
+					license = is.getLicense(monitor);
+					if (license == null)
+						license = LicenseWizardFragment.LICENSE_NONE;
+				} catch (CoreException ce) {
+					// ignore
+				}
+				taskModel.putObject(LicenseWizardFragment.LICENSE, license);
+				taskModel.putObject(LicenseWizardFragment.LICENSE_SERVER, is);
+			}
+		};
+		
+		try {
+			wizard.run(true, false, runnable);
+		} catch (Exception e) {
+			Trace.trace(Trace.SEVERE, "Error with runnable", e); //$NON-NLS-1$
+		}
+	}
+
 	/**
 	 * Install a new server adapter.
 	 * @param is
diff --git a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/wizard/fragment/LicenseWizardFragment.java b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/wizard/fragment/LicenseWizardFragment.java
new file mode 100644
index 0000000..3555b42
--- /dev/null
+++ b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/wizard/fragment/LicenseWizardFragment.java
@@ -0,0 +1,66 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.fragment;
+
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.wst.server.ui.internal.ImageResource;
+import org.eclipse.wst.server.ui.internal.Messages;
+import org.eclipse.wst.server.ui.internal.wizard.page.LicenseComposite;
+import org.eclipse.wst.server.ui.wizard.WizardFragment;
+import org.eclipse.wst.server.ui.wizard.IWizardHandle;
+/**
+ * 
+ */
+public class LicenseWizardFragment extends WizardFragment {
+	public static final String LICENSE = "license";
+	public static final String LICENSE_NONE = "none";
+	public static final String LICENSE_UNKNOWN = "unknown";
+	public static final String LICENSE_ACCEPT = "accept";
+	public static final String LICENSE_SERVER = "license_server";
+
+	protected LicenseComposite comp;
+
+	public LicenseWizardFragment() {
+		// do nothing
+	}
+
+	public void enter() {
+		if (comp != null)
+			comp.updateLicense();
+	}
+
+	public boolean hasComposite() {
+		return true;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.wst.server.ui.internal.task.WizardTask#getWizardPage()
+	 */
+	public Composite createComposite(Composite parent, IWizardHandle wizard) {
+		comp = new LicenseComposite(parent, getTaskModel(), wizard);
+		
+		wizard.setTitle(Messages.wizLicenseTitle);
+		wizard.setDescription(Messages.wizLicenseDescription);
+		wizard.setImageDescriptor(ImageResource.getImageDescriptor(ImageResource.IMG_WIZBAN_NEW_SERVER));
+		return comp;
+	}
+
+	public boolean isComplete() {
+		try {
+			Boolean b = (Boolean) getTaskModel().getObject(LicenseWizardFragment.LICENSE_ACCEPT);
+			if (b != null && b.booleanValue())
+				return true;
+		} catch (Exception e) {
+			// ignore
+		}
+		return false;
+	}
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/wizard/fragment/NewInstallableServerWizardFragment.java b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/wizard/fragment/NewInstallableServerWizardFragment.java
index 9716ce2..8a950de 100644
--- a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/wizard/fragment/NewInstallableServerWizardFragment.java
+++ b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/wizard/fragment/NewInstallableServerWizardFragment.java
@@ -13,6 +13,7 @@
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.wst.server.ui.internal.ImageResource;
 import org.eclipse.wst.server.ui.internal.Messages;
+import org.eclipse.wst.server.ui.internal.wizard.NewInstallableServerWizard;
 import org.eclipse.wst.server.ui.internal.wizard.page.NewInstallableServerComposite;
 import org.eclipse.wst.server.ui.wizard.WizardFragment;
 import org.eclipse.wst.server.ui.wizard.IWizardHandle;
@@ -21,6 +22,7 @@
  */
 public class NewInstallableServerWizardFragment extends WizardFragment {
 	protected NewInstallableServerComposite comp;
+	protected IWizardHandle wizard;
 
 	public NewInstallableServerWizardFragment() {
 		// do nothing
@@ -33,7 +35,8 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.wst.server.ui.internal.task.WizardTask#getWizardPage()
 	 */
-	public Composite createComposite(Composite parent, IWizardHandle wizard) {
+	public Composite createComposite(Composite parent, IWizardHandle wizard2) {
+		this.wizard = wizard2;
 		comp = new NewInstallableServerComposite(parent, getTaskModel(), wizard);
 		
 		wizard.setTitle(Messages.wizNewInstallableServerTitle);
@@ -45,4 +48,8 @@
 	public boolean isComplete() {
 		return getTaskModel().getObject("installableServer") != null;
 	}
+
+	public void exit() {
+		NewInstallableServerWizard.updateLicense(wizard, getTaskModel());
+	}
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/wizard/page/LicenseComposite.java b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/wizard/page/LicenseComposite.java
new file mode 100644
index 0000000..1ba894b
--- /dev/null
+++ b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/wizard/page/LicenseComposite.java
@@ -0,0 +1,127 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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 org.eclipse.jface.dialogs.Dialog;
+
+import org.eclipse.wst.server.core.TaskModel;
+import org.eclipse.wst.server.ui.internal.Messages;
+import org.eclipse.wst.server.ui.internal.SWTUtil;
+import org.eclipse.wst.server.ui.internal.wizard.fragment.LicenseWizardFragment;
+import org.eclipse.wst.server.ui.wizard.IWizardHandle;
+
+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.Text;
+/**
+ * A composite used to accept a license.
+ */
+public class LicenseComposite extends Composite {
+	protected TaskModel taskModel;
+	protected IWizardHandle wizard;
+	protected Text licenseText;
+	protected Button accept;
+	protected Button decline;
+	protected boolean accepted;
+
+	/**
+	 * Create a new LicenseComposite.
+	 * 
+	 * @param parent a parent composite
+	 * @param taskModel a task model
+	 * @param wizard the wizard this composite is contained in
+	 */
+	public LicenseComposite(Composite parent, TaskModel taskModel, IWizardHandle wizard) {
+		super(parent, SWT.NONE);
+		this.taskModel = taskModel;
+		this.wizard = wizard;
+		
+		createControl();
+	}
+
+	/**
+	 * 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 = 1;
+		setLayout(layout);
+		//WorkbenchHelp.setHelp(this, ContextIds.SELECT_CLIENT_WIZARD);
+		
+		licenseText = new Text(this, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL | SWT.READ_ONLY | SWT.WRAP);
+		GridData data = new GridData(GridData.FILL_BOTH);
+		//data.widthHint = 200;
+		licenseText.setLayoutData(data);
+		licenseText.setBackground(licenseText.getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND));
+		
+		accept = new Button(this, SWT.RADIO);
+		accept.setText(Messages.wizLicenseAccept);
+		data = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_BEGINNING);
+		data.horizontalIndent = 15;
+		data.verticalIndent = 5;
+		accept.setLayoutData(data);
+		accept.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent e) {
+				accepted = accept.getSelection();
+				taskModel.putObject(LicenseWizardFragment.LICENSE_ACCEPT, new Boolean(accepted));
+				wizard.update();
+			}
+		});
+		
+		decline = new Button(this, SWT.RADIO);
+		data = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_BEGINNING);
+		data.horizontalIndent = 15;
+		data.verticalIndent = 2;
+		decline.setLayoutData(data);
+		decline.setText(Messages.wizLicenseDecline);
+		
+		updateLicense();
+		Dialog.applyDialogFont(this);
+	}
+
+	public void updateLicense() {
+		String license = (String) taskModel.getObject(LicenseWizardFragment.LICENSE);
+		if (license == null)
+			license = LicenseWizardFragment.LICENSE_UNKNOWN;
+		
+		Object acc = taskModel.getObject(LicenseWizardFragment.LICENSE_ACCEPT);
+		if (acc == null) {
+			accepted = false;
+			accept.setSelection(false);
+			decline.setSelection(false);
+		}
+		
+		if (LicenseWizardFragment.LICENSE_NONE.equals(license)) {
+			licenseText.setText(Messages.wizLicenseNone);
+			accept.setEnabled(false);
+			decline.setEnabled(false);
+			accepted = true;
+		} else if (LicenseWizardFragment.LICENSE_UNKNOWN.equals(license)) {
+			licenseText.setText(Messages.wizLicenseNone);
+			accept.setEnabled(true);
+			decline.setEnabled(true);
+		} else {
+			licenseText.setText(license);
+			accept.setEnabled(true);
+			decline.setEnabled(true);
+		}
+		taskModel.putObject(LicenseWizardFragment.LICENSE_ACCEPT, new Boolean(accepted));
+	}
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/wizard/page/NewInstallableServerComposite.java b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/wizard/page/NewInstallableServerComposite.java
index f89a98b..6292e32 100644
--- a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/wizard/page/NewInstallableServerComposite.java
+++ b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/wizard/page/NewInstallableServerComposite.java
@@ -17,6 +17,7 @@
 import org.eclipse.wst.server.ui.internal.Messages;
 import org.eclipse.wst.server.ui.internal.SWTUtil;
 import org.eclipse.wst.server.ui.internal.viewers.InstallableServerComposite;
+import org.eclipse.wst.server.ui.internal.wizard.NewInstallableServerWizard;
 import org.eclipse.wst.server.ui.wizard.IWizardHandle;
 
 import org.eclipse.swt.SWT;
@@ -62,7 +63,7 @@
 		Label label = new Label(this, SWT.WRAP);
 		GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_BEGINNING);
 		data.horizontalSpan = 3;
-		data.widthHint = 200;
+		data.widthHint = 225;
 		label.setLayoutData(data);
 		label.setText(Messages.wizNewInstallableServerMessage);
 		
@@ -80,6 +81,7 @@
 
 	protected void handleSelection(IInstallableServer server) {
 		taskModel.putObject("installableServer", server);
+		NewInstallableServerWizard.invalidateLicense(taskModel);
 		wizard.update();
 	}
 }
\ No newline at end of file