1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

Cosmetics.

This commit is contained in:
Sergey Prigogin 2011-01-06 02:36:29 +00:00
parent a5a8d0ed20
commit 415903e978

View file

@ -35,23 +35,27 @@ import org.eclipse.cdt.internal.ui.refactoring.utils.VisibilityEnum;
* the correct insertion point for the desired visibility. * the correct insertion point for the desired visibility.
* *
* @author Mirko Stocker * @author Mirko Stocker
*
*/ */
public class AddDeclarationNodeToClassChange { public class AddDeclarationNodeToClassChange {
private final ICPPASTCompositeTypeSpecifier nodeClass; private final ICPPASTCompositeTypeSpecifier nodeClass;
private final VisibilityEnum visibility; private final VisibilityEnum visibility;
private ArrayList<IASTNode> fieldNodes = new ArrayList<IASTNode>(); private ArrayList<IASTNode> fieldNodes = new ArrayList<IASTNode>();
private final ModificationCollector collector; private final ModificationCollector collector;
public static void createChange(ICPPASTCompositeTypeSpecifier nodeClass, VisibilityEnum visibility, IASTNode fieldNodes, boolean isField, ModificationCollector collector) { public static void createChange(ICPPASTCompositeTypeSpecifier nodeClass,
VisibilityEnum visibility, IASTNode fieldNodes, boolean isField,
ModificationCollector collector) {
new AddDeclarationNodeToClassChange(nodeClass, visibility, fieldNodes, collector, isField); new AddDeclarationNodeToClassChange(nodeClass, visibility, fieldNodes, collector, isField);
} }
public static void createChange(ICPPASTCompositeTypeSpecifier nodeClass, VisibilityEnum visibility, ArrayList<IASTNode> fieldNodes, boolean isField, ModificationCollector collector) { public static void createChange(ICPPASTCompositeTypeSpecifier nodeClass,
VisibilityEnum visibility, ArrayList<IASTNode> fieldNodes, boolean isField,
ModificationCollector collector) {
new AddDeclarationNodeToClassChange(nodeClass, visibility, fieldNodes, collector, isField); new AddDeclarationNodeToClassChange(nodeClass, visibility, fieldNodes, collector, isField);
} }
private AddDeclarationNodeToClassChange(ICPPASTCompositeTypeSpecifier nodeClass, VisibilityEnum visibility, ArrayList<IASTNode> fieldNodes, ModificationCollector collector, boolean isField) { private AddDeclarationNodeToClassChange(ICPPASTCompositeTypeSpecifier nodeClass,
VisibilityEnum visibility, ArrayList<IASTNode> fieldNodes,
ModificationCollector collector, boolean isField) {
this.fieldNodes = fieldNodes; this.fieldNodes = fieldNodes;
this.nodeClass = nodeClass; this.nodeClass = nodeClass;
this.visibility = visibility; this.visibility = visibility;
@ -59,7 +63,9 @@ public class AddDeclarationNodeToClassChange {
createRewrites(isField); createRewrites(isField);
} }
private AddDeclarationNodeToClassChange(ICPPASTCompositeTypeSpecifier nodeClass, VisibilityEnum visibility, IASTNode fieldNodes, ModificationCollector collector, boolean isField) { private AddDeclarationNodeToClassChange(ICPPASTCompositeTypeSpecifier nodeClass,
VisibilityEnum visibility, IASTNode fieldNodes, ModificationCollector collector,
boolean isField) {
this.nodeClass = nodeClass; this.nodeClass = nodeClass;
this.visibility = visibility; this.visibility = visibility;
this.fieldNodes.add(fieldNodes); this.fieldNodes.add(fieldNodes);
@ -73,29 +79,29 @@ public class AddDeclarationNodeToClassChange {
IASTDeclaration[] members = nodeClass.getMembers(); IASTDeclaration[] members = nodeClass.getMembers();
VisibilityEnum currentVisibility = VisibilityEnum.v_private; VisibilityEnum currentVisibility = VisibilityEnum.v_private;
if(IASTCompositeTypeSpecifier.k_struct == nodeClass.getKey()) { if (IASTCompositeTypeSpecifier.k_struct == nodeClass.getKey()) {
currentVisibility = VisibilityEnum.v_public; currentVisibility = VisibilityEnum.v_public;
} }
// Find the insert location by iterating over the elements of the class // Find the insert location by iterating over the elements of the class
// and remembering the last element with the matching visibility // and remembering the last element with the matching visibility
for(int i = 0; i < members.length; i++) { for (int i = 0; i < members.length; i++) {
IASTDeclaration declaration = members[i]; IASTDeclaration declaration = members[i];
if(declaration instanceof ICPPASTVisibilityLabel){ if (declaration instanceof ICPPASTVisibilityLabel) {
currentVisibility = VisibilityEnum.from((ICPPASTVisibilityLabel) declaration); currentVisibility = VisibilityEnum.from((ICPPASTVisibilityLabel) declaration);
} }
if (declaration instanceof IASTSimpleDeclaration) { if (declaration instanceof IASTSimpleDeclaration) {
IASTSimpleDeclaration simple = (IASTSimpleDeclaration) declaration; IASTSimpleDeclaration simple = (IASTSimpleDeclaration) declaration;
IASTDeclarator[] declarators = simple.getDeclarators(); IASTDeclarator[] declarators = simple.getDeclarators();
if(declarators.length > 0 && declarators[0] != null && declarators[0] instanceof IASTFunctionDeclarator){ if (declarators.length > 0 && declarators[0] != null &&
if(currentVisibility.equals(visibility)){ declarators[0] instanceof IASTFunctionDeclarator) {
if (currentVisibility.equals(visibility)) {
lastFunctionDeclaration = i; lastFunctionDeclaration = i;
} }
} else if (declarators.length > 0 && declarators[0] != null) {
} else if (declarators.length > 0 && declarators[0] != null){ if (currentVisibility.equals(visibility)) {
if(currentVisibility.equals(visibility)){
lastFieldDeclaration = i; lastFieldDeclaration = i;
} }
} }
@ -103,29 +109,30 @@ public class AddDeclarationNodeToClassChange {
} }
IASTDeclaration nextFunctionDeclaration = null; IASTDeclaration nextFunctionDeclaration = null;
if (lastFunctionDeclaration < members.length-1 && lastFunctionDeclaration >= 0) if (lastFunctionDeclaration < members.length - 1 && lastFunctionDeclaration >= 0)
nextFunctionDeclaration = members[lastFunctionDeclaration+1]; nextFunctionDeclaration = members[lastFunctionDeclaration+1];
IASTDeclaration nextFieldDeclaration = null; IASTDeclaration nextFieldDeclaration = null;
if (lastFieldDeclaration < members.length-1 && lastFieldDeclaration >= 0) if (lastFieldDeclaration < members.length - 1 && lastFieldDeclaration >= 0)
nextFieldDeclaration = members[lastFieldDeclaration +1]; nextFieldDeclaration = members[lastFieldDeclaration + 1];
createInsert(isField, nextFunctionDeclaration, nextFieldDeclaration, currentVisibility); createInsert(isField, nextFunctionDeclaration, nextFieldDeclaration, currentVisibility);
} }
private void createInsert(boolean isField, IASTDeclaration nextFunctionDeclaration, IASTDeclaration nextFieldDeclaration, VisibilityEnum currentVisibility) { private void createInsert(boolean isField, IASTDeclaration nextFunctionDeclaration,
if(isField) { IASTDeclaration nextFieldDeclaration, VisibilityEnum currentVisibility) {
if(nextFieldDeclaration != null) { if (isField) {
if (nextFieldDeclaration != null) {
insertBefore(nextFieldDeclaration); insertBefore(nextFieldDeclaration);
} else if(nextFunctionDeclaration != null){ } else if (nextFunctionDeclaration != null) {
insertBefore(nextFunctionDeclaration); insertBefore(nextFunctionDeclaration);
} else { } else {
insertAtTheEnd(currentVisibility); insertAtTheEnd(currentVisibility);
} }
} else { } else {
if(nextFunctionDeclaration != null){ if (nextFunctionDeclaration != null) {
insertBefore(nextFunctionDeclaration); insertBefore(nextFunctionDeclaration);
} else if(nextFieldDeclaration != null) { } else if (nextFieldDeclaration != null) {
insertBefore(nextFieldDeclaration); insertBefore(nextFieldDeclaration);
} else { } else {
insertAtTheEnd(currentVisibility); insertAtTheEnd(currentVisibility);
@ -135,26 +142,27 @@ public class AddDeclarationNodeToClassChange {
private void insertBefore(IASTNode nearestNode) { private void insertBefore(IASTNode nearestNode) {
ASTRewrite rewrite = collector.rewriterForTranslationUnit(nearestNode.getTranslationUnit()); ASTRewrite rewrite = collector.rewriterForTranslationUnit(nearestNode.getTranslationUnit());
for(IASTNode node: fieldNodes) { for (IASTNode node : fieldNodes) {
rewrite.insertBefore(nearestNode.getParent(), nearestNode, node, createEditDescription()); rewrite.insertBefore(nearestNode.getParent(), nearestNode, node, createEditDescription());
} }
} }
private void insertAtTheEnd(VisibilityEnum currentVisibility) { private void insertAtTheEnd(VisibilityEnum currentVisibility) {
ASTRewrite rewrite = collector.rewriterForTranslationUnit(nodeClass.getTranslationUnit()); ASTRewrite rewrite = collector.rewriterForTranslationUnit(nodeClass.getTranslationUnit());
if(! currentVisibility.equals(visibility)) { if (!currentVisibility.equals(visibility)) {
ICPPASTVisibilityLabel label = new CPPASTVisibilityLabel(visibility.getICPPASTVisiblityLabelVisibility()); ICPPASTVisibilityLabel label =
new CPPASTVisibilityLabel(visibility.getICPPASTVisiblityLabelVisibility());
rewrite.insertBefore(nodeClass, null, label, createEditDescription()); rewrite.insertBefore(nodeClass, null, label, createEditDescription());
} }
for(IASTNode node: fieldNodes) { for (IASTNode node : fieldNodes) {
rewrite.insertBefore(nodeClass, null, node, createEditDescription()); rewrite.insertBefore(nodeClass, null, node, createEditDescription());
} }
} }
private TextEditGroup createEditDescription() { private TextEditGroup createEditDescription() {
return new TextEditGroup(NLS.bind(Messages.AddDeclarationNodeToClassChange_AddDeclaration, nodeClass.getName())); return new TextEditGroup(NLS.bind(Messages.AddDeclarationNodeToClassChange_AddDeclaration,
nodeClass.getName()));
} }
} }