Skip to content
Snippets Groups Projects
Commit 4408d862 authored by Miklos Magyari's avatar Miklos Magyari
Browse files

IDE: added visibility indication for class member proposals


Signed-off-by: default avatarMiklos Magyari <miklos.magyari@sigmatechnology.se>
parent b24290a5
No related branches found
No related tags found
1 merge request!709IDE: added visibility indication for class member proposals
...@@ -116,6 +116,11 @@ public final class Class_Type extends Type implements ITypeWithComponents { ...@@ -116,6 +116,11 @@ public final class Class_Type extends Type implements ITypeWithComponents {
return "class.gif"; return "class.gif";
} }
@Override
public String getTypename() {
return "class";
}
@Override @Override
public Identifier getComponentIdentifierByName(Identifier identifier) { public Identifier getComponentIdentifierByName(Identifier identifier) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
...@@ -136,11 +141,6 @@ public final class Class_Type extends Type implements ITypeWithComponents { ...@@ -136,11 +141,6 @@ public final class Class_Type extends Type implements ITypeWithComponents {
return true; return true;
} }
@Override
public String getTypename() {
// TODO Auto-generated method stub
return null;
}
@Override @Override
public boolean generatesOwnClass(JavaGenData aData, StringBuilder source) { public boolean generatesOwnClass(JavaGenData aData, StringBuilder source) {
......
...@@ -27,6 +27,10 @@ import org.eclipse.swt.widgets.Display; ...@@ -27,6 +27,10 @@ import org.eclipse.swt.widgets.Display;
public class Stylers { public class Stylers {
private Stylers() { } private Stylers() { }
public static final Color PublicColor = new Color(Display.getCurrent(), 59, 179, 0);
public static final Color ProtectedColor = new Color(Display.getCurrent(), 255, 140, 25);
public static final Color PrivateColor = new Color(Display.getCurrent(), 227,38,54);
public static class BlueBoldStyler extends Styler { public static class BlueBoldStyler extends Styler {
@Override @Override
public void applyStyles(TextStyle textStyle) { public void applyStyles(TextStyle textStyle) {
...@@ -48,4 +52,26 @@ public class Stylers { ...@@ -48,4 +52,26 @@ public class Stylers {
textStyle.font = f; textStyle.font = f;
} }
} }
public static class ColoredStyler extends Styler {
private final Color color;
private int style;
public ColoredStyler(Color color) {
this.color = color;
}
public void setStyle(int style) {
this.style = style;
}
@Override
public void applyStyles(TextStyle textStyle) {
textStyle.foreground = color;
FontData fontData = JFaceResources.getDefaultFont().getFontData()[0];
fontData.setStyle(style);
Font f = new Font(Display.getDefault(), fontData);
textStyle.font = f;
}
}
} }
...@@ -23,6 +23,9 @@ import org.eclipse.jface.text.contentassist.IContextInformationValidator; ...@@ -23,6 +23,9 @@ import org.eclipse.jface.text.contentassist.IContextInformationValidator;
import org.eclipse.jface.text.templates.Template; import org.eclipse.jface.text.templates.Template;
import org.eclipse.jface.text.templates.TemplateContextType; import org.eclipse.jface.text.templates.TemplateContextType;
import org.eclipse.jface.viewers.StyledString; import org.eclipse.jface.viewers.StyledString;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Display;
import org.eclipse.titan.designer.Activator; import org.eclipse.titan.designer.Activator;
import org.eclipse.titan.designer.AST.Assignment; import org.eclipse.titan.designer.AST.Assignment;
import org.eclipse.titan.designer.AST.IType; import org.eclipse.titan.designer.AST.IType;
...@@ -39,11 +42,14 @@ import org.eclipse.titan.designer.AST.TTCN3.definitions.Timer; ...@@ -39,11 +42,14 @@ import org.eclipse.titan.designer.AST.TTCN3.definitions.Timer;
import org.eclipse.titan.designer.AST.TTCN3.statements.StatementBlock; import org.eclipse.titan.designer.AST.TTCN3.statements.StatementBlock;
import org.eclipse.titan.designer.AST.TTCN3.types.Class_Type; import org.eclipse.titan.designer.AST.TTCN3.types.Class_Type;
import org.eclipse.titan.designer.AST.TTCN3.types.Component_Type; import org.eclipse.titan.designer.AST.TTCN3.types.Component_Type;
import org.eclipse.titan.designer.AST.TTCN3.types.Function_Type;
import org.eclipse.titan.designer.AST.TTCN3.types.PortTypeBody; import org.eclipse.titan.designer.AST.TTCN3.types.PortTypeBody;
import org.eclipse.titan.designer.consoles.TITANDebugConsole; import org.eclipse.titan.designer.consoles.TITANDebugConsole;
import org.eclipse.titan.designer.editors.ProposalCollector; import org.eclipse.titan.designer.editors.ProposalCollector;
import org.eclipse.titan.designer.editors.StyledCompletionProposal; import org.eclipse.titan.designer.editors.StyledCompletionProposal;
import org.eclipse.titan.designer.editors.Stylers;
import org.eclipse.titan.designer.graphics.ImageCache; import org.eclipse.titan.designer.graphics.ImageCache;
import org.eclipse.titan.designer.parsers.CompilationTimeStamp;
import org.eclipse.titan.designer.parsers.GlobalParser; import org.eclipse.titan.designer.parsers.GlobalParser;
import org.eclipse.titan.designer.parsers.ProjectSourceParser; import org.eclipse.titan.designer.parsers.ProjectSourceParser;
import org.eclipse.titan.designer.preferences.PreferenceConstantValues; import org.eclipse.titan.designer.preferences.PreferenceConstantValues;
...@@ -129,32 +135,41 @@ public final class ContentAssistProcessor implements IContentAssistProcessor { ...@@ -129,32 +135,41 @@ public final class ContentAssistProcessor implements IContentAssistProcessor {
if (classRef != null && scope != null) { if (classRef != null && scope != null) {
classRef.setMyScope(scope); classRef.setMyScope(scope);
classRef.detectModid(); classRef.detectModid();
//Scope fscope = scope.getAssignmentsScope(); final CompilationTimeStamp timestamp = tempModule.getLastCompilationTimeStamp();
Assignment assignment = scope.getAssBySRef(tempModule.getLastCompilationTimeStamp(), classRef); Assignment assignment = scope.getAssBySRef(timestamp, classRef);
if (assignment instanceof Def_Var) { if (assignment instanceof Def_Var) {
IType type = assignment.getType(tempModule.getLastCompilationTimeStamp()); IType type = assignment.getType(timestamp);
if (type != null ) { if (type != null ) {
IType refd = type.getTypeRefdLast(tempModule.getLastCompilationTimeStamp()); IType refd = type.getTypeRefdLast(timestamp);
if (refd instanceof Class_Type) { if (refd instanceof Class_Type) {
Class_Type ct = (Class_Type)refd; Class_Type ct = (Class_Type)refd;
for (Map.Entry<String, Definition> entry : ct.getClassBody().getDefinitionMap().entrySet()) { for (Map.Entry<String, Definition> entry : ct.getClassBody().getDefinitionMap().entrySet()) {
final Definition d = entry.getValue(); final Definition d = entry.getValue();
final String memberName = d.getIdentifier().getDisplayName(); final String memberName = d.getIdentifier().getDisplayName();
if (d instanceof Def_Function) {
memberName.concat("()");
}
final IType memberType = d.getType(timestamp);
final String memberTypeName = memberType != null ? memberType.getTypename() : "";
String visibility; String visibility;
Stylers.ColoredStyler styler = null;
switch (d.getVisibilityModifier()) { switch (d.getVisibilityModifier()) {
case Private: case Private:
styler = new Stylers.ColoredStyler(Stylers.PrivateColor);
visibility = "private"; visibility = "private";
break; break;
case Public: case Public:
visibility = "public"; visibility = "public";
styler = new Stylers.ColoredStyler(Stylers.PublicColor);
break; break;
default: default:
visibility = "protected"; visibility = "protected";
styler = new Stylers.ColoredStyler(Stylers.ProtectedColor);
} }
//final String propText = memberName + " (" + visibility + ")"; final String context = "<i>" + visibility + "</i> <b>" + memberTypeName + "</b> " + memberName ;
StyledCompletionProposal scp = new StyledCompletionProposal(memberName, offset, 0, memberName.length(), StyledCompletionProposal scp = new StyledCompletionProposal(memberName, offset, 0, memberName.length(),
ImageCache.getImage(d.getOutlineIcon()), memberName, null, null); ImageCache.getImage(d.getOutlineIcon()), memberName, null, context);
scp.append(" (" + visibility + ")", StyledString.QUALIFIER_STYLER); scp.append(" \u25fc", styler);
propCollector.addProposal(scp); propCollector.addProposal(scp);
} }
propCollector.sortAll(); propCollector.sortAll();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment