diff --git a/core/org.eclipse.cdt.ui.tests/resources/refactoring/GenerateGettersAndSetters.rts b/core/org.eclipse.cdt.ui.tests/resources/refactoring/GenerateGettersAndSetters.rts index 5eca1f4fa5d..85f19404e1a 100644 --- a/core/org.eclipse.cdt.ui.tests/resources/refactoring/GenerateGettersAndSetters.rts +++ b/core/org.eclipse.cdt.ui.tests/resources/refactoring/GenerateGettersAndSetters.rts @@ -54,7 +54,7 @@ public: } void setSystemId(int systemId){ - this.systemId = systemId; + this->systemId = systemId; } }; @@ -104,7 +104,7 @@ public: } void setSystemId(int systemId){ - this.systemId = systemId; + this->systemId = systemId; } }; @@ -168,7 +168,7 @@ namespace Personal { } void setSystemId(int systemId){ - this.systemId = systemId; + this->systemId = systemId; } }; } @@ -221,7 +221,7 @@ namespace Personal { } void setSystemId(int systemId){ - this.systemId = systemId; + this->systemId = systemId; } }; } @@ -286,7 +286,7 @@ public: } void setSystemId(int systemId){ - this.systemId = systemId; + this->systemId = systemId; } }; @@ -329,7 +329,7 @@ public: int GetUniqueId(); void setName(char *name) { - this.name = name; + this->name = name; } int getSystemId(){ @@ -337,7 +337,7 @@ public: } void setSystemId(int systemId){ - this.systemId = systemId; + this->systemId = systemId; } }; @@ -402,7 +402,7 @@ public: } void setSystemId(int systemId){ - this.systemId = systemId; + this->systemId = systemId; } }; @@ -450,7 +450,7 @@ public: void setName(char *name) { - this.name = name; + this->name = name; } int getSystemId(){ @@ -458,7 +458,7 @@ public: } void setSystemId(int systemId){ - this.systemId = systemId; + this->systemId = systemId; } }; @@ -550,7 +550,7 @@ public: void setSystemId(int systemId) { - this.systemId = systemId; + this->systemId = systemId; } char *getName() const @@ -560,7 +560,7 @@ public: void setName(char *name) { - this.name = name; + this->name = name; } Person(int socSecNo); // contructor @@ -631,7 +631,7 @@ public: void setIsOk(bool isOk) { - this.isOk = isOk; + this->isOk = isOk; } int getI() const @@ -641,7 +641,7 @@ public: void setI(int i) { - this.i = i; + this->i = i; } private: @@ -650,3 +650,95 @@ private: #endif +//!Generate Getters and Setters no Methods +//#org.eclipse.cdt.ui.tests.refactoring.gettersandsetters.GenerateGettersAndSettersTest +//@.config +filename=C.h +getters=id +setters=id +//@C.h +#ifndef C_H_ +#define C_H_ + +class Person { +private: + int //$id$//; +}; + +#endif /*C_H_*/ + +//= +#ifndef C_H_ +#define C_H_ + +class Person { +private: + int id; +public: + int getId() const + { + return id; + } + + void setId(int id) + { + this->id = id; + } + +}; + +#endif /*C_H_*/ + +//!Generate Getters and Setters no Methods +//#org.eclipse.cdt.ui.tests.refactoring.gettersandsetters.GenerateGettersAndSettersTest +//@.config +filename=C.h +getters=i +setters=i +//@C.h +/* + * test.h + */ + +#ifndef TEST_H_ +#define TEST_H_ + +//comment1 +class test +{ + int //$i$//; //comment2 + char* b; + //comment3 +}; + +#endif /* TEST_H_ */ + +//= +/* + * test.h + */ + +#ifndef TEST_H_ +#define TEST_H_ + +//comment1 +class test +{ + int i; //comment2 + char* b; +public: + int getI() const + { + return i; + } + + void setI(int i) + { + this->i = i; + } + + //comment3 +}; + +#endif /* TEST_H_ */ + diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/gettersandsetters/FunctionFactory.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/gettersandsetters/FunctionFactory.java index 0fa8ac1a282..685bbb3440b 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/gettersandsetters/FunctionFactory.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/gettersandsetters/FunctionFactory.java @@ -92,6 +92,7 @@ public class FunctionFactory { litExpr.setValue("this"); //$NON-NLS-1$ fieldRef.setFieldOwner(litExpr); fieldRef.setFieldName(fieldDeclaration.getDeclarators()[0].getName()); + fieldRef.setIsPointerDereference(true); binExpr.setOperand1(fieldRef); binExpr.setOperator(IASTBinaryExpression.op_assign); CPPASTIdExpression idExpr = new CPPASTIdExpression(); diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/gettersandsetters/GenerateGettersAndSettersInputPage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/gettersandsetters/GenerateGettersAndSettersInputPage.java index 6c8f57dcdbb..4e28ca81d51 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/gettersandsetters/GenerateGettersAndSettersInputPage.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/gettersandsetters/GenerateGettersAndSettersInputPage.java @@ -13,7 +13,6 @@ package org.eclipse.cdt.internal.ui.refactoring.gettersandsetters; import java.util.ArrayList; -import org.eclipse.cdt.core.dom.ast.IASTSimpleDeclaration; import org.eclipse.jface.viewers.CheckStateChangedEvent; import org.eclipse.jface.viewers.ICheckStateListener; import org.eclipse.ltk.ui.refactoring.UserInputWizardPage; @@ -22,6 +21,10 @@ import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.dialogs.ContainerCheckedTreeViewer; +import org.eclipse.cdt.core.dom.ast.IASTSimpleDeclaration; + +import org.eclipse.cdt.internal.ui.refactoring.gettersandsetters.GetterAndSetterContext.FieldWrapper; + public class GenerateGettersAndSettersInputPage extends UserInputWizardPage { private GetterAndSetterContext context; @@ -50,6 +53,23 @@ public class GenerateGettersAndSettersInputPage extends UserInputWizardPage { variableSelectionView.setAutoExpandLevel(3); variableSelectionView.setInput(""); //$NON-NLS-1$ + for(Object obj : variableSelectionView.getVisibleExpandedElements()) { + System.out.println(); + if (obj instanceof FieldWrapper){ + if(obj.toString().contains(context.selectedName.getRawSignature())){ + variableSelectionView.setSubtreeChecked(obj, true); + } + } + } + ArrayList checkedFunctions = new ArrayList(); + for(Object currentElement : variableSelectionView.getCheckedElements()){ + if (currentElement instanceof GetterSetterInsertEditProvider) { + GetterSetterInsertEditProvider editProvider = (GetterSetterInsertEditProvider) currentElement; + checkedFunctions.add(editProvider); + } + } + context.selectedFunctions = checkedFunctions; + variableSelectionView.addCheckStateListener(new ICheckStateListener(){ public void checkStateChanged(CheckStateChangedEvent event) { @@ -61,12 +81,8 @@ public class GenerateGettersAndSettersInputPage extends UserInputWizardPage { } } context.selectedFunctions = checkedFunctions; - } - }); } - } - } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/gettersandsetters/GenerateGettersAndSettersRefactoring.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/gettersandsetters/GenerateGettersAndSettersRefactoring.java index 5bbba632fa5..d6f10a31693 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/gettersandsetters/GenerateGettersAndSettersRefactoring.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/gettersandsetters/GenerateGettersAndSettersRefactoring.java @@ -11,11 +11,15 @@ *******************************************************************************/ package org.eclipse.cdt.internal.ui.refactoring.gettersandsetters; +import java.util.ArrayList; +import java.util.Vector; + import org.eclipse.core.resources.IFile; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.OperationCanceledException; import org.eclipse.core.runtime.SubMonitor; +import org.eclipse.jface.text.Region; import org.eclipse.jface.viewers.ISelection; import org.eclipse.ltk.core.refactoring.RefactoringStatus; @@ -24,6 +28,8 @@ import org.eclipse.cdt.core.dom.ast.IASTDeclaration; import org.eclipse.cdt.core.dom.ast.IASTDeclarator; import org.eclipse.cdt.core.dom.ast.IASTFunctionDeclarator; import org.eclipse.cdt.core.dom.ast.IASTFunctionDefinition; +import org.eclipse.cdt.core.dom.ast.IASTName; +import org.eclipse.cdt.core.dom.ast.IASTNode; import org.eclipse.cdt.core.dom.ast.IASTSimpleDeclaration; import org.eclipse.cdt.core.dom.ast.cpp.CPPASTVisitor; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCompositeTypeSpecifier; @@ -62,10 +68,18 @@ public class GenerateGettersAndSettersRefactoring extends CRefactoring { private void initRefactoring(IProgressMonitor pm) { loadTranslationUnit(initStatus, pm); context.setUnit(unit); + context.selectedName = getSelectedName(); findDeclarations(); - } + private IASTName getSelectedName() { + Vector names = findAllMarkedNames(); + if (names.size() < 1) { + return null; + } + return names.lastElement(); + } + protected void findDeclarations() { unit.accept(new CPPASTVisitor() { @@ -106,19 +120,20 @@ public class GenerateGettersAndSettersRefactoring extends CRefactoring { @Override protected void collectModifications(IProgressMonitor pm,ModificationCollector collector) throws CoreException, OperationCanceledException { -// egtodo -// ASTRewrite rewriter = collector.rewriterForTranslationUnit(unit); - + ArrayList getterAndSetters = new ArrayList(); for(GetterSetterInsertEditProvider currentProvider : context.selectedFunctions){ -// egtodo -// TextEditGroup editGroup = new TextEditGroup(Messages.GenerateGettersAndSettersRefactoring_Insert + currentProvider.toString()); - ICPPASTCompositeTypeSpecifier classDefinition = (ICPPASTCompositeTypeSpecifier) context.existingFunctionDeclarations.get(context.existingFunctionDeclarations.size()-1).getParent(); - AddDeclarationNodeToClassChange.createChange(classDefinition, VisibilityEnum.v_public, currentProvider.getFunction(), false, collector); + getterAndSetters.add(currentProvider.getFunction()); } + ICPPASTCompositeTypeSpecifier classDefinition = (ICPPASTCompositeTypeSpecifier) context.existingFields.get(context.existingFields.size()-1).getParent(); + + AddDeclarationNodeToClassChange.createChange(classDefinition, VisibilityEnum.v_public, getterAndSetters, false, collector); } public GetterAndSetterContext getContext() { return context; } - + + public Region getRegion() { + return region; + } } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/gettersandsetters/GenerateGettersAndSettersRefactoringWizard.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/gettersandsetters/GenerateGettersAndSettersRefactoringWizard.java index 5dea88b9b2f..43dd4faad62 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/gettersandsetters/GenerateGettersAndSettersRefactoringWizard.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/gettersandsetters/GenerateGettersAndSettersRefactoringWizard.java @@ -18,8 +18,7 @@ import org.eclipse.ltk.ui.refactoring.UserInputWizardPage; * @author Thomas Corbat * */ -public class GenerateGettersAndSettersRefactoringWizard extends - RefactoringWizard { +public class GenerateGettersAndSettersRefactoringWizard extends RefactoringWizard { private final GenerateGettersAndSettersRefactoring refactoring; diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/gettersandsetters/GetterAndSetterContext.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/gettersandsetters/GetterAndSetterContext.java index 49f1d854d11..89755aee7d5 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/gettersandsetters/GetterAndSetterContext.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/gettersandsetters/GetterAndSetterContext.java @@ -17,6 +17,7 @@ import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.Viewer; import org.eclipse.cdt.core.dom.ast.IASTFunctionDefinition; +import org.eclipse.cdt.core.dom.ast.IASTName; import org.eclipse.cdt.core.dom.ast.IASTSimpleDeclaration; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; @@ -29,7 +30,8 @@ public class GetterAndSetterContext implements ITreeContentProvider{ public ArrayList existingFunctionDeclarations = new ArrayList(); public ArrayList selectedFunctions = new ArrayList(); private IASTTranslationUnit unit; - + public IASTName selectedName; + public Object[] getChildren(Object parentElement) { ArrayList children = new ArrayList();