/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * The contents of this file are subject to the terms of the Liferay Enterprise * Subscription License ("License"). You may not use this file except in * compliance with the License. You can obtain a copy of the License by * contacting Liferay, Inc. See the License for the specific language governing * permissions and limitations under the License, including but not limited to * distribution rights of the Software. */ package com.liferay.ide.server.ui.wizard; import com.liferay.ide.server.remote.IRemoteServerWorkingCopy; import com.liferay.ide.server.ui.LiferayServerUI; import com.liferay.ide.ui.util.UIUtil; import java.lang.reflect.InvocationTargetException; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.jface.operation.IRunnableWithProgress; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.IViewPart; import org.eclipse.ui.navigator.CommonViewer; import org.eclipse.wst.server.core.IServer; import org.eclipse.wst.server.core.IServerLifecycleListener; import org.eclipse.wst.server.core.IServerListener; import org.eclipse.wst.server.core.IServerWorkingCopy; import org.eclipse.wst.server.core.ServerCore; import org.eclipse.wst.server.core.ServerEvent; import org.eclipse.wst.server.core.TaskModel; import org.eclipse.wst.server.ui.wizard.IWizardHandle; import org.eclipse.wst.server.ui.wizard.WizardFragment; /** * @author Greg Amerson * @author Simon Jiang */ public class RemoteServerWizardFragment extends WizardFragment { protected RemoteServerComposite composite; protected IStatus lastServerStatus = null; protected IWizardHandle wizard; public RemoteServerWizardFragment() { super(); } @Override public Composite createComposite( Composite parent, IWizardHandle wizard ) { this.wizard = wizard; composite = new RemoteServerComposite( parent, this, wizard ); wizard.setTitle( Msgs.remoteLiferayServer ); wizard.setDescription( Msgs.configureRemoteLiferayServerInstance ); wizard.setImageDescriptor( ImageDescriptor.createFromURL( LiferayServerUI.getDefault().getBundle().getEntry( "/icons/wizban/server_wiz.png" ) ) ); //$NON-NLS-1$ return composite; } @Override public void enter() { if( composite != null && !composite.isDisposed() ) { IServerWorkingCopy serverWC = getServerWorkingCopy(); // need to set defaults now that we have a connection composite.setServer( serverWC ); } } @Override public boolean hasComposite() { return true; } @Override public boolean isComplete() { return lastServerStatus != null && lastServerStatus.getSeverity() != IStatus.ERROR; } @Override public void performFinish( IProgressMonitor monitor ) throws CoreException { try { this.wizard.run( false, false, new IRunnableWithProgress() { public void run( IProgressMonitor monitor ) throws InvocationTargetException, InterruptedException { if( lastServerStatus == null || ( !lastServerStatus.isOK() ) ) { lastServerStatus = getRemoteServerWC().validate( monitor ); if( !lastServerStatus.isOK() ) { throw new InterruptedException( lastServerStatus.getMessage() ); } } } } ); } catch( Exception e ) { } ServerCore.addServerLifecycleListener( new IServerLifecycleListener() { String id = getServerWorkingCopy().getId(); public void serverAdded( final IServer server ) { if( server.getId().equals( id ) ) { UIUtil.async( new Runnable() { public void run() { IViewPart serversView = UIUtil.showView( "org.eclipse.wst.server.ui.ServersView" ); //$NON-NLS-1$ CommonViewer viewer = (CommonViewer) serversView.getAdapter( CommonViewer.class ); viewer.setSelection( new StructuredSelection( server ) ); } } ); ServerCore.removeServerLifecycleListener( this ); server.addServerListener( new IServerListener() { public void serverChanged( ServerEvent event ) { if( event.getServer().getServerState() == IServer.STATE_STARTED ) { server.publish( IServer.PUBLISH_INCREMENTAL, null, null, null ); server.removeServerListener( this ); } } }); } } public void serverChanged( IServer server ) { } public void serverRemoved( IServer server ) { } } ); } protected IServerWorkingCopy getServerWorkingCopy() { return (IServerWorkingCopy) getTaskModel().getObject( TaskModel.TASK_SERVER ); } IRemoteServerWorkingCopy getRemoteServerWC() { return (IRemoteServerWorkingCopy) getServerWorkingCopy().loadAdapter( IRemoteServerWorkingCopy.class, null ); } private static class Msgs extends NLS { public static String configureRemoteLiferayServerInstance; public static String remoteLiferayServer; static { initializeMessages( RemoteServerWizardFragment.class.getName(), Msgs.class ); } } }