blob: bad5423dd0d2e81dbb5206be5454c23612bfa0bf [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011, 2013 RĂ¼diger Herrmann 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:
* RĂ¼diger Herrmann - initial API and implementation
* EclipseSource - ongoing development
******************************************************************************/
package org.eclipse.rap.tools.launch.rwt.internal.tab;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.jdt.core.*;
import org.eclipse.rap.tools.launch.rwt.internal.config.RWTLaunchConfig;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.*;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.*;
public class ProjectSection extends RWTLaunchTab {
private Text txtProject;
private Button btnSelectProject;
public String getName() {
return "Project";
}
public void createControl( Composite parent ) {
Group group = new Group( parent, SWT.NONE );
group.setText( "Project" );
group.setLayoutData( new GridData( SWT.FILL, SWT.TOP, true, false ) );
group.setLayout( new GridLayout( 2, false ) );
txtProject = new Text( group, SWT.BORDER );
txtProject.setLayoutData( new GridData( SWT.FILL, SWT.TOP, true, false ) );
txtProject.addModifyListener( new TextModifyListener() );
btnSelectProject = new Button( group, SWT.PUSH );
btnSelectProject.setText( "&Browse..." );
GridData gridData = new GridData( SWT.LEFT, SWT.TOP, false, false );
btnSelectProject.setLayoutData( gridData );
btnSelectProject.addSelectionListener( new JavaProjectSelectionListener() );
setControl( group );
HelpContextIds.assign( getControl(), HelpContextIds.MAIN_TAB );
}
public void initializeFrom( RWTLaunchConfig launchConfig ) {
txtProject.setText( launchConfig.getProjectName() );
}
public void performApply( RWTLaunchConfig launchConfig ) {
launchConfig.setProjectName( txtProject.getText().trim() );
}
private void handleSelectJavaProject() {
IJavaProject project = selectJavaProject();
if( project != null ) {
String projectName = project.getElementName();
txtProject.setText( projectName );
}
}
private IJavaProject selectJavaProject() {
Shell shell = getShell();
JavaProjectSelectionDialog dialog = new JavaProjectSelectionDialog( shell );
dialog.setInitialSelection( getJavaProject() );
return dialog.open();
}
private IJavaProject getJavaProject() {
IJavaProject result = null;
String projectName = txtProject.getText().trim();
if( projectName.length() > 0 ) {
result = getJavaModel().getJavaProject( projectName );
}
return result;
}
private static IJavaModel getJavaModel() {
IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
return JavaCore.create( workspaceRoot );
}
private class JavaProjectSelectionListener extends SelectionAdapter {
public void widgetSelected( SelectionEvent event ) {
handleSelectJavaProject();
updateLaunchConfigurationDialog();
}
}
private class TextModifyListener implements ModifyListener {
public void modifyText( ModifyEvent event ) {
updateLaunchConfigurationDialog();
}
}
}