### Eclipse Workspace Patch 1.0
#P org.eclipse.jdt.ui
Index: ui/org/eclipse/jdt/internal/ui/fix/MultiFixMessages.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/MultiFixMessages.java,v
retrieving revision 1.32
diff -u -r1.32 MultiFixMessages.java
--- ui/org/eclipse/jdt/internal/ui/fix/MultiFixMessages.java 13 Oct 2006 13:40:55 -0000 1.32
+++ ui/org/eclipse/jdt/internal/ui/fix/MultiFixMessages.java 16 Oct 2006 10:45:17 -0000
@@ -22,8 +22,13 @@
public static String CleanUpRefactoringWizard_CleanUpConfigurationPage_link;
public static String CleanUpRefactoringWizard_CleanUpConfigurationPage_linkToolTip;
public static String CleanUpRefactoringWizard_CleanUpConfigurationPage_message;
- public static String CleanUpRefactoringWizard_CleanUpConfigurationPage_SettingsForProjectX;
public static String CleanUpRefactoringWizard_CleanUpConfigurationPage_title;
+ public static String CleanUpRefactoringWizard_Configure_Button;
+ public static String CleanUpRefactoringWizard_ConfiguredProfiles_Label;
+ public static String CleanUpRefactoringWizard_configureProjectSettings_link;
+ public static String CleanUpRefactoringWizard_Profile_TableHeader;
+ public static String CleanUpRefactoringWizard_Project_TableHeader;
+ public static String CleanUpRefactoringWizard_unknownProfile_Name;
public static String StringMultiFix_AddMissingNonNls_description;
public static String StringMultiFix_RemoveUnnecessaryNonNls_description;
public static String StringCleanUp_RemoveNLSTag_label;
Index: ui/org/eclipse/jdt/internal/ui/fix/CleanUpRefactoringWizard.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/CleanUpRefactoringWizard.java,v
retrieving revision 1.53
diff -u -r1.53 CleanUpRefactoringWizard.java
--- ui/org/eclipse/jdt/internal/ui/fix/CleanUpRefactoringWizard.java 13 Oct 2006 13:40:55 -0000 1.53
+++ ui/org/eclipse/jdt/internal/ui/fix/CleanUpRefactoringWizard.java 16 Oct 2006 10:45:17 -0000
@@ -10,17 +10,31 @@
*******************************************************************************/
package org.eclipse.jdt.internal.ui.fix;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.core.runtime.preferences.InstanceScope;
+
+import org.eclipse.core.resources.ProjectScope;
+
import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Link;
-import org.eclipse.swt.widgets.Text;
+import org.eclipse.swt.widgets.Shell;
-import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.viewers.ColumnLayoutData;
+import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.ViewerComparator;
import org.eclipse.ui.dialogs.PreferencesUtil;
@@ -29,16 +43,150 @@
import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.internal.corext.fix.CleanUpConstants;
import org.eclipse.jdt.internal.corext.fix.CleanUpRefactoring;
-import org.eclipse.jdt.internal.corext.util.Messages;
+import org.eclipse.jdt.ui.JavaUI;
+
+import org.eclipse.jdt.internal.ui.JavaPlugin;
import org.eclipse.jdt.internal.ui.JavaPluginImages;
import org.eclipse.jdt.internal.ui.preferences.CleanUpPreferencePage;
+import org.eclipse.jdt.internal.ui.preferences.cleanup.CleanUpProfileManager;
+import org.eclipse.jdt.internal.ui.preferences.cleanup.CleanUpProfileVersioner;
+import org.eclipse.jdt.internal.ui.preferences.formatter.ProfileStore;
+import org.eclipse.jdt.internal.ui.preferences.formatter.ProfileManager.Profile;
+import org.eclipse.jdt.internal.ui.wizards.dialogfields.IListAdapter;
+import org.eclipse.jdt.internal.ui.wizards.dialogfields.ListDialogField;
public class CleanUpRefactoringWizard extends RefactoringWizard {
+ private static class ProjectProfileLableProvider extends LabelProvider implements ITableLabelProvider {
+
+ private Hashtable fProfileIdsTable;
+
+ /**
+ * {@inheritDoc}
+ */
+ public Image getColumnImage(Object element, int columnIndex) {
+ return null;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public String getColumnText(Object element, int columnIndex) {
+ if (columnIndex == 0) {
+ return ((IJavaProject)element).getProject().getName();
+ } else if (columnIndex == 1) {
+
+ if (fProfileIdsTable == null)
+ fProfileIdsTable= loadProfiles();
+
+ InstanceScope instanceScope= new InstanceScope();
+ IEclipsePreferences instancePreferences= instanceScope.getNode(JavaUI.ID_PLUGIN);
+
+ final String workbenchProfileId;
+ if (instancePreferences.get(CleanUpProfileManager.PROFILE_KEY, null) != null) {
+ workbenchProfileId= instancePreferences.get(CleanUpProfileManager.PROFILE_KEY, null);
+ } else {
+ workbenchProfileId= CleanUpProfileManager.DEFAULT_PROFILE;
+ }
+
+ return getProjectProfileName((IJavaProject)element, fProfileIdsTable, workbenchProfileId);
+ }
+ return null;
+ }
+
+ private Hashtable loadProfiles() {
+ InstanceScope instanceScope= new InstanceScope();
+
+ CleanUpProfileVersioner versioner= new CleanUpProfileVersioner();
+ ProfileStore profileStore= new ProfileStore(CleanUpConstants.CLEANUP_PROFILES, versioner);
+
+ List list= null;
+ try {
+ list= profileStore.readProfiles(instanceScope);
+ } catch (CoreException e1) {
+ JavaPlugin.log(e1);
+ }
+ if (list == null)
+ list= new ArrayList();
+
+ CleanUpProfileManager.addBuiltInProfiles(list, versioner);
+
+ Hashtable profileIdsTable= new Hashtable();
+ for (Iterator iterator= list.iterator(); iterator.hasNext();) {
+ Profile profile= (Profile)iterator.next();
+ profileIdsTable.put(profile.getID(), profile);
+ }
+
+ return profileIdsTable;
+ }
+
+ private Profile getProjectProfile(final IJavaProject project, Hashtable profileIdsTable) {
+ ProjectScope projectScope= new ProjectScope(project.getProject());
+ IEclipsePreferences node= projectScope.getNode(JavaUI.ID_PLUGIN);
+ if (node.get(CleanUpProfileManager.PROFILE_KEY, null) == null)
+ return null;
+
+ String id= node.get(CleanUpProfileManager.PROFILE_KEY, null);
+ return (Profile)profileIdsTable.get(id);
+ }
+
+ private String getProjectProfileName(final IJavaProject project, Hashtable profileIdsTable, String workbenchProfileId) {
+ Profile profile= getProjectProfile(project, profileIdsTable);
+ if (profile == null)
+ profile= (Profile)profileIdsTable.get(workbenchProfileId);
+
+ String profileName;
+ if (profile != null) {
+ profileName= profile.getName();
+ } else {
+ profileName= MultiFixMessages.CleanUpRefactoringWizard_unknownProfile_Name;
+ }
+ return profileName;
+ }
+
+ public void reset() {
+ fProfileIdsTable= null;
+ }
+ }
+
private static class CleanUpConfigurationPage extends UserInputWizardPage {
+ private static final class ProfileTableAdapter implements IListAdapter {
+ private final ProjectProfileLableProvider fProvider;
+ private final Shell fShell;
+
+ private ProfileTableAdapter(ProjectProfileLableProvider provider, Shell shell) {
+ fProvider= provider;
+ fShell= shell;
+ }
+
+ public void customButtonPressed(ListDialogField field, int index) {
+ openPropertyDialog(field);
+ }
+
+ public void doubleClicked(ListDialogField field) {
+ openPropertyDialog(field);
+ }
+
+ private void openPropertyDialog(ListDialogField field) {
+ IJavaProject project= (IJavaProject)field.getSelectedElements().get(0);
+ PreferencesUtil.createPropertyDialogOn(fShell, project, CleanUpPreferencePage.PROP_ID, null, null).open();
+ fProvider.reset();
+ field.refresh();
+ }
+
+ public void selectionChanged(ListDialogField field) {
+ if (field.getSelectedElements().size() != 1) {
+ field.enableButton(0, false);
+ } else {
+ field.enableButton(0, true);
+ }
+ }
+ }
+
private final CleanUpRefactoring fCleanUpRefactoring;
public CleanUpConfigurationPage(CleanUpRefactoring refactoring) {
@@ -55,19 +203,38 @@
composite.setLayout(new GridLayout(1, true));
composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
- Link link= new Link(composite, SWT.WRAP | SWT.RIGHT);
- link.setText(MultiFixMessages.CleanUpRefactoringWizard_CleanUpConfigurationPage_link);
- link.setToolTipText(MultiFixMessages.CleanUpRefactoringWizard_CleanUpConfigurationPage_linkToolTip);
- GridData gridData= new GridData(GridData.FILL, GridData.CENTER, true, false);
- gridData.widthHint= convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH);
- link.setLayoutData(gridData);
- link.setFont(composite.getFont());
-
- final Label label = new Label(composite, SWT.WRAP);
- label.setFont(composite.getFont());
- label.setText(MultiFixMessages.CleanUpRefactoringWizard_CleanUpConfigurationPage_detaileTitle);
- label.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
-
+ Label label= new Label(composite, SWT.NONE);
+ label.setText(MultiFixMessages.CleanUpRefactoringWizard_ConfiguredProfiles_Label);
+
+ Composite tableComposite= new Composite(composite, SWT.NONE);
+ tableComposite.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
+ tableComposite.setLayout(new GridLayout(3, false));
+
+ ProjectProfileLableProvider tableLabelProvider= new ProjectProfileLableProvider();
+ IListAdapter listAdapter= new ProfileTableAdapter(tableLabelProvider, getShell());
+ String[] buttons= new String[] {
+ MultiFixMessages.CleanUpRefactoringWizard_Configure_Button
+ };
+ ListDialogField settingsField= new ListDialogField(listAdapter, buttons, tableLabelProvider);
+
+ String[] headerNames= new String[] {
+ MultiFixMessages.CleanUpRefactoringWizard_Project_TableHeader,
+ MultiFixMessages.CleanUpRefactoringWizard_Profile_TableHeader
+ };
+ ColumnLayoutData[] columns = new ColumnLayoutData[] {
+ new ColumnWeightData(1, 100, true),
+ new ColumnWeightData(2, 20, true)
+ };
+ settingsField.setTableColumns(new ListDialogField.ColumnsDescription(columns , headerNames, true));
+ settingsField.setViewerComparator(new ViewerComparator());
+
+ settingsField.doFillIntoGrid(tableComposite, 3);
+ GridData data= (GridData)settingsField.getListControl(null).getLayoutData();
+ data.grabExcessHorizontalSpace= true;
+
+ settingsField.setElements(Arrays.asList(fCleanUpRefactoring.getProjects()));
+ settingsField.selectFirstElement();
+
final Text detailField= new Text(composite, SWT.BORDER | SWT.FLAT | SWT.MULTI | SWT.READ_ONLY | SWT.H_SCROLL | SWT.V_SCROLL);
detailField.setText(getCleanUpsInfo());
final GridData data= new GridData(GridData.FILL_HORIZONTAL | GridData.FILL_VERTICAL);
@@ -85,10 +252,10 @@
detailField.setText(getCleanUpsInfo());
}
});
-
+
setControl(composite);
}
-
+
private String getCleanUpsInfo() {
StringBuffer result= new StringBuffer();
Index: ui/org/eclipse/jdt/internal/ui/fix/MultiFixMessages.properties
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/MultiFixMessages.properties,v
retrieving revision 1.49
diff -u -r1.49 MultiFixMessages.properties
--- ui/org/eclipse/jdt/internal/ui/fix/MultiFixMessages.properties 13 Oct 2006 13:40:55 -0000 1.49
+++ ui/org/eclipse/jdt/internal/ui/fix/MultiFixMessages.properties 16 Oct 2006 10:45:17 -0000
@@ -75,10 +75,15 @@
CleanUpRefactoringWizard_Annotations_sectionName=Annotations
CleanUpRefactoringWizard_UnnecessaryCode_tabLabel=&Unnecessary Code
CleanUpRefactoringWizard_removeThis_checkBoxLabel=&Only if necessary
+CleanUpRefactoringWizard_ConfiguredProfiles_Label=Configured profiles:
CleanUpRefactoringWizard_UnnecessaryCode_section=Unnecessary code
CleanUpRefactoringWizard_DisableAllButton_label=&Deselect All
CleanUpRefactoringWizard_Remove_sectionTitle=Remove
+CleanUpRefactoringWizard_unknownProfile_Name=Unknown
+CleanUpRefactoringWizard_Project_TableHeader=Project
+CleanUpRefactoringWizard_Profile_TableHeader=Profile
CleanUpRefactoringWizard_previewLabel_text=Pre&view:
+CleanUpRefactoringWizard_Configure_Button=Configure...
CleanUpRefactoringWizard_MissingCode_tabLabel=&Missing Code
CleanUpRefactoringWizard_EnableAllButton_label=S&elect All
CleanUpRefactoringWizard_SelectCompilationUnitsPage_name=Select Compilation Units Page
@@ -125,9 +130,9 @@
CleanUpRefactoringWizard_CleanUpConfigurationPage_linkToolTip=Shows the clean up preference page
CleanUpRefactoringWizard_CleanUpConfigurationPage_detaileTitle=Details:
CleanUpRefactoringWizard_CleanUpConfigurationPage_title=Clean Up Configuration
-CleanUpRefactoringWizard_CleanUpConfigurationPage_SettingsForProjectX=Settings for Project ''{0}'':
CleanUpRefactoringWizard_CleanUpConfigurationPage_message=The clean up configurations
CleanUpRefactoringWizard_CleanUpConfigurationPage_link=The Clean Up settings can be changed on the Clean Up preference page.
+CleanUpRefactoringWizard_configureProjectSettings_link=Using profile ''{0}'' for files in project ''{1}''. (Configure...)
CommentFormatFix_description=Format comment
Index: ui/org/eclipse/jdt/internal/ui/fix/AbstractCleanUp.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/AbstractCleanUp.java,v
retrieving revision 1.20
diff -u -r1.20 AbstractCleanUp.java
--- ui/org/eclipse/jdt/internal/ui/fix/AbstractCleanUp.java 15 Sep 2006 12:16:27 -0000 1.20
+++ ui/org/eclipse/jdt/internal/ui/fix/AbstractCleanUp.java 16 Oct 2006 10:45:17 -0000
@@ -164,10 +164,7 @@
protected abstract int createFlag(Map options);
- /**
- * @param project
- */
- public void loadSettings(IJavaProject project) {
+ private void loadSettings(IJavaProject project) {
IScopeContext context;
if (project != null) {
Index: core extension/org/eclipse/jdt/internal/corext/fix/CleanUpConstants.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/fix/CleanUpConstants.java,v
retrieving revision 1.4
diff -u -r1.4 CleanUpConstants.java
--- core extension/org/eclipse/jdt/internal/corext/fix/CleanUpConstants.java 13 Oct 2006 13:40:55 -0000 1.4
+++ core extension/org/eclipse/jdt/internal/corext/fix/CleanUpConstants.java 16 Oct 2006 10:45:16 -0000
@@ -734,6 +734,17 @@
* @since 3.3
*/
public static final String SHOW_CLEAN_UP_WIZARD= "cleanup.showwizard"; //$NON-NLS-1$
+
+ /**
+ * A key to a serialized string in the InstanceScope
containing all the
+ * profiles.
+ * Following code snippet can load the profiles:
+ *
+ * List profiles= new ProfileStore(CLEANUP_PROFILES, new CleanUpVersioner()).readProfiles(new InstanceScope());
+ *
+ * @since 3.3
+ */
+ public static final String CLEANUP_PROFILES= "org.eclipse.jdt.ui.cleanupprofiles"; //$NON-NLS-1$
public static Map getEclipseDefaultSettings() {
HashMap result= new HashMap();
Index: ui/org/eclipse/jdt/internal/ui/preferences/cleanup/CleanUpProfileManager.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/cleanup/CleanUpProfileManager.java,v
retrieving revision 1.2
diff -u -r1.2 CleanUpProfileManager.java
--- ui/org/eclipse/jdt/internal/ui/preferences/cleanup/CleanUpProfileManager.java 20 Sep 2006 09:48:46 -0000 1.2
+++ ui/org/eclipse/jdt/internal/ui/preferences/cleanup/CleanUpProfileManager.java 16 Oct 2006 10:45:17 -0000
@@ -40,7 +40,7 @@
super(addBuiltInProfiles(profiles, profileVersioner), context, preferencesAccess, profileVersioner, KEY_SETS, PROFILE_KEY, FORMATTER_SETTINGS_VERSION);
}
- private static List addBuiltInProfiles(List profiles, IProfileVersioner profileVersioner) {
+ public static List addBuiltInProfiles(List profiles, IProfileVersioner profileVersioner) {
final Profile eclipseProfile= new BuiltInProfile(ECLIPSE_PROFILE, CleanUpMessages.CleanUpProfileManager_ProfileName_EclipseBuildIn, getEclipseSettings(), 2, profileVersioner.getCurrentVersion(), profileVersioner.getProfileKind());
profiles.add(eclipseProfile);
return profiles;
Index: ui/org/eclipse/jdt/internal/ui/preferences/cleanup/CleanUpConfigurationBlock.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/cleanup/CleanUpConfigurationBlock.java,v
retrieving revision 1.5
diff -u -r1.5 CleanUpConfigurationBlock.java
--- ui/org/eclipse/jdt/internal/ui/preferences/cleanup/CleanUpConfigurationBlock.java 13 Oct 2006 13:40:55 -0000 1.5
+++ ui/org/eclipse/jdt/internal/ui/preferences/cleanup/CleanUpConfigurationBlock.java 16 Oct 2006 10:45:17 -0000
@@ -64,7 +64,6 @@
public class CleanUpConfigurationBlock extends ProfileConfigurationBlock {
private static final String CLEANUP_PAGE_SETTINGS_KEY= "cleanup_page"; //$NON-NLS-1$
- private static final String CLEANUP_PROFILES_PREFERENCE_KEY= "org.eclipse.jdt.ui.cleanupprofiles"; //$NON-NLS-1$
private static final String DIALOGSTORE_LASTSAVELOADPATH= JavaUI.ID_PLUGIN + ".cleanup"; //$NON-NLS-1$
private final IScopeContext fCurrContext;
@@ -85,7 +84,7 @@
}
protected ProfileStore createProfileStore(IProfileVersioner versioner) {
- return new ProfileStore(CLEANUP_PROFILES_PREFERENCE_KEY, versioner);
+ return new ProfileStore(CleanUpConstants.CLEANUP_PROFILES, versioner);
}
protected ProfileManager createProfileManager(List profiles, IScopeContext context, PreferencesAccess access, IProfileVersioner profileVersioner) {