Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -249,16 +249,23 @@ private CorrectionMessages() {
public static String NoCorrectionProposal_description;
public static String MarkerResolutionProposal_additionaldesc;
public static String NewCUCompletionUsingWizardProposal_createclass_description;
public static String NewCUCompletionUsingWizardProposal_createrecord_description;
public static String NewCUCompletionUsingWizardProposal_createenum_description;
public static String NewCUCompletionUsingWizardProposal_createclass_inpackage_description;
public static String NewCUCompletionUsingWizardProposal_createrecord_inpackage_description;
public static String NewCUCompletionUsingWizardProposal_createinnerclass_description;
public static String NewCUCompletionUsingWizardProposal_createnewinnerclass_description;
public static String NewCUCompletionUsingWizardProposal_createinnerrecord_description;
public static String NewCUCompletionUsingWizardProposal_createnewinnerrecord_description;
public static String NewCUCompletionUsingWizardProposal_createinnerenum_description;
public static String NewCUCompletionUsingWizardProposal_createannotation_description;
public static String NewCUCompletionUsingWizardProposal_createinnerclass_intype_description;
public static String NewCUCompletionUsingWizardProposal_createinnerrecord_intype_description;
public static String NewCUCompletionUsingWizardProposal_createinnerenum_intype_description;
public static String NewCUCompletionUsingWizardProposal_createinterface_description;
public static String NewCUCompletionUsingWizardProposal_createinterface_inpackage_description;
public static String NewCUCompletionUsingWizardProposal_createinnerinterface_description;
public static String NewCUCompletionUsingWizardProposal_createnewinnerinterface_description;
public static String NewCUCompletionUsingWizardProposal_createenum_inpackage_description;
public static String NewCUCompletionUsingWizardProposal_createinnerannotation_description;
public static String NewCUCompletionUsingWizardProposal_createinnerinterface_intype_description;
Expand All @@ -272,6 +279,7 @@ private CorrectionMessages() {
public static String NewCUCompletionUsingWizardProposal_createnewinterface_inpackage_description;
public static String NewCUCompletionUsingWizardProposal_createnewannotation_inpackage_description;
public static String NewCUCompletionUsingWizardProposal_createnewenum_inpackage_description;
public static String NewCUCompletionUsingWizardProposal_createnewrecord_inpackage_description;
public static String ConfigureProblemSeveritySubProcessor_info;
public static String ConfigureProblemSeveritySubProcessor_name;
public static String ConstructorFromSuperclassProposal_description;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -277,16 +277,23 @@ MarkerResolutionProposal_additionaldesc=Problem description: {0}

NewCUCompletionUsingWizardProposal_createclass_description=Create class ''{0}''
NewCUCompletionUsingWizardProposal_createenum_description=Create enum ''{0}''
NewCUCompletionUsingWizardProposal_createrecord_description=Create record ''{0}''
NewCUCompletionUsingWizardProposal_createclass_inpackage_description=Create class ''{0}'' in package ''{1}''
NewCUCompletionUsingWizardProposal_createrecord_inpackage_description=Create record ''{0}'' in package ''{1}''
NewCUCompletionUsingWizardProposal_createinnerclass_description=Create member class ''{0}''
NewCUCompletionUsingWizardProposal_createnewinnerclass_description=Create new member class
NewCUCompletionUsingWizardProposal_createinnerrecord_description=Create member record ''{0}''
NewCUCompletionUsingWizardProposal_createnewinnerrecord_description=Create new member record
NewCUCompletionUsingWizardProposal_createinnerenum_description=Create member enum ''{0}''
NewCUCompletionUsingWizardProposal_createannotation_description=Create annotation ''{0}''
NewCUCompletionUsingWizardProposal_createinnerclass_intype_description=Create class ''{0}'' in type ''{1}''
NewCUCompletionUsingWizardProposal_createinnerenum_intype_description=Create enum ''{0}'' in type ''{1}''
NewCUCompletionUsingWizardProposal_createinnerrecord_intype_description=Create record ''{0}'' in type ''{1}''

NewCUCompletionUsingWizardProposal_createinterface_description=Create interface ''{0}''
NewCUCompletionUsingWizardProposal_createinterface_inpackage_description=Create interface ''{0}'' in package ''{1}''
NewCUCompletionUsingWizardProposal_createinnerinterface_description=Create member interface ''{0}''
NewCUCompletionUsingWizardProposal_createnewinnerinterface_description=Create new member interface
NewCUCompletionUsingWizardProposal_createenum_inpackage_description=Create enum ''{0}'' in package ''{1}''
NewCUCompletionUsingWizardProposal_createinnerannotation_description=Create member annotation ''{0}''
NewCUCompletionUsingWizardProposal_createinnerinterface_intype_description=Create interface ''{0}'' in type ''{1}''
Expand All @@ -296,6 +303,7 @@ NewCUCompletionUsingWizardProposal_createnewclass_inpackage_description=Create n
NewCUCompletionUsingWizardProposal_createnewinterface_inpackage_description=Create new interface in package ''{0}''
NewCUCompletionUsingWizardProposal_createnewannotation_inpackage_description=Create new annotation in package ''{0}''
NewCUCompletionUsingWizardProposal_createnewenum_inpackage_description=Create new enum in package ''{0}''
NewCUCompletionUsingWizardProposal_createnewrecord_inpackage_description=Create new record in package ''{0}''

NewCUCompletionUsingWizardProposal_createclass_info=Opens the new class wizard to create the type.
NewCUCompletionUsingWizardProposal_createenum_info=Opens the new enum wizard to create the type.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ public class NewCUProposal extends ChangeCorrectionProposalCore {
public static final int K_INTERFACE = 2;
public static final int K_ENUM = 3;
public static final int K_ANNOTATION = 4;
public static final int K_RECORD= 5;

private Name fNode;
private ICompilationUnit fCompilationUnit;
Expand Down Expand Up @@ -125,43 +126,51 @@ private void setDisplayName() {
boolean isInnerType = fTypeContainer instanceof IType;
switch (fTypeKind) {
case K_CLASS:
if (fNode != null) {
if (isInnerType) {
if (containerName.length() == 0) {
setDisplayName(Messages.format(CorrectionMessages.NewCUCompletionUsingWizardProposal_createinnerclass_description, typeLabel));
} else {
setDisplayName(Messages.format(CorrectionMessages.NewCUCompletionUsingWizardProposal_createinnerclass_intype_description, new String[] { typeLabel, containerLabel }));
}
if (fNode != null) {
if (isInnerType) {
if (containerName.length() == 0) {
setDisplayName(Messages.format(CorrectionMessages.NewCUCompletionUsingWizardProposal_createinnerclass_description, typeLabel));
} else {
if (containerName.length() == 0) {
setDisplayName(Messages.format(CorrectionMessages.NewCUCompletionUsingWizardProposal_createclass_description, typeLabel));
} else {
setDisplayName(Messages.format(CorrectionMessages.NewCUCompletionUsingWizardProposal_createclass_inpackage_description, new String[] { typeLabel, containerLabel }));
}
setDisplayName(Messages.format(CorrectionMessages.NewCUCompletionUsingWizardProposal_createinnerclass_intype_description, new String[] { typeLabel, containerLabel }));
}
} else {
if (containerName.length() == 0) {
setDisplayName(Messages.format(CorrectionMessages.NewCUCompletionUsingWizardProposal_createclass_description, typeLabel));
} else {
setDisplayName(Messages.format(CorrectionMessages.NewCUCompletionUsingWizardProposal_createclass_inpackage_description, new String[] { typeLabel, containerLabel }));
}
}
} else {
if (isInnerType) {
setDisplayName(Messages.format(CorrectionMessages.NewCUCompletionUsingWizardProposal_createnewinnerclass_description, containerLabel));
} else {
setDisplayName(Messages.format(CorrectionMessages.NewCUCompletionUsingWizardProposal_createnewclass_inpackage_description, containerLabel));
}
break;
}
break;
case K_INTERFACE:
if (fNode != null) {
if (isInnerType) {
if (containerName.length() == 0) {
setDisplayName(Messages.format(CorrectionMessages.NewCUCompletionUsingWizardProposal_createinnerinterface_description, typeLabel));
} else {
setDisplayName(Messages.format(CorrectionMessages.NewCUCompletionUsingWizardProposal_createinnerinterface_intype_description, new String[] { typeLabel, containerLabel }));
}
if (fNode != null) {
if (isInnerType) {
if (containerName.length() == 0) {
setDisplayName(Messages.format(CorrectionMessages.NewCUCompletionUsingWizardProposal_createinnerinterface_description, typeLabel));
} else {
if (containerName.length() == 0) {
setDisplayName(Messages.format(CorrectionMessages.NewCUCompletionUsingWizardProposal_createinterface_description, typeLabel));
} else {
setDisplayName(Messages.format(CorrectionMessages.NewCUCompletionUsingWizardProposal_createinterface_inpackage_description, new String[] { typeLabel, containerLabel }));
}
setDisplayName(Messages.format(CorrectionMessages.NewCUCompletionUsingWizardProposal_createinnerinterface_intype_description, new String[] { typeLabel, containerLabel }));
}
} else {
if (containerName.length() == 0) {
setDisplayName(Messages.format(CorrectionMessages.NewCUCompletionUsingWizardProposal_createinterface_description, typeLabel));
} else {
setDisplayName(Messages.format(CorrectionMessages.NewCUCompletionUsingWizardProposal_createinterface_inpackage_description, new String[] { typeLabel, containerLabel }));
}
}
} else {
if (isInnerType) {
setDisplayName(Messages.format(CorrectionMessages.NewCUCompletionUsingWizardProposal_createnewinnerinterface_description, containerLabel));
} else {
setDisplayName(Messages.format(CorrectionMessages.NewCUCompletionUsingWizardProposal_createnewinterface_inpackage_description, containerLabel));
}
break;
}
break;
case K_ENUM:
if (fNode != null) {
if (isInnerType) {
Expand Down Expand Up @@ -200,6 +209,29 @@ private void setDisplayName() {
setDisplayName(Messages.format(CorrectionMessages.NewCUCompletionUsingWizardProposal_createnewannotation_inpackage_description, containerLabel));
}
break;
case K_RECORD:
if (fNode != null) {
if (isInnerType) {
if (containerName.length() == 0) {
setDisplayName(Messages.format(CorrectionMessages.NewCUCompletionUsingWizardProposal_createinnerrecord_description, typeLabel));
} else {
setDisplayName(Messages.format(CorrectionMessages.NewCUCompletionUsingWizardProposal_createinnerrecord_intype_description, new String[] { typeLabel, containerLabel }));
}
} else {
if (containerName.length() == 0) {
setDisplayName(Messages.format(CorrectionMessages.NewCUCompletionUsingWizardProposal_createrecord_description, typeLabel));
} else {
setDisplayName(Messages.format(CorrectionMessages.NewCUCompletionUsingWizardProposal_createrecord_inpackage_description, new String[] { typeLabel, containerLabel }));
}
}
} else {
if (isInnerType) {
setDisplayName(Messages.format(CorrectionMessages.NewCUCompletionUsingWizardProposal_createnewinnerrecord_description, containerLabel));
} else {
setDisplayName(Messages.format(CorrectionMessages.NewCUCompletionUsingWizardProposal_createnewrecord_inpackage_description, containerLabel));
}
}
break;
default:
throw new IllegalArgumentException("Unknown type kind"); //$NON-NLS-1$
}
Expand Down Expand Up @@ -305,6 +337,9 @@ private TextEdit constructEnclosingTypeEdit(ICompilationUnit icu) throws CoreExc
case K_ANNOTATION:
newDeclaration = ast.newAnnotationTypeDeclaration();
break;
case K_RECORD:
newDeclaration = ast.newRecordDeclaration();
break;
default:
return null;
}
Expand Down Expand Up @@ -428,13 +463,19 @@ private String constructTypeStub(ICompilationUnit parentCU, String name, int mod
type = "@interface "; //$NON-NLS-1$
templateID = CodeGeneration.ANNOTATION_BODY_TEMPLATE_ID;
break;
case K_RECORD:
type = "record "; //$NON-NLS-1$
templateID = CodeGeneration.RECORD_BODY_TEMPLATE_ID;
break;
}
buf.append(type);
buf.append(name);
if (isPermitted) {
buf.append(' ');
buf.append(superType);
buf.append(cuType.getElementName());
} else if (fTypeKind == K_RECORD) {
buf.append("() ");
}

buf.append(" {").append(lineDelimiter); //$NON-NLS-1$
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,10 @@ protected void addNewTypeProposalsInteractiveInnerLoop(ICompilationUnit cu, Name
if ((kind & TypeKinds.CLASSES) != 0) {
NewCUProposal proposal = new NewCUProposal(cu, node, NewCUProposal.K_CLASS, enclosing, rel + 3);
proposals.add(CodeActionHandler.wrap(proposal, CodeActionKind.QuickFix));
if (canUseRecord(cu.getJavaProject(), refNode)) {
proposal = new NewCUProposal(cu, node, NewCUProposal.K_RECORD, enclosing, rel + 3);
proposals.add(CodeActionHandler.wrap(proposal, CodeActionKind.QuickFix));
}
}
if ((kind & TypeKinds.INTERFACES) != 0) {
NewCUProposal proposal = new NewCUProposal(cu, node, NewCUProposal.K_INTERFACE, enclosing, rel + 3);
Expand Down
Loading