Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/infra/onefile/org.eclipse.papyrus.infra.onefile/src/org/eclipse/papyrus/infra/onefile/model/impl/PapyrusFile.java')
-rw-r--r--plugins/infra/onefile/org.eclipse.papyrus.infra.onefile/src/org/eclipse/papyrus/infra/onefile/model/impl/PapyrusFile.java42
1 files changed, 38 insertions, 4 deletions
diff --git a/plugins/infra/onefile/org.eclipse.papyrus.infra.onefile/src/org/eclipse/papyrus/infra/onefile/model/impl/PapyrusFile.java b/plugins/infra/onefile/org.eclipse.papyrus.infra.onefile/src/org/eclipse/papyrus/infra/onefile/model/impl/PapyrusFile.java
index e7888b7cfa7..f5fc561112a 100644
--- a/plugins/infra/onefile/org.eclipse.papyrus.infra.onefile/src/org/eclipse/papyrus/infra/onefile/model/impl/PapyrusFile.java
+++ b/plugins/infra/onefile/org.eclipse.papyrus.infra.onefile/src/org/eclipse/papyrus/infra/onefile/model/impl/PapyrusFile.java
@@ -8,10 +8,15 @@
*
* Contributors:
* Tristan Faure (Atos Origin Integration) tristan.faure@atosorigin.com - Initial API and implementation
+ * Nicolas FAUVERGUE (ALL4TEC) nicolas.fauvergue@all4tec.net - Bug 496905
+ *
*****************************************************************************/
package org.eclipse.papyrus.infra.onefile.model.impl;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.Locale;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFile;
@@ -19,6 +24,8 @@ import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.Platform;
+import org.eclipse.papyrus.infra.core.Activator;
+import org.eclipse.papyrus.infra.internationalization.utils.PropertiesFilesUtils;
import org.eclipse.papyrus.infra.onefile.model.IPapyrusFile;
import org.eclipse.papyrus.infra.onefile.utils.OneFileUtils;
@@ -44,12 +51,39 @@ public class PapyrusFile implements IPapyrusFile {
public IResource[] getAssociatedResources() {
ArrayList<IResource> files = new ArrayList<IResource>();
try {
- for (IResource res : file.getParent().members()) {
- if (res instanceof IFile && OneFileUtils.withoutFileExtension(file).equals(OneFileUtils.withoutFileExtension(res))) {
- files.add(res);
+ for (final IResource res : file.getParent().members()) {
+ if (res instanceof IFile){
+ final String resourceWithoutExtension = OneFileUtils.withoutFileExtension(res);
+ final String fileWithoutExtension = OneFileUtils.withoutFileExtension(file);
+ if(fileWithoutExtension.equals(resourceWithoutExtension)) {
+ files.add(res);
+ }else if(res.getFileExtension().equals(PropertiesFilesUtils.PROPERTIES_FILE_EXTENSION) && resourceWithoutExtension.startsWith(fileWithoutExtension)){
+ String possibleLocale = resourceWithoutExtension.substring(fileWithoutExtension.length());
+ if(possibleLocale.startsWith("_")){ //$NON-NLS-1$
+ possibleLocale = possibleLocale.substring(1);
+ Locale localeFound = null;
+
+ // Check about possible locale in available locales
+ final Iterator<Locale> availableLocales = Arrays.asList(Locale.getAvailableLocales())
+ .iterator();
+ while (availableLocales.hasNext() && null == localeFound) {
+ final Locale currentAvailableLocale = availableLocales.next();
+
+ if (currentAvailableLocale.toString().equals(possibleLocale)) {
+ localeFound = currentAvailableLocale;
+ }
+ }
+
+ // The file contains a locale, load it
+ if (null != localeFound) {
+ files.add(res);
+ }
+ }
+ }
}
}
- } catch (CoreException e) {
+ } catch (final CoreException e) {
+ Activator.log.error("The file members cannot be found", e); //$NON-NLS-1$
}
return files.toArray(new IResource[] {});
}

Back to the top