mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Cosmetics.
This commit is contained in:
parent
a5a8d0ed20
commit
415903e978
1 changed files with 37 additions and 29 deletions
|
@ -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()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue