### Eclipse Workspace Patch 1.0 #P org.eclipse.pde.ds.ui Index: src/org/eclipse/pde/internal/ds/ui/wizards/DSFileWizardPage.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.pde.ds.ui/src/org/eclipse/pde/internal/ds/ui/wizards/DSFileWizardPage.java,v retrieving revision 1.8 diff -u -r1.8 DSFileWizardPage.java --- src/org/eclipse/pde/internal/ds/ui/wizards/DSFileWizardPage.java 25 Sep 2008 02:37:45 -0000 1.8 +++ src/org/eclipse/pde/internal/ds/ui/wizards/DSFileWizardPage.java 5 Nov 2008 18:25:13 -0000 @@ -13,20 +13,25 @@ *******************************************************************************/ package org.eclipse.pde.internal.ds.ui.wizards; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.jdt.core.IType; import org.eclipse.jdt.core.search.SearchEngine; +import org.eclipse.jdt.internal.core.JavaElement; +import org.eclipse.jdt.internal.ui.packageview.ClassPathContainer; import org.eclipse.jdt.ui.IJavaElementSearchConstants; import org.eclipse.jdt.ui.JavaUI; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.window.Window; +import org.eclipse.pde.internal.core.bundle.WorkspaceBundlePluginModel; +import org.eclipse.pde.internal.core.natures.PDE; import org.eclipse.pde.internal.ds.ui.Activator; import org.eclipse.pde.internal.ds.ui.Messages; +import org.eclipse.pde.internal.ui.util.PDEModelUtility; import org.eclipse.swt.SWT; -import org.eclipse.swt.events.FocusEvent; -import org.eclipse.swt.events.FocusListener; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.events.MouseEvent; @@ -41,6 +46,7 @@ import org.eclipse.ui.PlatformUI; import org.eclipse.ui.dialogs.SelectionDialog; import org.eclipse.ui.dialogs.WizardNewFileCreationPage; +import org.osgi.framework.Constants; public class DSFileWizardPage extends WizardNewFileCreationPage { @@ -48,6 +54,8 @@ private static final String F_FILE_EXTENSION = "xml"; //$NON-NLS-1$ + private static final String F_COMPONENT_NAME = "component.xml"; //$NON-NLS-1$ + private Group fGroup; private Text fDSComponentNameText; @@ -57,8 +65,11 @@ private Label fDSImplementationClassLabel; private Button fDSImplementationClassButton; + private IStructuredSelection fSelection; + public DSFileWizardPage(IStructuredSelection selection) { super(F_PAGE_NAME, selection); + this.fSelection = selection; initialize(); } @@ -72,6 +83,39 @@ setDescription(Messages.DSFileWizardPage_description); // Force the file extension to be 'xml' setFileExtension(F_FILE_EXTENSION); + setFileName(F_COMPONENT_NAME); + } + + private void setComponentName() { + Object element = fSelection.getFirstElement(); + if (element != null) { + IProject project = null; + if (element instanceof IResource) { + project = ((IResource) element).getProject(); + } else if (element instanceof JavaElement) { + project = ((JavaElement) element).getJavaProject() + .getProject(); + } else if (element instanceof ClassPathContainer) { + project = ((ClassPathContainer) element).getJavaProject() + .getProject(); + } + if (project != null) + setComponentNameText(project); + } + } + + private void setComponentNameText(IProject project) { + try { + if (project.hasNature(PDE.PLUGIN_NATURE)) { + WorkspaceBundlePluginModel model = new WorkspaceBundlePluginModel( + project.getFile(PDEModelUtility.F_MANIFEST_FP), null); + model.load(); + String header = model.getBundleModel().getBundle().getHeader( + Constants.BUNDLE_SYMBOLICNAME); + fDSComponentNameText.setText(header); + } + } catch (CoreException e) { + } } protected void createAdvancedControls(Composite parent) { @@ -91,42 +135,20 @@ fDSComponentNameText = new Text(fGroup, SWT.SINGLE | SWT.BORDER); fDSComponentNameText.setLayoutData(nameTextGridData); fDSComponentNameText.setText(""); //$NON-NLS-1$ - fDSComponentNameText.addFocusListener(new FocusListener() { - public void focusGained(FocusEvent e) { - if (!fDSComponentNameText.getText().equals("")) { //$NON-NLS-1$ - return; - } - String text = DSFileWizardPage.this.getFileName(); - if (text != null && text != "") { //$NON-NLS-1$ - int index = text.lastIndexOf("."); //$NON-NLS-1$ - if (index > 0) { - fDSComponentNameText.setText(text.substring(0, index)); - } else { - fDSComponentNameText.setText(text); - } - } - } - - public void focusLost(FocusEvent e) { - } - }); - fDSComponentNameText.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { setPageComplete(checkPageComplete()); } }); - + setComponentName(); // Implementation Class Label - fDSImplementationClassLabel = new Label(fGroup, - SWT.NONE); + fDSImplementationClassLabel = new Label(fGroup, SWT.NONE); fDSImplementationClassLabel .setText(Messages.DSFileWizardPage_implementation_class); // Implementation Class Text - fDSImplementationClassText = new Text(fGroup, - SWT.SINGLE | SWT.BORDER); + fDSImplementationClassText = new Text(fGroup, SWT.SINGLE | SWT.BORDER); GridData classTextGridData = new GridData(GridData.FILL_HORIZONTAL); classTextGridData.horizontalSpan = 1; classTextGridData.horizontalIndent = 3; @@ -139,8 +161,7 @@ }); // Implementation Class Browse Button - fDSImplementationClassButton = new Button(fGroup, - SWT.NONE); + fDSImplementationClassButton = new Button(fGroup, SWT.NONE); fDSImplementationClassButton.setText(Messages.DSFileWizardPage_browse); fDSImplementationClassButton.addMouseListener(new MouseListener() { @@ -189,20 +210,22 @@ } private boolean checkPageComplete() { + if (fDSComponentNameText == null || fDSImplementationClassText == null) { + return false; + } return fDSComponentNameText.getText().length() > 0 && fDSImplementationClassText.getText().length() > 0; } - + /* * (non-Javadoc) * - * @see - * org.eclipse.ui.dialogs.WizardNewFileCreationPage#validateLinkedResource() + * @see org.eclipse.ui.dialogs.WizardNewFileCreationPage#validateLinkedResource() */ protected IStatus validateLinkedResource() { return new Status(IStatus.OK, Activator.PLUGIN_ID, IStatus.OK, "", null); //$NON-NLS-1$ } - + protected void createLinkTarget() { // NO-OP } @@ -211,6 +234,4 @@ return checkPageComplete(); } - - }