### Eclipse Workspace Patch 1.0 #P org.eclipse.jdt.ui Index: plugin.properties =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.ui/plugin.properties,v retrieving revision 1.435 diff -u -r1.435 plugin.properties --- plugin.properties 6 Sep 2006 16:20:45 -0000 1.435 +++ plugin.properties 17 Oct 2006 14:55:57 -0000 @@ -1014,3 +1014,5 @@ #--- Work in Progress contentAssistAdvancedName= Advanced + +JavaPropertiesTab=Java Index: plugin.xml =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.ui/plugin.xml,v retrieving revision 1.705 diff -u -r1.705 plugin.xml --- plugin.xml 6 Sep 2006 16:20:45 -0000 1.705 +++ plugin.xml 17 Oct 2006 14:56:04 -0000 @@ -5479,5 +5479,31 @@ + + + + + + + + + + + + + + + + + Index: META-INF/MANIFEST.MF =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.ui/META-INF/MANIFEST.MF,v retrieving revision 1.43 diff -u -r1.43 MANIFEST.MF --- META-INF/MANIFEST.MF 11 Sep 2006 13:19:18 -0000 1.43 +++ META-INF/MANIFEST.MF 17 Oct 2006 14:56:04 -0000 @@ -127,7 +127,8 @@ org.eclipse.ltk.ui.refactoring;bundle-version="[3.3.0,4.0.0)", org.eclipse.ui.forms;bundle-version="[3.2.0,4.0.0)", org.eclipse.ui.navigator;bundle-version="[3.2.0,4.0.0)", - org.eclipse.jdt.core.manipulation;bundle-version="[1.1.0,2.0.0)" + org.eclipse.jdt.core.manipulation;bundle-version="[1.1.0,2.0.0)", + org.eclipse.ui.views.properties.tabbed;bundle-version="[3.2.0,4.0.0)" Eclipse-LazyStart: true Plugin-Class: org.eclipse.jdt.internal.ui.JavaPlugin Import-Package: com.ibm.icu.text Index: ui/org/eclipse/jdt/internal/ui/javaeditor/JavaEditor.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/JavaEditor.java,v retrieving revision 1.409 diff -u -r1.409 JavaEditor.java --- ui/org/eclipse/jdt/internal/ui/javaeditor/JavaEditor.java 17 Aug 2006 13:29:59 -0000 1.409 +++ ui/org/eclipse/jdt/internal/ui/javaeditor/JavaEditor.java 17 Oct 2006 14:56:06 -0000 @@ -155,6 +155,9 @@ import org.eclipse.ui.views.contentoutline.ContentOutline; import org.eclipse.ui.views.contentoutline.IContentOutlinePage; +import org.eclipse.ui.views.properties.IPropertySheetPage; +import org.eclipse.ui.views.properties.tabbed.ITabbedPropertySheetPageContributor; +import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage; import org.eclipse.jdt.core.IClassFile; import org.eclipse.jdt.core.ICompilationUnit; @@ -2036,10 +2039,22 @@ if (required == IContextProvider.class) return JavaUIHelp.getHelpContextProvider(this, IJavaHelpContextIds.JAVA_EDITOR); + + if (required == IPropertySheetPage.class) { + return new TabbedPropertySheetPage(buildTabbedPropertySheetPageContributor()); + } return super.getAdapter(required); } + private ITabbedPropertySheetPageContributor buildTabbedPropertySheetPageContributor() { + return new ITabbedPropertySheetPageContributor() { + public String getContributorId() { + return "javaEditor"; //$NON-NLS-1$ + } + }; + } + /** * React to changed selection. * Index: ui/org/eclipse/jdt/internal/ui/javaeditor/JavaEditorSelectionConverter.java =================================================================== RCS file: ui/org/eclipse/jdt/internal/ui/javaeditor/JavaEditorSelectionConverter.java diff -N ui/org/eclipse/jdt/internal/ui/javaeditor/JavaEditorSelectionConverter.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ ui/org/eclipse/jdt/internal/ui/javaeditor/JavaEditorSelectionConverter.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,119 @@ +/******************************************************************************* + * Copyright (c) 2006 Oracle. 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: + * Oracle - initial API and implementation + ******************************************************************************/ +package org.eclipse.jdt.internal.ui.javaeditor; + +import org.eclipse.core.resources.IFile; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.text.ITextSelection; +import org.eclipse.ui.IEditorInput; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IFileEditorInput; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.views.properties.tabbed.ISelectionConverter; +import org.eclipse.jdt.core.ICompilationUnit; +import org.eclipse.jdt.core.IJavaElement; +import org.eclipse.jdt.core.JavaCore; +import org.eclipse.jdt.core.JavaModelException; +import org.eclipse.jdt.internal.ui.JavaPlugin; + +/** + * An implementation of the tabbed properties ISelectionConverter for the JavaEditor. + * It takes an ISelection which from the JavaEditor will be an ITextSelection and converts + * it into an IStructuredSelection containing an IJavaElement. + * + * An empty StructuredSelection is returned if multiple IJavaElements are included + * in the ITextSelection + * + * @author Karen Moore + */ +public class JavaEditorSelectionConverter + implements ISelectionConverter + { + public IStructuredSelection structuredSelection(ISelection selection) { + if (selection instanceof IStructuredSelection) { + return (IStructuredSelection) selection; + } + int offset = ((ITextSelection) selection).getOffset(); + int length = ((ITextSelection) selection).getLength(); + + ICompilationUnit unit = getCompilationUnit(); + IJavaElement firstJavaElement = javaElementAt(offset, unit); + if (firstJavaElement == null) { + return StructuredSelection.EMPTY; + } + for (int i = offset+1; i < offset + length; i++) { + IJavaElement nextJavaElement = javaElementAt(i, unit); + if (!firstJavaElement.equals(nextJavaElement)) { + return StructuredSelection.EMPTY; + } + } + return new StructuredSelection(firstJavaElement); + } + + private IJavaElement javaElementAt(int offset, ICompilationUnit compilationUnit) { + IJavaElement javaElement = null; + if (compilationUnit != null) { + try { + javaElement = compilationUnit.getElementAt(offset); + } catch (JavaModelException ex) { + // fall through + } + } + return javaElement; + } + + private ICompilationUnit getCompilationUnit() { + IEditorPart editor = getActiveEditor(); + if (editor == null) { + return null; + } + IEditorInput editorInput = editor.getEditorInput(); + if (editorInput instanceof IFileEditorInput) { + IFileEditorInput fileInput = (IFileEditorInput) editorInput; + IFile file = fileInput.getFile(); + return JavaCore.createCompilationUnitFrom(file); + } + return null; + } + + private IEditorPart getActiveEditor() { + IWorkbenchWindow activeWorkbenchWindow = JavaPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow(); + if (activeWorkbenchWindow == null) { + return null; + } + IWorkbenchPage activePage = activeWorkbenchWindow.getActivePage(); + if (activePage == null) { + return null; + } + return activePage.getActiveEditor(); + } + +// +// public IJpaFile persistenceFileFor(IEditorInput input) { +// IFile file = null; +// if (input instanceof IFileEditorInput) { +// IFileEditorInput fileInput = (IFileEditorInput) input; +// file = fileInput.getFile(); +// } +// else if (input instanceof IClassFileEditorInput) { +// IClassFileEditorInput classFileEditorInput = (IClassFileEditorInput) input; +// IClassFile classFile = classFileEditorInput.getClassFile(); +// classFile.getResource(); +// +// } +// if (file == null) { +// return null; +// } +// return JpaCorePlugin.getJpaFile(file); +// } + }