Code cleanup.
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/commands/SmartSemicolonHandler.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/commands/SmartSemicolonHandler.java
index 1633d1b..c7140ae 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/commands/SmartSemicolonHandler.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/commands/SmartSemicolonHandler.java
@@ -9,6 +9,7 @@
package com.google.eclipse.protobuf.ui.commands;
import static com.google.eclipse.protobuf.protobuf.Modifier.REPEATED;
+import static com.google.eclipse.protobuf.ui.grammar.CommonKeyword.SEMICOLON;
import java.util.regex.Pattern;
@@ -23,7 +24,6 @@
import com.google.eclipse.protobuf.protobuf.Literal;
import com.google.eclipse.protobuf.protobuf.Property;
import com.google.eclipse.protobuf.ui.grammar.CompoundElements;
-import com.google.eclipse.protobuf.ui.grammar.Keywords;
import com.google.eclipse.protobuf.ui.util.Literals;
import com.google.eclipse.protobuf.ui.util.Properties;
import com.google.inject.Inject;
@@ -50,9 +50,9 @@
private final String semicolon;
- @Inject public SmartSemicolonHandler(CompoundElements compoundElements, Keywords keywords) {
+ @Inject public SmartSemicolonHandler(CompoundElements compoundElements) {
this.compoundElements = compoundElements;
- semicolon = keywords.semicolon().getValue();
+ semicolon = SEMICOLON.value;
}
/** {@inheritDoc} */
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/contentassist/ProtobufProposalProvider.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/contentassist/ProtobufProposalProvider.java
index 53bcd64..008f09c 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/contentassist/ProtobufProposalProvider.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/contentassist/ProtobufProposalProvider.java
@@ -10,6 +10,7 @@
import static com.google.eclipse.protobuf.protobuf.Modifier.*;
import static com.google.eclipse.protobuf.protobuf.ScalarType.STRING;
+import static com.google.eclipse.protobuf.ui.grammar.CommonKeyword.*;
import static java.lang.String.valueOf;
import org.eclipse.emf.ecore.EObject;
@@ -24,8 +25,8 @@
import com.google.eclipse.protobuf.protobuf.*;
import com.google.eclipse.protobuf.protobuf.Enum;
import com.google.eclipse.protobuf.scoping.Globals;
+import com.google.eclipse.protobuf.ui.grammar.CommonKeyword;
import com.google.eclipse.protobuf.ui.grammar.CompoundElements;
-import com.google.eclipse.protobuf.ui.grammar.Keywords;
import com.google.eclipse.protobuf.ui.labeling.Images;
import com.google.eclipse.protobuf.ui.util.*;
import com.google.eclipse.protobuf.util.EObjectFinder;
@@ -43,7 +44,6 @@
@Inject private Globals globals;
@Inject private PluginImageHelper imageHelper;
@Inject private Images imageRegistry;
- @Inject private Keywords keywords;
@Inject private Literals literals;
@Inject private Properties properties;
@Inject private Strings strings;
@@ -60,10 +60,10 @@
private void proposeCommonFileOptions(ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
for (Property fileOption : globals.fileOptions()) {
String displayString = fileOption.getName();
- String proposalText = displayString + " " + keywords.equalSign().getValue() + " ";
+ String proposalText = displayString + " " + EQUAL.value + " ";
boolean isStringOption = properties.isString(fileOption);
if (isStringOption)
- proposalText = proposalText + compoundElements.emptyString() + keywords.semicolon().getValue();
+ proposalText = proposalText + compoundElements.emptyString() + SEMICOLON.value;
ICompletionProposal proposal = createCompletionProposal(proposalText, displayString, context);
if (isStringOption && proposal instanceof ConfigurableCompletionProposal) {
// set cursor between the proposal's quotes
@@ -94,8 +94,14 @@
}
private void proposeBooleanValues(ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
- proposeAndAccept(keywords.boolFalse().getValue(), context, acceptor);
- proposeAndAccept(keywords.boolTrue().getValue(), context, acceptor);
+ CommonKeyword[] keywords = { FALSE, TRUE };
+ proposeAndAccept(keywords, context, acceptor);
+ }
+
+ private void proposeAndAccept(CommonKeyword[] keywords, ContentAssistContext context,
+ ICompletionProposalAcceptor acceptor) {
+ for (CommonKeyword keyword : keywords)
+ proposeAndAccept(keyword.value, context, acceptor);
}
@Override public void complete_ID(EObject model, RuleCall ruleCall, ContentAssistContext context,
@@ -123,7 +129,7 @@
}
private boolean isProposalForDefaultValue(ContentAssistContext context) {
- return isProposalForAssignment(keywords.defaultValue().getValue(), context);
+ return isProposalForAssignment(DEFAULT.value, context);
}
private boolean isProposalForAssignment(String feature, ContentAssistContext context) {
@@ -131,7 +137,7 @@
for (AbstractElement e : grammarElements) {
if (!(e instanceof Assignment)) continue;
Assignment a = (Assignment) e;
- String equalSign = keywords.equalSign().getValue();
+ String equalSign = EQUAL.value;
if (feature.equals(a.getFeature()) && equalSign.equals(a.getOperator())) return true;
}
return false;
@@ -141,18 +147,18 @@
ICompletionProposalAcceptor acceptor) {
if (keyword == null) return;
if (isKeywordEqualToPreviousWordInEditor(keyword, context)) return;
- if (keyword.equals(keywords.boolTrue()) || keyword.equals(keywords.boolFalse())) {
+ if (TRUE.hasValueEqualTo(keyword) || FALSE.hasValueEqualTo(keyword)) {
if (!isBoolProposalValid(context)) return;
}
- if (keyword.equals(keywords.openingBracket())) {
+ if (OPENING_BRACKET.hasValueEqualTo(keyword)) {
boolean proposalWasHandledAlready = proposeOpenBracket(context, acceptor);
if (proposalWasHandledAlready) return;
}
- if (keyword.equals(keywords.packed())) {
+ if (PACKED.hasValueEqualTo(keyword)) {
proposePackedOption(context, acceptor);
return;
}
- if (keyword.equals(keywords.defaultValue())) {
+ if (DEFAULT.hasValueEqualTo(keyword)) {
proposeDefaultValue(context, acceptor);
return;
}
@@ -186,7 +192,7 @@
Modifier modifier = p.getModifier();
if (OPTIONAL.equals(modifier)) {
String display = compoundElements.defaultValueInBrackets();
- int cursorPosition = display.indexOf(keywords.closingBracket().getValue());
+ int cursorPosition = display.indexOf(CLOSING_BRACKET.value);
if (isStringProperty(p)) {
display = compoundElements.defaultStringValueInBrackets();
cursorPosition++;
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/grammar/CommonKeyword.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/grammar/CommonKeyword.java
new file mode 100644
index 0000000..f156559
--- /dev/null
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/grammar/CommonKeyword.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2011 Google Inc.
+ *
+ * All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse
+ * Public License v1.0 which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ */
+package com.google.eclipse.protobuf.ui.grammar;
+
+import org.eclipse.xtext.Keyword;
+
+/**
+ * Set of common keywords (it may or may not include all the keywords in the grammar.)
+ *
+ * @author alruiz@google.com (Alex Ruiz)
+ */
+public enum CommonKeyword {
+
+ BOOL("bool"), TRUE("true"), FALSE("false"), BYTES("bytes"), OPENING_BRACKET("["), CLOSING_BRACKET("]"),
+ DEFAULT("default"), EQUAL("="), PACKED("packet"), SEMICOLON(":"), STRING("string");
+
+ public final String value;
+
+ private CommonKeyword(String value) {
+ this.value = value;
+ }
+
+ public boolean hasValueEqualTo(Keyword k) {
+ return hasValueEqualTo(k.getValue());
+ }
+
+ public boolean hasValueEqualTo(String s) {
+ return value.equals(s);
+ }
+}
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/util/Properties.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/util/Properties.java
index a484024..ebd00e4 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/util/Properties.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/util/Properties.java
@@ -8,16 +8,14 @@
*/
package com.google.eclipse.protobuf.ui.util;
+import static com.google.eclipse.protobuf.ui.grammar.CommonKeyword.*;
import static java.lang.Math.max;
import static org.eclipse.xtext.EcoreUtil2.getAllContentsOfType;
import java.util.List;
-import org.eclipse.xtext.Keyword;
-
import com.google.eclipse.protobuf.protobuf.*;
-import com.google.eclipse.protobuf.ui.grammar.Keywords;
-import com.google.inject.Inject;
+import com.google.eclipse.protobuf.ui.grammar.CommonKeyword;
import com.google.inject.Singleton;
/**
@@ -28,10 +26,8 @@
@Singleton
public class Properties {
- @Inject private Keywords keywords;
-
/**
- * Indicates whether the type of the given property is primitive. Primitive types include: {@code double},
+ * Indicates whether the type of the given property is primitive. Primitive types include: {@code double},
* {@code float}, {@code int32}, {@code int64}, {@code uint32}, {@code uint64}, {@code sint32}, {@code sint64},
* {@code fixed32}, {@code fixed64}, {@code sfixed32}, {@code sfixed64} and {@code bool}.
* @param p the given property.
@@ -41,7 +37,7 @@
AbstractTypeReference r = p.getType();
if (!(r instanceof ScalarTypeReference)) return false;
String typeName = ((ScalarTypeReference) r).getScalar().getName();
- return !keywords.string().getValue().equals(typeName) && !keywords.bytes().getValue().equals(typeName);
+ return !STRING.hasValueEqualTo(typeName) && !BYTES.hasValueEqualTo(typeName);
}
/**
@@ -50,7 +46,7 @@
* @return {@code true} if the given property is of type {@code bool}, {@code false} otherwise.
*/
public boolean isBool(Property p) {
- return isScalarType(p, keywords.bool());
+ return isScalarType(p, BOOL);
}
/**
@@ -59,11 +55,11 @@
* @return {@code true} if the given property is of type {@code string}, {@code false} otherwise.
*/
public boolean isString(Property p) {
- return isScalarType(p, keywords.string());
+ return isScalarType(p, STRING);
}
-
- private boolean isScalarType(Property p, Keyword typeKeyword) {
- return typeKeyword.getValue().equals(typeNameOf(p));
+
+ private boolean isScalarType(Property p, CommonKeyword typeKeyword) {
+ return typeKeyword.hasValueEqualTo(typeNameOf(p));
}
/**
@@ -82,18 +78,18 @@
}
/**
- * Calculates the tag number value for the given property. The calculated tag number value is the maximum of all the
+ * Calculates the tag number value for the given property. The calculated tag number value is the maximum of all the
* tag number values of the given property's siblings, plus one. The minimum tag number value is 1.
* <p>
* For example, in the following message:
- *
+ *
* <pre>
* message Person {
* required string name = 1;
* optional string email = 2;
* optional PhoneNumber phone =
* </pre>
- *
+ *
* The calculated tag number value for the property {@code PhoneNumber} will be 3.
* </p>
* @param p the given property.