Author: scabanovich
Date: 2011-07-26 14:40:50 -0400 (Tue, 26 Jul 2011)
New Revision: 33206
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.core/src/org/jboss/tools/cdi/seam/core/international/el/CDIInternationalMessagesELResolver.java
trunk/cdi/plugins/org.jboss.tools.cdi.seam.core/src/org/jboss/tools/cdi/seam/core/international/impl/BundleImpl.java
trunk/cdi/plugins/org.jboss.tools.cdi.seam.core/src/org/jboss/tools/cdi/seam/core/international/impl/LocalizedValue.java
trunk/cdi/plugins/org.jboss.tools.cdi.seam.core/src/org/jboss/tools/cdi/seam/core/international/impl/PropertyImpl.java
Log:
JBIDE-9087
https://issues.jboss.org/browse/JBIDE-9087
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.core/src/org/jboss/tools/cdi/seam/core/international/el/CDIInternationalMessagesELResolver.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.seam.core/src/org/jboss/tools/cdi/seam/core/international/el/CDIInternationalMessagesELResolver.java 2011-07-26
18:40:34 UTC (rev 33205)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.seam.core/src/org/jboss/tools/cdi/seam/core/international/el/CDIInternationalMessagesELResolver.java 2011-07-26
18:40:50 UTC (rev 33206)
@@ -21,7 +21,6 @@
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.IDocument;
@@ -32,7 +31,9 @@
import org.jboss.tools.cdi.seam.core.international.IBundle;
import org.jboss.tools.cdi.seam.core.international.IBundleModel;
import org.jboss.tools.cdi.seam.core.international.IProperty;
+import org.jboss.tools.cdi.seam.core.international.impl.BundleImpl;
import org.jboss.tools.cdi.seam.core.international.impl.LocalizedValue;
+import org.jboss.tools.cdi.seam.core.international.impl.PropertyImpl;
import org.jboss.tools.common.el.core.ca.AbstractELCompletionEngine;
import org.jboss.tools.common.el.core.model.ELArgumentInvocation;
import org.jboss.tools.common.el.core.model.ELExpression;
@@ -54,8 +55,8 @@
import org.jboss.tools.common.el.core.resolver.MessagePropertyELSegmentImpl;
import org.jboss.tools.common.el.core.resolver.TypeInfoCollector.MemberInfo;
import org.jboss.tools.common.model.XModelObject;
+import org.jboss.tools.common.model.util.PositionHolder;
import org.jboss.tools.common.text.TextProposal;
-import org.jboss.tools.common.util.FileUtil;
import org.jboss.tools.jst.web.kb.IPageContext;
import org.jboss.tools.jst.web.kb.IResourceBundle;
import org.jboss.tools.jst.web.kb.internal.ResourceBundle;
@@ -492,6 +493,15 @@
return;
segment.setBaseName(variable.basename);
segment.setBundleOnlySegment(true);
+
+ IBundle bundle = bundleModel.getBundle(variable.basename);
+ if(bundle == null)
+ continue;
+ Map<String, XModelObject> os = ((BundleImpl)bundle).getObjects();
+ for (XModelObject o: os.values()) {
+ segment.addObject(o);
+ }
+
}
}
}
@@ -523,30 +533,24 @@
if(bundle == null)
return;
- Set<String> properties = bundle.getPropertyNames();
+ String propertyName = segment.getToken().getText();
- for (String propertyName : properties) {
- IProperty prop = bundle.getProperty(propertyName);
- if(prop == null) continue;
-
- LocalizedValue value = (LocalizedValue)prop.getValue();
+ IProperty prop = bundle.getProperty(propertyName);
+ if(prop == null) continue;
+ Map<String, LocalizedValue> values = ((PropertyImpl)prop).getValues();
+ for (LocalizedValue value: values.values()) {
XModelObject p = value.getObject();
+ segment.addObject(p);
+ segment.setBaseName(variable.basename);
+ PositionHolder h = PositionHolder.getPosition(p, null);
+ h.update();
+ segment.setMessagePropertySourceReference(h.getStart(), prop.getName().length());
+
IFile propFile = (IFile)p.getAdapter(IFile.class);
if(propFile == null)
continue;
segment.setMessageBundleResource(propFile);
- XModelObject property = p;
- if(property != null){
- try {
- String content = FileUtil.readStream(propFile);
- if(findPropertyLocation(property, content, segment)){
- segment.setBaseName(variable.basename);
- }
- } catch (CoreException e) {
- log(e);
- }
- }
}
}
}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.core/src/org/jboss/tools/cdi/seam/core/international/impl/BundleImpl.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.seam.core/src/org/jboss/tools/cdi/seam/core/international/impl/BundleImpl.java 2011-07-26
18:40:34 UTC (rev 33205)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.seam.core/src/org/jboss/tools/cdi/seam/core/international/impl/BundleImpl.java 2011-07-26
18:40:50 UTC (rev 33206)
@@ -14,6 +14,7 @@
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
+import java.util.TreeMap;
import org.jboss.tools.cdi.seam.core.international.IBundle;
import org.jboss.tools.cdi.seam.core.international.IProperty;
@@ -26,7 +27,7 @@
*/
public class BundleImpl implements IBundle {
String name = "";
- Set<XModelObject> objects = new HashSet<XModelObject>();
+ Map<String, XModelObject> objects = new TreeMap<String, XModelObject>();
Map<String, PropertyImpl> properties = null;
public BundleImpl() {}
@@ -49,7 +50,7 @@
public void initProperties() {
if(properties == null) {
Map<String, PropertyImpl> ps = new HashMap<String, PropertyImpl>();
- for (XModelObject o: objects) {
+ for (XModelObject o: objects.values()) {
XModelObject[] os = o.getChildren();
for (XModelObject p: os) {
String name = p.getAttributeValue("name");
@@ -62,7 +63,7 @@
}
public void addObject(XModelObject o) {
- objects.add(o);
+ objects.put(LocalizedValue.getLocale(o), o);
}
public IProperty getProperty(String name) {
@@ -81,4 +82,11 @@
return p;
}
+ /*
+ * Returns file objects sorted by locales.
+ */
+ public Map<String, XModelObject> getObjects() {
+ return objects;
+ }
+
}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.core/src/org/jboss/tools/cdi/seam/core/international/impl/LocalizedValue.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.seam.core/src/org/jboss/tools/cdi/seam/core/international/impl/LocalizedValue.java 2011-07-26
18:40:34 UTC (rev 33205)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.seam.core/src/org/jboss/tools/cdi/seam/core/international/impl/LocalizedValue.java 2011-07-26
18:40:50 UTC (rev 33206)
@@ -10,6 +10,7 @@
******************************************************************************/
package org.jboss.tools.cdi.seam.core.international.impl;
+import org.eclipse.swt.internal.gtk.XClientMessageEvent;
import org.jboss.tools.cdi.seam.core.international.ILocalizedValue;
import org.jboss.tools.common.model.XModelObject;
@@ -34,13 +35,22 @@
public void setObject(XModelObject object) {
this.object = object;
- String n = object.getParent().getAttributeValue("name");
- int i = n.indexOf('_');
- if(i >= 0) locale = n.substring(i + 1);
+ locale = getLocale(object);
}
public XModelObject getObject() {
return object;
}
+ public static String getLocale(XModelObject object) {
+ XModelObject p = object;
+ while(p != null && p.getFileType() < XModelObject.FILE) p = p.getParent();
+ if(p != null) {
+ String n = p.getAttributeValue("name");
+ int i = n.indexOf('_');
+ if(i >= 0) return n.substring(i + 1);
+ }
+ return "";
+ }
+
}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.core/src/org/jboss/tools/cdi/seam/core/international/impl/PropertyImpl.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.seam.core/src/org/jboss/tools/cdi/seam/core/international/impl/PropertyImpl.java 2011-07-26
18:40:34 UTC (rev 33205)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.seam.core/src/org/jboss/tools/cdi/seam/core/international/impl/PropertyImpl.java 2011-07-26
18:40:50 UTC (rev 33206)
@@ -12,6 +12,7 @@
import java.util.HashMap;
import java.util.Map;
+import java.util.TreeMap;
import org.jboss.tools.cdi.seam.core.international.IBundle;
import org.jboss.tools.cdi.seam.core.international.ILocalizedValue;
@@ -26,7 +27,7 @@
public class PropertyImpl implements IProperty {
String name;
BundleImpl bundle;
- Map<String, LocalizedValue> values = new HashMap<String, LocalizedValue>();
+ Map<String, LocalizedValue> values = new TreeMap<String, LocalizedValue>();
@Override
public IBundle getBundle() {
@@ -60,6 +61,10 @@
return values.get(locale);
}
+ public Map<String, LocalizedValue> getValues() {
+ return values;
+ }
+
public void addObject(XModelObject o) {
LocalizedValue value = new LocalizedValue();
value.setObject(o);