/*************************************************************************************************** * Copyright (c) 2005, 2007 Eteration A.S. and Gorkem Ercan. * 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: Gorkem Ercan - initial API and implementation **************************************************************************************************/ package org.eclipse.jst.server.generic.ui.internal; import java.lang.reflect.InvocationTargetException; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Path; import org.eclipse.jface.operation.IRunnableWithProgress; import org.eclipse.jst.server.generic.core.internal.GenericServerRuntime; import org.eclipse.jst.server.generic.core.internal.Trace; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.DirectoryDialog; import org.eclipse.wst.server.core.internal.IInstallableRuntime; import org.eclipse.wst.server.core.internal.ServerPlugin; import org.eclipse.wst.server.ui.wizard.IWizardHandle; public class InstallableRuntimeDecorator implements GenericServerCompositeDecorator { private GenericServerRuntime fRuntime; private IWizardHandle fWizard; public InstallableRuntimeDecorator(IWizardHandle wizard, GenericServerRuntime runtime) { fRuntime = runtime; fWizard = wizard; } public void decorate(final GenericServerComposite composite) { final IInstallableRuntime ir = ServerPlugin .findInstallableRuntime(fRuntime.getRuntime().getRuntimeType() .getId()); Button install = SWTUtil.createButton(composite, GenericServerUIMessages.installServerButton); install.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent se) { DirectoryDialog dialog = new DirectoryDialog(composite .getShell()); dialog.setMessage(GenericServerUIMessages.installationDirectory); final String selectedDirectory = dialog.open(); if (selectedDirectory != null) { IRunnableWithProgress runnable = new IRunnableWithProgress() { public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { try { ir.install(new Path(selectedDirectory), new NullProgressMonitor()); } catch (CoreException e) { Trace.trace(Trace.SEVERE, "Error installing runtime", e); //$NON-NLS-1$ } } }; try { fWizard.run(true, false, runnable); } catch (Exception e) { Trace.trace(Trace.SEVERE, "Error installing runtime", e); //$NON-NLS-1$ } } } }); } public boolean validate() { return false; } }