/*******************************************************************************
* Copyright (c) 2000-present Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*
*******************************************************************************/
package com.liferay.ide.portlet.ui.wizard;
import com.liferay.ide.core.util.CoreUtil;
import com.liferay.ide.core.util.StringPool;
import com.liferay.ide.portlet.core.operation.INewPortletClassDataModelProperties;
import com.liferay.ide.portlet.ui.PortletUIPlugin;
import com.liferay.ide.project.core.util.ProjectUtil;
import com.liferay.ide.ui.dialog.FilteredTypesSelectionDialogEx;
import com.liferay.ide.ui.util.SWTUtil;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.core.IPackageFragment;
import org.eclipse.jdt.core.IPackageFragmentRoot;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.core.search.IJavaSearchConstants;
import org.eclipse.jdt.core.search.IJavaSearchScope;
import org.eclipse.jdt.internal.core.search.BasicSearchEngine;
import org.eclipse.jdt.internal.ui.dialogs.FilteredTypesSelectionDialog;
import org.eclipse.jem.util.emf.workbench.ProjectUtilities;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.DecoratingLabelProvider;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerFilter;
import org.eclipse.jface.window.Window;
import org.eclipse.jst.j2ee.internal.common.operations.INewJavaClassDataModelProperties;
import org.eclipse.jst.j2ee.internal.plugin.J2EEUIMessages;
import org.eclipse.jst.j2ee.internal.project.J2EEProjectUtilities;
import org.eclipse.jst.j2ee.internal.wizard.NewJavaClassWizardPage;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Cursor;
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.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.dialogs.ElementTreeSelectionDialog;
import org.eclipse.ui.dialogs.ISelectionStatusValidator;
import org.eclipse.ui.model.WorkbenchContentProvider;
import org.eclipse.ui.model.WorkbenchLabelProvider;
import org.eclipse.wst.common.componentcore.internal.operation.IArtifactEditOperationDataModelProperties;
import org.eclipse.wst.common.componentcore.internal.util.IModuleConstants;
import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
/**
* @author Greg Amerson
* @author Cindy Li
*/
@SuppressWarnings( { "restriction", "deprecation" } )
public class NewPortletClassWizardPage extends NewJavaClassWizardPage implements INewPortletClassDataModelProperties
{
protected Button createNewClassRadio;
protected Button customButton;
protected Button folderButton;
protected Text folderText;
protected boolean fragment;
protected boolean initialProject;
protected Button portletClassButton;
protected Label portletClassLabel;
protected Text portletClassText;
protected String projectName;
protected Combo projectNameCombo;
protected Label projectNameLabel;
protected Combo superCombo;
protected Button useDefaultPortletRadio;
public NewPortletClassWizardPage(
IDataModel model, String pageName, String pageDesc, String pageTitle, boolean fragment )
{
super( model, pageName, pageDesc, pageTitle, IModuleConstants.JST_WEB_MODULE );
this.projectName = null;
this.fragment = fragment;
}
public NewPortletClassWizardPage(
IDataModel model, String pageName, String pageDesc, String pageTitle, boolean fragment, boolean initialProject )
{
this( model, pageName, pageDesc, pageTitle, fragment );
this.initialProject = initialProject;
}
protected void createClassnameGroup( Composite parent )
{
// class name
classLabel = new Label( parent, SWT.LEFT );
classLabel.setText( Msgs.portletClassLabel );
classLabel.setLayoutData( new GridData( GridData.HORIZONTAL_ALIGN_FILL ) );
classText = new Text( parent, SWT.SINGLE | SWT.BORDER );
classText.setLayoutData( new GridData( GridData.FILL_HORIZONTAL ) );
synchHelper.synchText( classText, INewJavaClassDataModelProperties.CLASS_NAME, null );
new Label( parent, SWT.LEFT );
}
/**
* Add folder group to composite
*/
protected void createFolderGroup( Composite composite )
{
// folder
Label folderLabel = new Label( composite, SWT.LEFT );
folderLabel.setText( J2EEUIMessages.FOLDER_LABEL );
folderLabel.setLayoutData( new GridData( GridData.HORIZONTAL_ALIGN_FILL ) );
folderText = new Text( composite, SWT.SINGLE | SWT.BORDER );
folderText.setLayoutData( new GridData( GridData.FILL_HORIZONTAL ) );
synchHelper.synchText( folderText, INewJavaClassDataModelProperties.SOURCE_FOLDER, null );
IPackageFragmentRoot root = getSelectedPackageFragmentRoot();
String projectName = model.getStringProperty( IArtifactEditOperationDataModelProperties.PROJECT_NAME );
if( projectName != null && projectName.length() > 0 )
{
IProject targetProject = ProjectUtilities.getProject( projectName );
if( root == null || !root.getJavaProject().getProject().equals( targetProject ) )
{
IFolder folder = getDefaultJavaSourceFolder( targetProject );
if( folder != null )
{
folderText.setText( folder.getFullPath().toPortableString() );
}
}
else
{
folderText.setText( root.getPath().toString() );
}
}
folderButton = new Button( composite, SWT.PUSH );
folderButton.setText( J2EEUIMessages.BROWSE_BUTTON_LABEL );
folderButton.setLayoutData( new GridData( GridData.HORIZONTAL_ALIGN_FILL ) );
folderButton.addSelectionListener( new SelectionListener()
{
public void widgetDefaultSelected( SelectionEvent e )
{
// Do nothing
}
public void widgetSelected( SelectionEvent e )
{
handleFolderButtonPressed();
}
} );
}
protected void createNewPortletClassGroup( Composite parent )
{
new Label( parent, SWT.LEFT );
Composite composite = new Composite( parent, SWT.NONE );
composite.setLayoutData( new GridData( GridData.FILL_HORIZONTAL ) );
composite.setLayout( new GridLayout( 2, false ) );
createNewClassRadio = new Button( composite, SWT.RADIO );
createNewClassRadio.setText( Msgs.createNewPortlet );
useDefaultPortletRadio = new Button( composite, SWT.RADIO );
useDefaultPortletRadio.setText( Msgs.useDefaultPortlet );
new Label( parent, SWT.NONE );
synchHelper.synchRadio( createNewClassRadio, CREATE_NEW_PORTLET_CLASS, null );
synchHelper.synchRadio( useDefaultPortletRadio, USE_DEFAULT_PORTLET_CLASS, null );
createNewClassRadio.addSelectionListener( new SelectionAdapter()
{
@Override
public void widgetSelected( SelectionEvent e )
{
classText.setEnabled( createNewClassRadio.getSelection() );
packageText.setEnabled( createNewClassRadio.getSelection() );
superCombo.setEnabled( createNewClassRadio.getSelection() );
}
} );
}
protected void createPackageGroup( Composite parent )
{
// package
packageLabel = new Label( parent, SWT.LEFT );
packageLabel.setText( J2EEUIMessages.JAVA_PACKAGE_LABEL );
packageLabel.setLayoutData( new GridData( GridData.HORIZONTAL_ALIGN_FILL ) );
packageText = new Text( parent, SWT.SINGLE | SWT.BORDER );
packageText.setLayoutData( new GridData( GridData.FILL_HORIZONTAL ) );
synchHelper.synchText( packageText, INewJavaClassDataModelProperties.JAVA_PACKAGE, null );
IPackageFragment packageFragment = getSelectedPackageFragment();
String targetProject = model.getStringProperty( IArtifactEditOperationDataModelProperties.PROJECT_NAME );
if( packageFragment != null && packageFragment.exists() &&
packageFragment.getJavaProject().getElementName().equals( targetProject ) )
{
IPackageFragmentRoot root = getPackageFragmentRoot( packageFragment );
if( root != null )
{
folderText.setText( root.getPath().toString() );
}
model.setProperty( INewJavaClassDataModelProperties.JAVA_PACKAGE, packageFragment.getElementName() );
}
if( this.fragment )
{
SWTUtil.createLabel( parent, StringPool.EMPTY, 1 );
}
else
{
packageButton = new Button( parent, SWT.PUSH );
packageButton.setText( J2EEUIMessages.BROWSE_BUTTON_LABEL );
packageButton.setLayoutData( new GridData( GridData.HORIZONTAL_ALIGN_FILL ) );
packageButton.addSelectionListener( new SelectionListener()
{
public void widgetDefaultSelected( SelectionEvent e )
{
// Do nothing
}
public void widgetSelected( SelectionEvent e )
{
handlePackageButtonPressed();
}
} );
}
}
protected void createPortletClassGroup( Composite parent )
{
if( !this.fragment && getDataModel().getBooleanProperty( SHOW_NEW_CLASS_OPTION ) )
{
createNewPortletClassGroup( parent );
}
createClassnameGroup( parent );
createPackageGroup( parent );
createSuperclassGroup( parent );
}
/**
* Add project group
*/
protected void createProjectNameGroup( Composite parent )
{
// set up project name label
projectNameLabel = new Label( parent, SWT.NONE );
projectNameLabel.setText( "Portlet plugin project:" ); //$NON-NLS-1$
projectNameLabel.setLayoutData( new GridData() );
// set up project name entry field
projectNameCombo = new Combo( parent, SWT.BORDER | SWT.READ_ONLY );
GridData data = new GridData( GridData.FILL_HORIZONTAL );
data.widthHint = 300;
data.horizontalSpan = 1;
projectNameCombo.setLayoutData( data );
projectNameCombo.addSelectionListener( new SelectionAdapter()
{
public void widgetSelected( SelectionEvent e )
{
super.widgetSelected( e );
IProject project = CoreUtil.getProject( projectNameCombo.getText() );
validateProjectRequirements( project );
getDataModel().notifyPropertyChange( SUPERCLASS, IDataModel.VALID_VALUES_CHG );
getDataModel().notifyPropertyChange( ENTRY_CATEGORY, IDataModel.VALID_VALUES_CHG );
}
} );
synchHelper.synchCombo( projectNameCombo, IArtifactEditOperationDataModelProperties.PROJECT_NAME, null );
initializeProjectList();
new Label( parent, SWT.NONE );
}
protected void createSuperclassGroup( Composite parent )
{
// superclass
superLabel = new Label( parent, SWT.LEFT );
superLabel.setText( J2EEUIMessages.SUPERCLASS_LABEL );
superLabel.setLayoutData( new GridData( GridData.HORIZONTAL_ALIGN_FILL ) );
// superText = new Text(parent, SWT.SINGLE | SWT.BORDER);
// superText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
// synchHelper.synchText(superText,
// INewJavaClassDataModelProperties.SUPERCLASS, null);
superCombo = new Combo( parent, SWT.DROP_DOWN );
superCombo.setLayoutData( new GridData( GridData.FILL_HORIZONTAL ) );
synchHelper.synchCombo( superCombo, INewJavaClassDataModelProperties.SUPERCLASS, null );
if( this.fragment )
{
SWTUtil.createLabel( parent, StringPool.EMPTY, 1 );
}
else
{
superButton = new Button( parent, SWT.PUSH );
superButton.setText( J2EEUIMessages.BROWSE_BUTTON_LABEL );
superButton.setLayoutData( new GridData( GridData.HORIZONTAL_ALIGN_FILL ) );
superButton.addSelectionListener( new SelectionListener()
{
public void widgetDefaultSelected( SelectionEvent e )
{
// Do nothing
}
public void widgetSelected( SelectionEvent e )
{
// handleSuperButtonPressed();
handleClassButtonSelected(
superCombo, "javax.portlet.Portlet", J2EEUIMessages.SUPERCLASS_SELECTION_DIALOG_TITLE, //$NON-NLS-1$
J2EEUIMessages.SUPERCLASS_SELECTION_DIALOG_DESC );
}
} );
}
}
@Override
protected Composite createTopLevelComposite( Composite parent )
{
Composite composite = SWTUtil.createTopComposite( parent, 3 );
if( !this.fragment )
{
createProjectNameGroup( composite );
createFolderGroup( composite );
addSeperator( composite, 3 );
}
createPortletClassGroup( composite );
setFocusOnClassText();
setShellImage();
return composite;
}
@Override
protected void enter()
{
super.enter();
validatePage();
}
protected ViewerFilter getContainerDialogViewerFilter()
{
return new ViewerFilter()
{
public boolean select( Viewer viewer, Object parent, Object element )
{
if( element instanceof IProject )
{
IProject project = (IProject) element;
return project.getName().equals(
model.getProperty( IArtifactEditOperationDataModelProperties.PROJECT_NAME ) );
}
else if( element instanceof IFolder )
{
IFolder folder = (IFolder) element;
// only show source folders
IProject project =
ProjectUtilities.getProject( model.getStringProperty( IArtifactEditOperationDataModelProperties.PROJECT_NAME ) );
IPackageFragmentRoot[] sourceFolders = J2EEProjectUtilities.getSourceContainers( project );
for( int i = 0; i < sourceFolders.length; i++ )
{
if( sourceFolders[i].getResource() != null && sourceFolders[i].getResource().equals( folder ) )
{
return true;
}
else if( ProjectUtil.isParent( folder, sourceFolders[i].getResource() ) )
{
return true;
}
}
}
return false;
}
};
}
protected IFolder getDefaultJavaSourceFolder( IProject project )
{
if( project == null )
{
return null;
}
IPackageFragmentRoot[] sources = J2EEProjectUtilities.getSourceContainers( project );
// Try and return the first source folder
if( sources.length > 0 )
{
try
{
return (IFolder) sources[0].getCorrespondingResource();
}
catch( Exception e )
{
return null;
}
}
return null;
}
/**
* @return
*/
protected IPackageFragment getSelectedPackageFragment()
{
IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
if( window == null )
{
return null;
}
ISelection selection = window.getSelectionService().getSelection();
if( selection == null )
{
return null;
}
IJavaElement element = getInitialJavaElement( selection );
if( element != null )
{
if( element.getElementType() == IJavaElement.PACKAGE_FRAGMENT )
{
return (IPackageFragment) element;
}
else if( element.getElementType() == IJavaElement.COMPILATION_UNIT )
{
IJavaElement parent = ( (ICompilationUnit) element ).getParent();
if( parent.getElementType() == IJavaElement.PACKAGE_FRAGMENT )
{
return (IPackageFragment) parent;
}
}
else if( element.getElementType() == IJavaElement.TYPE )
{
return ( (IType) element ).getPackageFragment();
}
}
return null;
}
protected IPackageFragmentRoot getSelectedPackageFragmentRoot()
{
IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
if( window == null )
{
return null;
}
ISelection selection = window.getSelectionService().getSelection();
if( selection == null )
{
return null;
}
// StructuredSelection stucturedSelection = (StructuredSelection)
// selection;
IJavaElement element = getInitialJavaElement( selection );
if( element != null )
{
if( element.getElementType() == IJavaElement.PACKAGE_FRAGMENT_ROOT )
{
return (IPackageFragmentRoot) element;
}
}
return null;
}
protected IProject getSelectedProject()
{
IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
if( window == null )
{
return null;
}
ISelection selection = window.getSelectionService().getSelection();
if( selection == null )
{
return null;
}
if( !( selection instanceof IStructuredSelection ) )
{
return null;
}
IJavaElement element = getInitialJavaElement( selection );
if( element != null && element.getJavaProject() != null )
{
return element.getJavaProject().getProject();
}
IStructuredSelection stucturedSelection = (IStructuredSelection) selection;
if( stucturedSelection.getFirstElement() instanceof EObject )
{
return ProjectUtilities.getProject( stucturedSelection.getFirstElement() );
}
return getExtendedSelectedProject( stucturedSelection.getFirstElement() );
}
protected String[] getValidationPropertyNames()
{
List<String> validationPropertyNames = new ArrayList<String>();
if( this.fragment )
{
return new String[] { IArtifactEditOperationDataModelProperties.COMPONENT_NAME,
INewJavaClassDataModelProperties.JAVA_PACKAGE, INewJavaClassDataModelProperties.CLASS_NAME,
INewJavaClassDataModelProperties.SUPERCLASS };
}
else
{
validationPropertyNames.add( CREATE_NEW_PORTLET_CLASS );
validationPropertyNames.add( USE_DEFAULT_PORTLET_CLASS );
Collections.addAll( validationPropertyNames, super.getValidationPropertyNames() );
}
return validationPropertyNames.toArray( new String[0] );
}
protected void handleClassButtonSelected( Control control, String baseClass, String title, String message )
{
getControl().setCursor( new Cursor( getShell().getDisplay(), SWT.CURSOR_WAIT ) );
IPackageFragmentRoot packRoot =
(IPackageFragmentRoot) model.getProperty( INewJavaClassDataModelProperties.JAVA_PACKAGE_FRAGMENT_ROOT );
if( packRoot == null )
{
return;
}
// this eliminates the non-exported classpath entries
// final IJavaSearchScope scope =
// TypeSearchEngine.createJavaSearchScopeForAProject(packRoot.getJavaProject(),
// true, true);
IJavaSearchScope scope = null;
try
{
IType type = packRoot.getJavaProject().findType( baseClass );
if( type == null )
{
return;
}
scope = BasicSearchEngine.createHierarchyScope( type );
}
catch( JavaModelException e )
{
PortletUIPlugin.logError( e );
return;
}
// This includes all entries on the classpath. This behavior is
// identical
// to the Super Class Browse Button on the Create new Java Class Wizard
// final IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new
// IJavaElement[] {root.getJavaProject()} );
FilteredTypesSelectionDialog dialog =
new FilteredTypesSelectionDialogEx(
getShell(), false, getWizard().getContainer(), scope, IJavaSearchConstants.CLASS );
dialog.setTitle( title );
dialog.setMessage( message );
if( dialog.open() == Window.OK )
{
IType type = (IType) dialog.getFirstResult();
String classFullPath = J2EEUIMessages.EMPTY_STRING;
if( type != null )
{
classFullPath = type.getFullyQualifiedName();
}
if( control instanceof Text )
{
( (Text) control ).setText( classFullPath );
}
else if( control instanceof Combo )
{
( (Combo) control ).setText( classFullPath );
}
getControl().setCursor( null );
return;
}
getControl().setCursor( null );
}
protected void handleCustomButtonSelected()
{
// boolean enable = customButton.getSelection();
// portletClassLabel.setEnabled(!enable);
// portletClassText.setEnabled(!enable);
// packageText.setEnabled(enable);
// packageButton.setEnabled(enable);
// packageLabel.setEnabled(enable);
// classText.setEnabled(enable);
// classLabel.setEnabled(enable);
// superText.setEnabled(enable);
// superCombo.setEnabled(enable);
// superButton.setEnabled(enable);
// superLabel.setEnabled(enable);
}
/**
* Browse for a new Destination Folder
*/
protected void handleFolderButtonPressed()
{
ISelectionStatusValidator validator = getContainerDialogSelectionValidator();
ViewerFilter filter = getContainerDialogViewerFilter();
ITreeContentProvider contentProvider = new WorkbenchContentProvider();
ILabelProvider labelProvider =
new DecoratingLabelProvider(
new WorkbenchLabelProvider(), PlatformUI.getWorkbench().getDecoratorManager().getLabelDecorator() );
ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog( getShell(), labelProvider, contentProvider );
dialog.setValidator( validator );
dialog.setTitle( J2EEUIMessages.CONTAINER_SELECTION_DIALOG_TITLE );
dialog.setMessage( J2EEUIMessages.CONTAINER_SELECTION_DIALOG_DESC );
dialog.addFilter( filter );
String projectName = model.getStringProperty( IArtifactEditOperationDataModelProperties.PROJECT_NAME );
if( projectName == null || projectName.length() == 0 )
{
return;
}
IProject project = ProjectUtilities.getProject( projectName );
dialog.setInput( ResourcesPlugin.getWorkspace().getRoot() );
if( project != null )
{
dialog.setInitialSelection( project );
}
if( dialog.open() == Window.OK )
{
Object element = dialog.getFirstResult();
try
{
if( element instanceof IContainer )
{
IContainer container = (IContainer) element;
folderText.setText( container.getFullPath().toString() );
// dealWithSelectedContainerResource(container);
}
}
catch( Exception ex )
{
// Do nothing
}
}
}
protected void initializeProjectList()
{
IProject[] workspaceProjects = CoreUtil.getAllProjects();
List<String> items = new ArrayList<String>();
for( int i = 0; i < workspaceProjects.length; i++ )
{
IProject project = workspaceProjects[i];
if( isProjectValid( project ) )
{
items.add( project.getName() );
}
}
if( items.isEmpty() )
{
return;
}
String[] names = new String[items.size()];
for( int i = 0; i < items.size(); i++ )
{
names[i] = (String) items.get( i );
}
projectNameCombo.setItems( names );
IProject selectedProject = null;
try
{
if( model != null )
{
String projectNameFromModel =
model.getStringProperty( IArtifactEditOperationDataModelProperties.COMPONENT_NAME );
if( projectNameFromModel != null && projectNameFromModel.length() > 0 )
{
selectedProject = CoreUtil.getProject( projectNameFromModel );
}
}
}
catch( Exception e )
{
};
try
{
if( selectedProject == null )
{
selectedProject = getSelectedProject();
}
if( selectedProject != null && selectedProject.isAccessible() &&
selectedProject.hasNature( IModuleConstants.MODULE_NATURE_ID ) )
{
projectNameCombo.setText( selectedProject.getName() );
validateProjectRequirements( selectedProject );
model.setProperty( IArtifactEditOperationDataModelProperties.PROJECT_NAME, selectedProject.getName() );
}
}
catch( CoreException ce )
{
// Ignore
}
if( projectName == null && names.length > 0 )
{
projectName = names[0];
}
if( ( projectNameCombo.getText() == null || projectNameCombo.getText().length() == 0 ) && projectName != null )
{
projectNameCombo.setText( projectName );
validateProjectRequirements( CoreUtil.getProject( projectName ) );
model.setProperty( IArtifactEditOperationDataModelProperties.PROJECT_NAME, projectName );
}
projectNameLabel.setEnabled( !initialProject );
projectNameCombo.setEnabled( !initialProject );
}
protected boolean isProjectValid( IProject project )
{
return super.isProjectValid( project ) && ProjectUtil.isPortletProject( project );
}
protected void setFocusOnClassText()
{
if( classText != null )
{
classText.setFocus();
}
}
protected void setShellImage()
{
URL url = PortletUIPlugin.getDefault().getBundle().getEntry( "/icons/e16/portlet.png" ); //$NON-NLS-1$
Image shellImage = ImageDescriptor.createFromURL( url ).createImage();
getShell().setImage( shellImage );
}
protected void validateProjectRequirements( IProject project )
{
super.validateProjectRequirements( project );
}
private static class Msgs extends NLS
{
public static String createNewPortlet;
public static String portletClassLabel;
public static String useDefaultPortlet;
static
{
initializeMessages( NewPortletClassWizardPage.class.getName(), Msgs.class );
}
}
}