Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 56314 Details for
Bug 168954
[clean up] Provide Sort Members
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
Patch based on 3.3M4 code
org.eclipse.jdt.ui-and-core.patch (text/plain), 31.97 KB, created by
Alex Blewitt
on 2007-01-02 21:11:50 EST
(
hide
)
Description:
Patch based on 3.3M4 code
Filename:
MIME Type:
Creator:
Alex Blewitt
Created:
2007-01-02 21:11:50 EST
Size:
31.97 KB
patch
obsolete
>### 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.39 >diff -u -r1.39 MultiFixMessages.java >--- ui/org/eclipse/jdt/internal/ui/fix/MultiFixMessages.java 3 Nov 2006 15:22:02 -0000 1.39 >+++ ui/org/eclipse/jdt/internal/ui/fix/MultiFixMessages.java 3 Jan 2007 00:37:14 -0000 >@@ -89,6 +89,9 @@ > public static String CommentFormatCleanUp_singleLineComments; > public static String CommentFormatFix_description; > >+ public static String SortMembersCleanUp_description; >+ public static String SortMembersFix_description; >+ > static { > // initialize resource bundle > NLS.initializeMessages(BUNDLE_NAME, MultiFixMessages.class); >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.58 >diff -u -r1.58 MultiFixMessages.properties >--- ui/org/eclipse/jdt/internal/ui/fix/MultiFixMessages.properties 8 Nov 2006 17:14:46 -0000 1.58 >+++ ui/org/eclipse/jdt/internal/ui/fix/MultiFixMessages.properties 3 Jan 2007 00:37:14 -0000 >@@ -71,6 +71,11 @@ > > CodeFormatFix_description=Format code > CodeFormatCleanUp_description=Format source code >+ >+SortMembersFix_description=Sort members >+SortMembersCleanUp_description=Sort members >+SortMembersCleanUp_fields=Sort fields as well >+ > ImportsCleanUp_OrganizeImports_Description=Organize imports > CleanUpSaveParticipantPreferenceConfiguration_clean_up_preference_link=The Clean Up profiles can be managed on the <a>Clean Up</a> preference page. > CleanUpSaveParticipantPreferenceConfiguration_use_clean_up_profile_label=Use Clean &Up profile: >Index: ui/org/eclipse/jdt/internal/ui/preferences/cleanup/CleanUpMessages.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/cleanup/CleanUpMessages.java,v >retrieving revision 1.5 >diff -u -r1.5 CleanUpMessages.java >--- ui/org/eclipse/jdt/internal/ui/preferences/cleanup/CleanUpMessages.java 26 Oct 2006 16:07:44 -0000 1.5 >+++ ui/org/eclipse/jdt/internal/ui/preferences/cleanup/CleanUpMessages.java 3 Jan 2007 00:37:15 -0000 >@@ -39,6 +39,10 @@ > public static String CodeFormatingTabPage_Imports_GroupName; > public static String CodeFormatingTabPage_OrganizeImports_CheckBoxLable; > public static String CodeFormatingTabPage_OrganizeImportsSettings_Description; >+ public static String CodeFormatingTabPage_SortMembers_GroupName; >+ public static String CodeFormatingTabPage_SortMembers_CheckBoxLabel; >+ public static String CodeFormatingTabPage_SortMembers_Description; >+ public static String CodeFormatingTabPage_SortMembersFields_CheckBoxLabel; > > public static String CodeStyleTabPage_CheckboxName_ConvertForLoopToEnhanced; > public static String CodeStyleTabPage_CheckboxName_UseBlocks; >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.9 >diff -u -r1.9 CleanUpConfigurationBlock.java >--- ui/org/eclipse/jdt/internal/ui/preferences/cleanup/CleanUpConfigurationBlock.java 2 Nov 2006 10:48:31 -0000 1.9 >+++ ui/org/eclipse/jdt/internal/ui/preferences/cleanup/CleanUpConfigurationBlock.java 3 Jan 2007 00:37:14 -0000 >@@ -18,25 +18,14 @@ > import java.util.Observable; > import java.util.Observer; > >+import org.eclipse.core.resources.IProject; > import org.eclipse.core.runtime.CoreException; > import org.eclipse.core.runtime.preferences.DefaultScope; > import org.eclipse.core.runtime.preferences.IEclipsePreferences; > import org.eclipse.core.runtime.preferences.IScopeContext; > import org.eclipse.core.runtime.preferences.IEclipsePreferences.PreferenceChangeEvent; >- >-import org.eclipse.core.resources.IProject; >- >-import org.eclipse.swt.SWT; >-import org.eclipse.swt.layout.GridData; >-import org.eclipse.swt.widgets.Composite; >-import org.eclipse.swt.widgets.Shell; >-import org.eclipse.swt.widgets.Text; >- > import org.eclipse.jdt.internal.corext.fix.CleanUpConstants; > import org.eclipse.jdt.internal.corext.fix.CleanUpPreferenceUtil; >- >-import org.eclipse.jdt.ui.JavaUI; >- > import org.eclipse.jdt.internal.ui.JavaPlugin; > import org.eclipse.jdt.internal.ui.fix.CodeFormatCleanUp; > import org.eclipse.jdt.internal.ui.fix.CodeStyleCleanUp; >@@ -47,6 +36,7 @@ > import org.eclipse.jdt.internal.ui.fix.ImportsCleanUp; > import org.eclipse.jdt.internal.ui.fix.Java50CleanUp; > import org.eclipse.jdt.internal.ui.fix.PotentialProgrammingProblemsCleanUp; >+import org.eclipse.jdt.internal.ui.fix.SortMembersCleanUp; > import org.eclipse.jdt.internal.ui.fix.StringCleanUp; > import org.eclipse.jdt.internal.ui.fix.UnnecessaryCodeCleanUp; > import org.eclipse.jdt.internal.ui.fix.UnusedCodeCleanUp; >@@ -62,6 +52,12 @@ > import org.eclipse.jdt.internal.ui.wizards.dialogfields.DialogField; > import org.eclipse.jdt.internal.ui.wizards.dialogfields.IDialogFieldListener; > import org.eclipse.jdt.internal.ui.wizards.dialogfields.SelectionButtonDialogField; >+import org.eclipse.jdt.ui.JavaUI; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.layout.GridData; >+import org.eclipse.swt.widgets.Composite; >+import org.eclipse.swt.widgets.Shell; >+import org.eclipse.swt.widgets.Text; > > > /** >@@ -122,7 +118,8 @@ > new PotentialProgrammingProblemsCleanUp(sharedSettings), > new ImportsCleanUp(sharedSettings), > new CodeFormatCleanUp(sharedSettings), >- new CommentFormatCleanUp(sharedSettings) >+ new CommentFormatCleanUp(sharedSettings), >+ new SortMembersCleanUp(sharedSettings), > }; > > createLabel(composite, CleanUpMessages.CleanUpConfigurationBlock_SelectedCleanUps_label, numColumns); >Index: ui/org/eclipse/jdt/internal/ui/preferences/cleanup/CleanUpMessages.properties >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/cleanup/CleanUpMessages.properties,v >retrieving revision 1.7 >diff -u -r1.7 CleanUpMessages.properties >--- ui/org/eclipse/jdt/internal/ui/preferences/cleanup/CleanUpMessages.properties 26 Oct 2006 16:07:44 -0000 1.7 >+++ ui/org/eclipse/jdt/internal/ui/preferences/cleanup/CleanUpMessages.properties 3 Jan 2007 00:37:15 -0000 >@@ -19,6 +19,10 @@ > CodeFormatingTabPage_CheckboxName_FormatMultiLineComments=Mul&ti line comments > CodeFormatingTabPage_OrganizeImportsSettings_Description=The settings for organizing imports can be changed on the Organize Imports preference page. > CodeFormatingTabPage_CheckboxName_FormatSingleLineComments=&Single line comments >+CodeFormatingTabPage_SortMembers_GroupName=Members >+CodeFormatingTabPage_SortMembers_CheckBoxLabel=Sort members >+CodeFormatingTabPage_SortMembers_Description=The settings for sorting members can be changed on the Members Sort Order preference page. >+CodeFormatingTabPage_SortMembersFields_CheckBoxLabel=Also sort fields, enums and initializers > > CodeStyleTabPage_CheckboxName_UseBlocks=Use bloc&ks in if/while/for/do statements > CodeStyleTabPage_RadioName_AlwaysUseBlocks=Al&ways >Index: ui/org/eclipse/jdt/internal/ui/preferences/cleanup/CodeFormatingTabPage.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/cleanup/CodeFormatingTabPage.java,v >retrieving revision 1.2 >diff -u -r1.2 CodeFormatingTabPage.java >--- ui/org/eclipse/jdt/internal/ui/preferences/cleanup/CodeFormatingTabPage.java 17 Oct 2006 16:41:36 -0000 1.2 >+++ ui/org/eclipse/jdt/internal/ui/preferences/cleanup/CodeFormatingTabPage.java 3 Jan 2007 00:37:15 -0000 >@@ -14,22 +14,21 @@ > import java.util.Observable; > import java.util.Observer; > >-import org.eclipse.swt.SWT; >-import org.eclipse.swt.layout.GridData; >-import org.eclipse.swt.widgets.Composite; >-import org.eclipse.swt.widgets.Group; >-import org.eclipse.swt.widgets.Label; >- > import org.eclipse.jdt.internal.corext.fix.CleanUpConstants; >- > import org.eclipse.jdt.internal.ui.fix.CodeFormatCleanUp; > import org.eclipse.jdt.internal.ui.fix.CommentFormatCleanUp; > import org.eclipse.jdt.internal.ui.fix.ICleanUp; > import org.eclipse.jdt.internal.ui.fix.ImportsCleanUp; >+import org.eclipse.jdt.internal.ui.fix.SortMembersCleanUp; > import org.eclipse.jdt.internal.ui.preferences.formatter.JavaPreview; > import org.eclipse.jdt.internal.ui.preferences.formatter.ModifyDialog; > import org.eclipse.jdt.internal.ui.preferences.formatter.ModifyDialogTabPage; > import org.eclipse.jdt.internal.ui.util.PixelConverter; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.layout.GridData; >+import org.eclipse.swt.widgets.Composite; >+import org.eclipse.swt.widgets.Group; >+import org.eclipse.swt.widgets.Label; > > public final class CodeFormatingTabPage extends ModifyDialogTabPage { > >@@ -46,7 +45,8 @@ > fCleanUpPreview= new CleanUpPreview(parent, new ICleanUp[] { > new ImportsCleanUp(fValues), > new CodeFormatCleanUp(fValues), >- new CommentFormatCleanUp(fValues) >+ new CommentFormatCleanUp(fValues), >+ new SortMembersCleanUp(fValues), > }, false); > return fCleanUpPreview; > } >@@ -88,6 +88,21 @@ > createCheckboxPref(importsGroup, numColumns, CleanUpMessages.CodeFormatingTabPage_OrganizeImports_CheckBoxLable, CleanUpConstants.ORGANIZE_IMPORTS, CleanUpModifyDialog.FALSE_TRUE); > > createLabel(CleanUpMessages.CodeFormatingTabPage_OrganizeImportsSettings_Description, importsGroup, numColumns, pixelConverter).setFont(composite.getFont()); >+ >+ Group sortMembersGroup = createGroup(numColumns, composite, CleanUpMessages.CodeFormatingTabPage_SortMembers_GroupName); >+ final CheckboxPreference sortMembersPref = createCheckboxPref(sortMembersGroup, numColumns, CleanUpMessages.CodeFormatingTabPage_SortMembers_CheckBoxLabel, CleanUpConstants.SORT_MEMBERS, CleanUpModifyDialog.FALSE_TRUE); >+ >+ intent(sortMembersGroup); >+ final CheckboxPreference sortMembersFieldsPref = createCheckboxPref(sortMembersGroup, numColumns - 1, CleanUpMessages.CodeFormatingTabPage_SortMembersFields_CheckBoxLabel, CleanUpConstants.SORT_MEMBERS_FIELDS, CleanUpModifyDialog.FALSE_TRUE); >+ >+ sortMembersPref.addObserver( new Observer() { >+ public void update(Observable o, Object arg) { >+ sortMembersFieldsPref.setEnabled(sortMembersPref.getChecked()); >+ } >+ }); >+ sortMembersFieldsPref.setEnabled(sortMembersPref.getChecked()); >+ >+ createLabel(CleanUpMessages.CodeFormatingTabPage_SortMembers_Description, sortMembersGroup, numColumns, pixelConverter).setFont(composite.getFont()); > } > > private Label createLabel(String text, Group group, int numColumns, PixelConverter pixelConverter) { >@@ -98,7 +113,7 @@ > label.setLayoutData(gridData); > return label; > } >- >+ // NOTE: I think this is supposed to be 'indent' ... > private void intent(Group group) { > Label l= new Label(group, SWT.NONE); > GridData gd= new GridData(); >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.10 >diff -u -r1.10 CleanUpConstants.java >--- core extension/org/eclipse/jdt/internal/corext/fix/CleanUpConstants.java 3 Nov 2006 15:22:03 -0000 1.10 >+++ core extension/org/eclipse/jdt/internal/corext/fix/CleanUpConstants.java 3 Jan 2007 00:37:13 -0000 >@@ -750,6 +750,32 @@ > public static final String ORGANIZE_IMPORTS= "cleanup.organize_imports"; //$NON-NLS-1$ > > /** >+ * Should members be sorted? >+ * <br><br> >+ * Possible values: {TRUE, FALSE}<br> >+ * Default value: Value returned by {@link #getEclipseDefaultSettings()}<br> >+ * <br> >+ * @see #SORT_MEMBERS_FIELDS >+ * @see #TRUE >+ * @see #FALSE >+ * @since 3.3 >+ */ >+ public static final String SORT_MEMBERS = "cleanup.sort_members"; //$NON-NLS-1$ >+ >+ /** >+ * If sorting members, should fields also be sorted? >+ * <br><br> >+ * Possible values: {TRUE, FALSE}<br> >+ * Default value: Value returned by {@link #getEclipseDefaultSettings()}<br> >+ * <br> >+ * @see #SORT_MEMBERS >+ * @see #TRUE >+ * @see #FALSE >+ * @since 3.3 >+ */ >+ public static final String SORT_MEMBERS_FIELDS = "cleanup.sort_members_fields"; //$NON-NLS-1$ >+ >+ /** > * Should the Clean Up Wizard be shown when executing the Clean Up Action? > * <br><br> > * Possible values: {<code><b>true</b></code>, <code><b>false</b></code>}<br> >@@ -900,6 +926,9 @@ > > result.put(ORGANIZE_IMPORTS, FALSE); > >+ result.put(SORT_MEMBERS, FALSE); >+ result.put(SORT_MEMBERS_FIELDS, FALSE); >+ > return result; > } > >@@ -973,7 +1002,10 @@ > result.put(FORMAT_JAVADOC, TRUE); > > result.put(ORGANIZE_IMPORTS, TRUE); >- >+ >+ result.put(SORT_MEMBERS, FALSE); >+ result.put(SORT_MEMBERS_FIELDS, FALSE); >+ > return result; > } > >Index: core extension/org/eclipse/jdt/internal/corext/fix/CleanUpRefactoring.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/fix/CleanUpRefactoring.java,v >retrieving revision 1.38 >diff -u -r1.38 CleanUpRefactoring.java >--- core extension/org/eclipse/jdt/internal/corext/fix/CleanUpRefactoring.java 3 Nov 2006 15:22:02 -0000 1.38 >+++ core extension/org/eclipse/jdt/internal/corext/fix/CleanUpRefactoring.java 3 Jan 2007 00:37:14 -0000 >@@ -18,11 +18,9 @@ > import java.util.List; > import java.util.Map; > >-import org.eclipse.text.edits.MultiTextEdit; >-import org.eclipse.text.edits.TextEdit; >-import org.eclipse.text.edits.TextEditGroup; >-import org.eclipse.text.edits.TextEditVisitor; >- >+import org.eclipse.core.resources.IFile; >+import org.eclipse.core.resources.ProjectScope; >+import org.eclipse.core.resources.ResourcesPlugin; > import org.eclipse.core.runtime.Assert; > import org.eclipse.core.runtime.CoreException; > import org.eclipse.core.runtime.IProgressMonitor; >@@ -30,25 +28,6 @@ > import org.eclipse.core.runtime.OperationCanceledException; > import org.eclipse.core.runtime.SubProgressMonitor; > import org.eclipse.core.runtime.jobs.ISchedulingRule; >- >-import org.eclipse.core.resources.IFile; >-import org.eclipse.core.resources.ProjectScope; >-import org.eclipse.core.resources.ResourcesPlugin; >- >-import org.eclipse.ltk.core.refactoring.CategorizedTextEditGroup; >-import org.eclipse.ltk.core.refactoring.Change; >-import org.eclipse.ltk.core.refactoring.CompositeChange; >-import org.eclipse.ltk.core.refactoring.GroupCategory; >-import org.eclipse.ltk.core.refactoring.GroupCategorySet; >-import org.eclipse.ltk.core.refactoring.MultiStateTextFileChange; >-import org.eclipse.ltk.core.refactoring.NullChange; >-import org.eclipse.ltk.core.refactoring.Refactoring; >-import org.eclipse.ltk.core.refactoring.RefactoringStatus; >-import org.eclipse.ltk.core.refactoring.RefactoringTickProvider; >-import org.eclipse.ltk.core.refactoring.TextChange; >-import org.eclipse.ltk.core.refactoring.TextEditBasedChangeGroup; >-import org.eclipse.ltk.core.refactoring.TextFileChange; >- > import org.eclipse.jdt.core.IBuffer; > import org.eclipse.jdt.core.ICompilationUnit; > import org.eclipse.jdt.core.IJavaProject; >@@ -57,7 +36,6 @@ > import org.eclipse.jdt.core.dom.ASTParser; > import org.eclipse.jdt.core.dom.ASTRequestor; > import org.eclipse.jdt.core.dom.CompilationUnit; >- > import org.eclipse.jdt.internal.corext.refactoring.Checks; > import org.eclipse.jdt.internal.corext.refactoring.changes.CompilationUnitChange; > import org.eclipse.jdt.internal.corext.refactoring.changes.DynamicValidationStateChange; >@@ -65,9 +43,6 @@ > import org.eclipse.jdt.internal.corext.refactoring.changes.TextChangeCompatibility; > import org.eclipse.jdt.internal.corext.refactoring.util.RefactoringASTParser; > import org.eclipse.jdt.internal.corext.util.Messages; >- >-import org.eclipse.jdt.ui.JavaElementLabels; >- > import org.eclipse.jdt.internal.ui.fix.CodeFormatCleanUp; > import org.eclipse.jdt.internal.ui.fix.CodeStyleCleanUp; > import org.eclipse.jdt.internal.ui.fix.CommentFormatCleanUp; >@@ -77,12 +52,31 @@ > import org.eclipse.jdt.internal.ui.fix.ImportsCleanUp; > import org.eclipse.jdt.internal.ui.fix.Java50CleanUp; > import org.eclipse.jdt.internal.ui.fix.PotentialProgrammingProblemsCleanUp; >+import org.eclipse.jdt.internal.ui.fix.SortMembersCleanUp; > import org.eclipse.jdt.internal.ui.fix.StringCleanUp; > import org.eclipse.jdt.internal.ui.fix.UnnecessaryCodeCleanUp; > import org.eclipse.jdt.internal.ui.fix.UnusedCodeCleanUp; > import org.eclipse.jdt.internal.ui.fix.VariableDeclarationCleanUp; > import org.eclipse.jdt.internal.ui.javaeditor.ASTProvider; > import org.eclipse.jdt.internal.ui.refactoring.IScheduledRefactoring; >+import org.eclipse.jdt.ui.JavaElementLabels; >+import org.eclipse.ltk.core.refactoring.CategorizedTextEditGroup; >+import org.eclipse.ltk.core.refactoring.Change; >+import org.eclipse.ltk.core.refactoring.CompositeChange; >+import org.eclipse.ltk.core.refactoring.GroupCategory; >+import org.eclipse.ltk.core.refactoring.GroupCategorySet; >+import org.eclipse.ltk.core.refactoring.MultiStateTextFileChange; >+import org.eclipse.ltk.core.refactoring.NullChange; >+import org.eclipse.ltk.core.refactoring.Refactoring; >+import org.eclipse.ltk.core.refactoring.RefactoringStatus; >+import org.eclipse.ltk.core.refactoring.RefactoringTickProvider; >+import org.eclipse.ltk.core.refactoring.TextChange; >+import org.eclipse.ltk.core.refactoring.TextEditBasedChangeGroup; >+import org.eclipse.ltk.core.refactoring.TextFileChange; >+import org.eclipse.text.edits.MultiTextEdit; >+import org.eclipse.text.edits.TextEdit; >+import org.eclipse.text.edits.TextEditGroup; >+import org.eclipse.text.edits.TextEditVisitor; > > public class CleanUpRefactoring extends Refactoring implements IScheduledRefactoring { > >@@ -967,7 +961,8 @@ > new StringCleanUp(), > new ImportsCleanUp(), > new CodeFormatCleanUp(), >- new CommentFormatCleanUp() >+ new CommentFormatCleanUp(), >+ new SortMembersCleanUp(), > }; > } > >@@ -984,7 +979,8 @@ > new StringCleanUp(settings), > new ImportsCleanUp(settings), > new CodeFormatCleanUp(settings), >- new CommentFormatCleanUp(settings) >+ new CommentFormatCleanUp(settings), >+ new SortMembersCleanUp(settings) > }; > } > } >Index: core extension/org/eclipse/jdt/internal/corext/codemanipulation/SortMembersOperation.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/codemanipulation/SortMembersOperation.java,v >retrieving revision 1.16 >diff -u -r1.16 SortMembersOperation.java >--- core extension/org/eclipse/jdt/internal/corext/codemanipulation/SortMembersOperation.java 12 May 2006 13:37:05 -0000 1.16 >+++ core extension/org/eclipse/jdt/internal/corext/codemanipulation/SortMembersOperation.java 3 Jan 2007 00:37:12 -0000 >@@ -10,18 +10,14 @@ > *******************************************************************************/ > package org.eclipse.jdt.internal.corext.codemanipulation; > >-import com.ibm.icu.text.Collator; >- > import java.util.Comparator; > import java.util.List; > >+import org.eclipse.core.resources.IWorkspaceRunnable; >+import org.eclipse.core.resources.ResourcesPlugin; > import org.eclipse.core.runtime.CoreException; > import org.eclipse.core.runtime.IProgressMonitor; > import org.eclipse.core.runtime.jobs.ISchedulingRule; >- >-import org.eclipse.core.resources.IWorkspaceRunnable; >-import org.eclipse.core.resources.ResourcesPlugin; >- > import org.eclipse.jdt.core.ICompilationUnit; > import org.eclipse.jdt.core.dom.AST; > import org.eclipse.jdt.core.dom.ASTNode; >@@ -37,13 +33,13 @@ > import org.eclipse.jdt.core.dom.Type; > import org.eclipse.jdt.core.dom.VariableDeclarationFragment; > import org.eclipse.jdt.core.util.CompilationUnitSorter; >- > import org.eclipse.jdt.internal.corext.dom.ASTNodes; > import org.eclipse.jdt.internal.corext.util.JdtFlags; >- > import org.eclipse.jdt.internal.ui.JavaPlugin; > import org.eclipse.jdt.internal.ui.preferences.MembersOrderPreferenceCache; > >+import com.ibm.icu.text.Collator; >+ > /** > * Orders members is a compilation unit. A working copy must be passed. > */ >@@ -285,6 +281,14 @@ > CompilationUnitSorter.sort(AST.JLS3, fCompilationUnit, fPositions, new DefaultJavaElementComparator(fDoNotSortFields), 0, monitor); > } > >+ // TODO See comment at CompilationUnitSorter.getChange >+ // /** >+ // * Gets the change without applying it. >+ // */ >+ // public TextChange getChange(IProgressMonitor monitor) throws CoreException { >+ // return CompilationUnitSorter.getChange(AST.JLS3, fCompilationUnit, fPositions, new DefaultJavaElementComparator(fDoNotSortFields), 0, monitor); >+ // } >+ > /** > * @return Returns the scheduling rule for this operation > */ >Index: ui/org/eclipse/jdt/internal/ui/fix/SortMembersFix.java >=================================================================== >RCS file: ui/org/eclipse/jdt/internal/ui/fix/SortMembersFix.java >diff -N ui/org/eclipse/jdt/internal/ui/fix/SortMembersFix.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ ui/org/eclipse/jdt/internal/ui/fix/SortMembersFix.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,98 @@ >+/******************************************************************************* >+ * Copyright (c) 2000, 2006 IBM Corporation 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: >+ * IBM Corporation - initial API and implementation >+ *******************************************************************************/ >+package org.eclipse.jdt.internal.ui.fix; >+ >+import org.eclipse.core.runtime.CoreException; >+import org.eclipse.core.runtime.IStatus; >+import org.eclipse.jdt.core.ICompilationUnit; >+import org.eclipse.jdt.core.dom.AST; >+import org.eclipse.jdt.core.dom.CompilationUnit; >+import org.eclipse.jdt.internal.core.SortElementsOperation; >+import org.eclipse.jdt.internal.corext.codemanipulation.SortMembersOperation.DefaultJavaElementComparator; >+import org.eclipse.jdt.internal.corext.fix.IFix; >+import org.eclipse.jdt.internal.corext.refactoring.changes.CompilationUnitChange; >+import org.eclipse.jdt.internal.ui.dialogs.StatusInfo; >+import org.eclipse.jface.text.Document; >+import org.eclipse.jface.text.IDocument; >+import org.eclipse.ltk.core.refactoring.CategorizedTextEditGroup; >+import org.eclipse.ltk.core.refactoring.GroupCategory; >+import org.eclipse.ltk.core.refactoring.GroupCategorySet; >+import org.eclipse.ltk.core.refactoring.TextChange; >+import org.eclipse.text.edits.TextEdit; >+ >+public class SortMembersFix implements IFix { >+ >+ public static IFix createCleanUp(CompilationUnit compilationUnit, boolean sortFields) throws CoreException { >+ >+ ICompilationUnit cu= (ICompilationUnit)compilationUnit.getJavaElement(); >+ String content= cu.getBuffer().getContents(); >+ Document document= new Document(content); >+ cu.becomeWorkingCopy(null, null); >+ >+ ICompilationUnit[] compilationUnits = new ICompilationUnit[] { cu }; >+ >+ // TODO Push this down into SortMembersOperation? >+ // new SortMembersOperation(...).getChange() >+ SortElementsOperation operation = new SortElementsOperation(AST.JLS3, compilationUnits, null, new DefaultJavaElementComparator(!sortFields)); >+ >+ TextEdit edit = operation.calculateEdits(cu, content.toCharArray() , false, document); >+ >+ TextChange change= new CompilationUnitChange(MultiFixMessages.SortMembersFix_description, cu); >+ change.setEdit(edit); >+ >+ // If we've not changed anything, then don't return a change >+ IDocument newDoc = change.getPreviewDocument(null); >+ if (content.equals(newDoc.get())) >+ return null; >+ >+ String label= MultiFixMessages.SortMembersFix_description; >+ change.addTextEditGroup(new CategorizedTextEditGroup(label, new GroupCategorySet(new GroupCategory(label, label, label)))); >+ >+ return new SortMembersFix(change, cu); >+ } >+ >+ >+ private final ICompilationUnit fCompilationUnit; >+ private final TextChange fChange; >+ >+ public SortMembersFix(TextChange change, ICompilationUnit compilationUnit) { >+ fChange= change; >+ fCompilationUnit= compilationUnit; >+ } >+ >+ /** >+ * {@inheritDoc} >+ */ >+ public TextChange createChange() throws CoreException { >+ return fChange; >+ } >+ >+ /** >+ * {@inheritDoc} >+ */ >+ public ICompilationUnit getCompilationUnit() { >+ return fCompilationUnit; >+ } >+ >+ /** >+ * {@inheritDoc} >+ */ >+ public String getDescription() { >+ return MultiFixMessages.CommentFormatFix_description; >+ } >+ >+ /** >+ * {@inheritDoc} >+ */ >+ public IStatus getStatus() { >+ return StatusInfo.OK_STATUS; >+ } >+} >Index: ui/org/eclipse/jdt/internal/ui/fix/SortMembersCleanUp.java >=================================================================== >RCS file: ui/org/eclipse/jdt/internal/ui/fix/SortMembersCleanUp.java >diff -N ui/org/eclipse/jdt/internal/ui/fix/SortMembersCleanUp.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ ui/org/eclipse/jdt/internal/ui/fix/SortMembersCleanUp.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,96 @@ >+/******************************************************************************* >+ * Copyright (c) 2000, 2006 IBM Corporation 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: >+ * IBM Corporation - initial API and implementation >+ *******************************************************************************/ >+package org.eclipse.jdt.internal.ui.fix; >+ >+import java.util.Map; >+ >+import org.eclipse.core.runtime.CoreException; >+import org.eclipse.jdt.core.dom.CompilationUnit; >+import org.eclipse.jdt.internal.corext.fix.CleanUpConstants; >+import org.eclipse.jdt.internal.corext.fix.IFix; >+import org.eclipse.jdt.ui.text.java.IProblemLocation; >+ >+public class SortMembersCleanUp extends AbstractCleanUp { >+ >+ public SortMembersCleanUp() { >+ super(); >+ } >+ >+ public SortMembersCleanUp(Map options) { >+ super(options); >+ } >+ >+ public IFix createFix(CompilationUnit compilationUnit) throws CoreException { >+ if (compilationUnit == null || !isEnabled(CleanUpConstants.SORT_MEMBERS)) >+ return null; >+ >+ return SortMembersFix.createCleanUp(compilationUnit, isEnabled(CleanUpConstants.SORT_MEMBERS_FIELDS)); >+ } >+ >+ /** >+ * {@inheritDoc} >+ */ >+ public IFix createFix(CompilationUnit compilationUnit, IProblemLocation[] problems) throws CoreException { >+ if (compilationUnit == null) >+ return null; >+ >+ return null; >+ } >+ >+ public Map getRequiredOptions() { >+ return null; >+ } >+ >+ /** >+ * {@inheritDoc} >+ */ >+ public String[] getDescriptions() { >+ if (isEnabled(CleanUpConstants.SORT_MEMBERS)) >+ return new String[] {MultiFixMessages.SortMembersCleanUp_description}; >+ >+ return null; >+ } >+ >+ public String getPreview() { >+ boolean sortMembers = isEnabled(CleanUpConstants.SORT_MEMBERS); >+ boolean sortFields = sortMembers && isEnabled(CleanUpConstants.SORT_MEMBERS_FIELDS); >+ StringBuffer buf= new StringBuffer(); >+ buf.append("public class Engine {\n"); //$NON-NLS-1$ >+ if (sortFields) { >+ buf.append(" private String bar;\n"); //$NON-NLS-1$ >+ buf.append(" private String foo;\n"); //$NON-NLS-1$ >+ } else { >+ buf.append(" private String foo;\n"); //$NON-NLS-1$ >+ buf.append(" private String bar;\n"); //$NON-NLS-1$ >+ } >+ if (sortMembers) { >+ buf.append(" private void bar();\n"); //$NON-NLS-1$ >+ buf.append(" private void foo();\n"); //$NON-NLS-1$ >+ } else { >+ buf.append(" private void foo();\n"); //$NON-NLS-1$ >+ buf.append(" private void bar();\n"); //$NON-NLS-1$ >+ } >+ buf.append("}\n"); //$NON-NLS-1$ >+ >+ return buf.toString(); >+ } >+ >+ /** >+ * {@inheritDoc} >+ */ >+ public int maximalNumberOfFixes(CompilationUnit compilationUnit) { >+ return -1; >+ } >+ >+ public boolean canFix(CompilationUnit compilationUnit, IProblemLocation problem) throws CoreException { >+ return false; >+ } >+} >#P org.eclipse.jdt.core >Index: model/org/eclipse/jdt/core/util/CompilationUnitSorter.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/CompilationUnitSorter.java,v >retrieving revision 1.35 >diff -u -r1.35 CompilationUnitSorter.java >--- model/org/eclipse/jdt/core/util/CompilationUnitSorter.java 10 May 2006 18:03:49 -0000 1.35 >+++ model/org/eclipse/jdt/core/util/CompilationUnitSorter.java 3 Jan 2007 00:37:17 -0000 >@@ -328,5 +328,24 @@ > SortElementsOperation operation = new SortElementsOperation(level, compilationUnits, positions, comparator); > operation.runOperation(monitor); > } >+ >+ // TODO Comment >+ // NB This would work, but jdt.core.util doesn't import the refactoring.TextChange :-/ >+ // public static TextChange getChange(int level, ICompilationUnit compilationUnit, >+ // int[] positions, >+ // Comparator comparator, >+ // int options, >+ // IProgressMonitor monitor) throws JavaModelException { >+ // if (compilationUnit == null || comparator == null) { >+ // throw new IllegalArgumentException(); >+ // } >+ // checkASTLevel(level); >+ // ICompilationUnit[] compilationUnits = new ICompilationUnit[] { compilationUnit }; >+ // SortElementsOperation operation = new SortElementsOperation(level, compilationUnits, positions, comparator); >+ // >+ // String source = compilationUnit.getBuffer().getContents(); >+ // Document document= new Document(source); >+ // return operation.calculateEdits(compilationUnit, source, false, document); >+ // } > > } >Index: model/org/eclipse/jdt/internal/core/SortElementsOperation.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SortElementsOperation.java,v >retrieving revision 1.36 >diff -u -r1.36 SortElementsOperation.java >--- model/org/eclipse/jdt/internal/core/SortElementsOperation.java 10 May 2006 18:03:47 -0000 1.36 >+++ model/org/eclipse/jdt/internal/core/SortElementsOperation.java 3 Jan 2007 00:37:18 -0000 >@@ -119,6 +119,13 @@ > * @param source > */ > private String processElement(ICompilationUnit unit, char[] source) { >+ Document document = new Document(new String(source)); >+ calculateEdits(unit, source, true, document); >+ return document.get(); >+ } >+ >+ public TextEdit calculateEdits(ICompilationUnit unit, char[] source, >+ boolean applyEdits,Document document) { > CompilerOptions options = new CompilerOptions(unit.getJavaProject().getOptions(true)); > ASTParser parser = ASTParser.newParser(this.apiLevel); > parser.setCompilerOptions(options.getMap()); >@@ -193,8 +200,6 @@ > markers[i]= new RangeMarker(this.positions[i], 0); > } > } >- String generatedSource = new String(source); >- Document document = new Document(generatedSource); > domUnit.accept(new ASTVisitor() { > public boolean visit(org.eclipse.jdt.core.dom.CompilationUnit compilationUnit) { > if (checkMalformedNodes(compilationUnit)) { >@@ -302,18 +307,19 @@ > insert(edits, markers[i]); > } > } >- try { >- edits.apply(document, TextEdit.UPDATE_REGIONS); >- generatedSource = document.get(); >- if (needPositionsMapping) { >- for (int i= 0, max = markers.length; i < max; i++) { >- this.positions[i]= markers[i].getOffset(); >+ if (applyEdits) { >+ try { >+ edits.apply(document, TextEdit.UPDATE_REGIONS); >+ if (needPositionsMapping) { >+ for (int i= 0, max = markers.length; i < max; i++) { >+ this.positions[i]= markers[i].getOffset(); >+ } > } >+ } catch (BadLocationException e) { >+ // ignore > } >- } catch (BadLocationException e) { >- // ignore > } >- return generatedSource; >+ return edits; > } > > /**
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 168954
:
56111
|
56112
|
56314
|
56315
|
56440
|
56470
|
57040
|
57041
|
57408