further work on FELIX-1355, also tidied up repository preferences as part of FELIX-1649
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@990188 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/sigil/eclipse/core/plugin.xml b/sigil/eclipse/core/plugin.xml
index 18487fd..8e61c12 100644
--- a/sigil/eclipse/core/plugin.xml
+++ b/sigil/eclipse/core/plugin.xml
@@ -65,7 +65,7 @@
<extension
point="org.eclipse.core.runtime.preferences">
<initializer
- class="org.apache.felix.sigil.eclipse.preferences.SigilPreferencesInitializer">
+ class="org.apache.felix.sigil.eclipse.internal.preferences.SigilPreferencesInitializer">
</initializer>
</extension>
<extension
diff --git a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/SigilCore.java b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/SigilCore.java
index cfefb58..4cfbbc6 100644
--- a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/SigilCore.java
+++ b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/SigilCore.java
@@ -44,14 +44,14 @@
import org.apache.felix.sigil.eclipse.internal.install.OSGiInstallManager;
import org.apache.felix.sigil.eclipse.internal.model.project.SigilModelRoot;
import org.apache.felix.sigil.eclipse.internal.model.project.SigilProject;
-import org.apache.felix.sigil.eclipse.internal.model.repository.RepositoryConfiguration;
+import org.apache.felix.sigil.eclipse.internal.model.repository.RepositoryPreferences;
import org.apache.felix.sigil.eclipse.internal.repository.eclipse.GlobalRepositoryManager;
import org.apache.felix.sigil.eclipse.internal.repository.manager.RepositoryMap;
import org.apache.felix.sigil.eclipse.internal.resources.ProjectResourceListener;
import org.apache.felix.sigil.eclipse.internal.resources.SigilProjectManager;
import org.apache.felix.sigil.eclipse.model.project.ISigilModelRoot;
import org.apache.felix.sigil.eclipse.model.project.ISigilProjectModel;
-import org.apache.felix.sigil.eclipse.model.repository.IRepositoryConfiguration;
+import org.apache.felix.sigil.eclipse.model.repository.IRepositoryPreferences;
import org.apache.felix.sigil.eclipse.model.util.JavaHelper;
import org.eclipse.core.resources.ICommand;
import org.eclipse.core.resources.IProject;
@@ -145,7 +145,7 @@
private ServiceTracker descriptorTracker;
private ServiceTracker registryTracker;
private ServiceTracker serializerTracker;
- private static IRepositoryConfiguration repositoryConfig;
+ private static IRepositoryPreferences repositoryPrefs;
private static SigilProjectManager projectManager;
private static OSGiInstallManager installs;
private static ISigilModelRoot modelRoot;
@@ -270,7 +270,7 @@
modelRoot = new SigilModelRoot();
- repositoryConfig = new RepositoryConfiguration();
+ repositoryPrefs = new RepositoryPreferences();
installs = new OSGiInstallManager();
@@ -428,23 +428,24 @@
if ( model == null ) return globalRepositoryManager;
try
{
- return model.getRepositoryManager(repositoryMap);
+ return projectManager.getRepositoryManager(model, repositoryMap);
}
catch (CoreException e)
{
- warn("Failed to build repository manager for " + model, e);
+ SigilCore.error("Failed to read repository config", e);
return globalRepositoryManager;
- }
+ }
}
- public static IRepositoryConfiguration getRepositoryConfiguration()
+ public static IRepositoryPreferences getRepositoryPreferences()
{
- return repositoryConfig;
+ return repositoryPrefs;
}
public static void rebuildAllBundleDependencies(IProgressMonitor monitor)
{
Collection<ISigilProjectModel> projects = getRoot().getProjects();
+
if (!projects.isEmpty())
{
SubMonitor progress = SubMonitor.convert(monitor, projects.size() * 20);
@@ -480,7 +481,7 @@
{
try
{
- dependent.resetClasspath(progress.newChild(10));
+ dependent.resetClasspath(progress.newChild(10), false);
dependent.getProject().build(IncrementalProjectBuilder.FULL_BUILD,
progress.newChild(10));
}
diff --git a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/model/project/SigilModelRoot.java b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/model/project/SigilModelRoot.java
index 3c8a5eb..97fe428 100644
--- a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/model/project/SigilModelRoot.java
+++ b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/model/project/SigilModelRoot.java
@@ -93,7 +93,7 @@
else if (element instanceof ILibraryImport)
{
ILibraryImport l = (ILibraryImport) element;
- ILibrary lib = SigilCore.getRepositoryManager(sigil).resolveLibrary(
+ ILibrary lib = sigil.getRepositoryManager().resolveLibrary(
l);
if (lib != null)
diff --git a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/model/project/SigilProject.java b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/model/project/SigilProject.java
index 2bbd0ef..1138a84 100644
--- a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/model/project/SigilProject.java
+++ b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/model/project/SigilProject.java
@@ -51,9 +51,7 @@
import org.apache.felix.sigil.common.repository.ResolutionException;
import org.apache.felix.sigil.eclipse.PathUtil;
import org.apache.felix.sigil.eclipse.SigilCore;
-import org.apache.felix.sigil.eclipse.internal.repository.manager.EclipseRepositoryManager;
import org.apache.felix.sigil.eclipse.job.ThreadProgressMonitor;
-import org.apache.felix.sigil.eclipse.model.project.IRepositoryMap;
import org.apache.felix.sigil.eclipse.model.project.ISigilProjectModel;
import org.apache.felix.sigil.eclipse.model.util.JavaHelper;
import org.apache.felix.sigil.eclipse.progress.ProgressAdapter;
@@ -178,7 +176,7 @@
{
SubMonitor progress = SubMonitor.convert(monitor, 100);
- IRepositoryManager manager = SigilCore.getRepositoryManager(this);
+ IRepositoryManager manager = getRepositoryManager();
ResolutionConfig config = new ResolutionConfig(ResolutionConfig.INCLUDE_OPTIONAL
| ResolutionConfig.IGNORE_ERRORS);
@@ -444,8 +442,12 @@
return "SigilProject[" + getSymbolicName() + ":" + getVersion() + "]";
}
- public void resetClasspath(IProgressMonitor monitor) throws CoreException
+ public void resetClasspath(IProgressMonitor monitor, boolean forceResolve) throws CoreException
{
+ if (forceResolve) {
+ processRequirementsChanges(monitor);
+ }
+
Path containerPath = new Path(SigilCore.CLASSPATH_CONTAINER_PATH);
IJavaProject java = getJavaModel();
ClasspathContainerInitializer init = JavaCore.getClasspathContainerInitializer(SigilCore.CLASSPATH_CONTAINER_PATH);
@@ -493,7 +495,7 @@
IRequiredBundle rb = (IRequiredBundle) element;
try
{
- IRepositoryManager manager = SigilCore.getRepositoryManager(SigilProject.this);
+ IRepositoryManager manager = SigilProject.this.getRepositoryManager();
ResolutionConfig config = new ResolutionConfig(
ResolutionConfig.IGNORE_ERRORS);
IResolution res = manager.getBundleResolver().resolve(rb, config,
@@ -683,12 +685,6 @@
}
}
- public IRepositoryManager getRepositoryManager(IRepositoryMap repositoryMap) throws CoreException {
- IRepositoryConfig config = getRepositoryConfig();
- config = new EclipseRepositoryConfig(config);
- return new EclipseRepositoryManager(config, repositoryMap);
- }
-
public boolean isInBundleClasspath(IPackageFragment root) throws JavaModelException
{
if (getBundle().getClasspathEntrys().isEmpty())
@@ -712,4 +708,12 @@
return getBundle().getClasspathEntrys().contains(enc.trim());
}
}
+
+ /* (non-Javadoc)
+ * @see org.apache.felix.sigil.eclipse.model.project.ISigilProjectModel#getRepositoryManager()
+ */
+ public IRepositoryManager getRepositoryManager()
+ {
+ return SigilCore.getRepositoryManager(this);
+ }
}
diff --git a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/model/repository/RepositoryConfiguration.java b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/model/repository/RepositoryPreferences.java
similarity index 73%
rename from sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/model/repository/RepositoryConfiguration.java
rename to sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/model/repository/RepositoryPreferences.java
index 4a8366e..7eb22f3 100644
--- a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/model/repository/RepositoryConfiguration.java
+++ b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/model/repository/RepositoryPreferences.java
@@ -23,6 +23,8 @@
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.List;
@@ -30,11 +32,9 @@
import java.util.UUID;
import org.apache.felix.sigil.eclipse.SigilCore;
-import org.apache.felix.sigil.eclipse.model.repository.IRepositoryConfiguration;
+import org.apache.felix.sigil.eclipse.model.repository.IRepositoryPreferences;
import org.apache.felix.sigil.eclipse.model.repository.IRepositoryModel;
-import org.apache.felix.sigil.eclipse.model.repository.IRepositorySet;
import org.apache.felix.sigil.eclipse.model.repository.IRepositoryType;
-import org.apache.felix.sigil.eclipse.model.repository.RepositorySet;
import org.apache.felix.sigil.eclipse.preferences.PrefsUtils;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
@@ -48,19 +48,21 @@
import org.eclipse.swt.graphics.Image;
import org.osgi.framework.Bundle;
-public class RepositoryConfiguration implements IRepositoryConfiguration
+public class RepositoryPreferences implements IRepositoryPreferences
{
private static final String REPOSITORY = "repository.";
- private static final String REPOSITORY_SET = REPOSITORY + "set.";
- private static final String REPOSITORY_SETS = REPOSITORY + "sets";
- private static final String REPOSITORY_TIMESTAMP = REPOSITORY + "timestamp";
+ private static final String REPOSITORY_ORDER = REPOSITORY + "order";
private static final String INSTANCES = ".instances";
private static final String NAME = ".name";
private static final String LOC = ".loc";
private static final String TIMESTAMP = ".timestamp";
- public static final String REPOSITORY_DEFAULT_SET = REPOSITORY + "default.set";
+ private static final HashMap<String, String> migrationTable = new HashMap<String, String>();
+
+ static {
+ migrationTable.put("org.apache.felix.sigil.core.file", "filesystem");
+ }
public List<IRepositoryModel> loadRepositories()
{
@@ -91,6 +93,27 @@
}
}
+
+ final List<String> order = PrefsUtils.stringToList(prefs.getString(REPOSITORY_ORDER));
+
+ Collections.sort(repositories, new Comparator<IRepositoryModel>() {
+ public int compare(IRepositoryModel o1, IRepositoryModel o2)
+ {
+ int i1 = order.indexOf(o1.getId());
+ int i2 = order.indexOf(o2.getId());
+
+ if ( i1 < i2 ) {
+ return -1;
+ }
+ else if ( i1 > i2 ) {
+ return 1;
+ }
+ else {
+ return 0;
+ }
+ }
+
+ });
return repositories;
}
@@ -118,9 +141,23 @@
saveRepositoryPreferences(repositories, mapped);
createNewEntries(mapped, prefs);
deleteOldEntries(repositories, prefs);
- // time stamp is used as a signal to the manager
- // to update its view of the stored repositories
- timeStamp(prefs);
+ // do this last as it is a signal to preferences
+ // listeners to read repo config
+ setRepositoryOrder(repositories, prefs);
+ }
+
+ /**
+ * @param repositories
+ * @param prefs
+ */
+ private void setRepositoryOrder(List<IRepositoryModel> repositories,
+ IPreferenceStore prefs)
+ {
+ ArrayList<String> ids = new ArrayList<String>();
+ for(IRepositoryModel model : repositories) {
+ ids.add(model.getId());
+ }
+ prefs.setValue(REPOSITORY_ORDER, PrefsUtils.listToString(ids));
}
public List<RepositoryType> loadRepositoryTypes()
@@ -139,7 +176,7 @@
String type = c.getAttribute("type");
boolean dynamic = Boolean.valueOf(c.getAttribute("dynamic"));
String icon = c.getAttribute("icon");
- String provider = c.getAttribute("alias");
+ String provider = c.getAttribute("alias");
Image image = (icon == null || icon.trim().length() == 0) ? null
: loadImage(e, icon);
repositories.add(new RepositoryType(id, provider, type, dynamic, image));
@@ -159,117 +196,6 @@
return element;
}
- public IRepositorySet getDefaultRepositorySet()
- {
- ArrayList<IRepositoryModel> reps = new ArrayList<IRepositoryModel>();
- for (String s : PrefsUtils.stringToArray(getPreferences().getString(
- REPOSITORY_DEFAULT_SET)))
- {
- IRepositoryModel rep = findRepository(s);
- if (rep == null)
- {
- SigilCore.error("Missing repository for " + s);
- }
- else
- {
- reps.add(rep);
- }
- }
- return new RepositorySet(reps);
- }
-
- public IRepositorySet getRepositorySet(String name)
- {
- String key = REPOSITORY_SET + name;
- if (getPreferences().contains(key))
- {
- ArrayList<IRepositoryModel> reps = new ArrayList<IRepositoryModel>();
- for (String s : PrefsUtils.stringToArray(getPreferences().getString(key)))
- {
- IRepositoryModel rep = findRepository(s);
- if (rep == null)
- {
- throw new IllegalStateException("Missing repository for " + s);
- }
- reps.add(rep);
- }
- return new RepositorySet(reps);
- }
- else
- {
- return null;
- }
- }
-
- public Map<String, IRepositorySet> loadRepositorySets()
- {
- IPreferenceStore store = getPreferences();
-
- HashMap<String, IRepositorySet> sets = new HashMap<String, IRepositorySet>();
-
- for (String name : PrefsUtils.stringToArray(store.getString(REPOSITORY_SETS)))
- {
- String key = REPOSITORY_SET + name;
- ArrayList<IRepositoryModel> reps = new ArrayList<IRepositoryModel>();
- for (String s : PrefsUtils.stringToArray(getPreferences().getString(key)))
- {
- reps.add(findRepository(s));
- }
- sets.put(name, new RepositorySet(reps));
- }
-
- return sets;
- }
-
- public void saveRepositorySets(Map<String, IRepositorySet> sets)
- {
- IPreferenceStore store = getPreferences();
-
- ArrayList<String> names = new ArrayList<String>();
-
- for (Map.Entry<String, IRepositorySet> set : sets.entrySet())
- {
- String name = set.getKey();
- String key = REPOSITORY_SET + name;
- ArrayList<String> ids = new ArrayList<String>();
- for (IRepositoryModel m : set.getValue().getRepositories())
- {
- ids.add(m.getId());
- }
- store.setValue(key, PrefsUtils.listToString(ids));
- names.add(name);
- }
-
- for (String name : PrefsUtils.stringToArray(store.getString(REPOSITORY_SETS)))
- {
- if (!names.contains(name))
- {
- String key = REPOSITORY_SET + name;
- store.setToDefault(key);
- }
- }
-
- store.setValue(REPOSITORY_SETS, PrefsUtils.listToString(names));
- timeStamp(store);
- }
-
- public void setDefaultRepositorySet(IRepositorySet defaultSet)
- {
- ArrayList<String> ids = new ArrayList<String>();
- for (IRepositoryModel m : defaultSet.getRepositories())
- {
- ids.add(m.getId());
- }
- IPreferenceStore prefs = getPreferences();
- prefs.setValue(REPOSITORY_DEFAULT_SET, PrefsUtils.listToString(ids));
- timeStamp(prefs);
- }
-
- private void timeStamp(IPreferenceStore prefs)
- {
- prefs.setValue(REPOSITORY_TIMESTAMP, System.currentTimeMillis());
- }
-
private IPreferenceStore getPreferences()
{
return SigilCore.getDefault().getPreferenceStore();
diff --git a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/preferences/SigilPreferencesInitializer.java b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/preferences/SigilPreferencesInitializer.java
similarity index 80%
rename from sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/preferences/SigilPreferencesInitializer.java
rename to sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/preferences/SigilPreferencesInitializer.java
index 7dbfc0d..f0fdaca 100644
--- a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/preferences/SigilPreferencesInitializer.java
+++ b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/preferences/SigilPreferencesInitializer.java
@@ -17,11 +17,12 @@
* under the License.
*/
-package org.apache.felix.sigil.eclipse.preferences;
+package org.apache.felix.sigil.eclipse.internal.preferences;
import org.apache.felix.sigil.common.osgi.VersionRangeBoundingRule;
import org.apache.felix.sigil.eclipse.SigilCore;
-import org.apache.felix.sigil.eclipse.internal.model.repository.RepositoryConfiguration;
+import org.apache.felix.sigil.eclipse.preferences.PrefsUtils;
+import org.apache.felix.sigil.eclipse.preferences.PromptablePreference;
import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
import org.eclipse.jface.preference.IPreferenceStore;
@@ -35,7 +36,15 @@
public void initializeDefaultPreferences()
{
IPreferenceStore store = SigilCore.getDefault().getPreferenceStore();
+ setUpDefaults(store);
+ migrateOldPreferences(store);
+ }
+ /**
+ * @param store
+ */
+ private void setUpDefaults(IPreferenceStore store)
+ {
store.setDefault(SigilCore.OSGI_INSTALL_CHECK_PREFERENCE, true);
store.setDefault(SigilCore.DEFAULT_VERSION_LOWER_BOUND,
@@ -54,7 +63,14 @@
store.setDefault(SigilCore.PREFERENCES_REBUILD_PROJECTS,
PromptablePreference.Prompt.name());
- store.setDefault(RepositoryConfiguration.REPOSITORY_DEFAULT_SET,
+ store.setDefault("repository.order",
"org.apache.felix.sigil.core.workspaceprovider");
}
+
+ /**
+ * @param store
+ */
+ private void migrateOldPreferences(IPreferenceStore store)
+ {
+ }
}
diff --git a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/repository/eclipse/GlobalRepositoryManager.java b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/repository/eclipse/GlobalRepositoryManager.java
index a1a8b09..7e4c21c 100644
--- a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/repository/eclipse/GlobalRepositoryManager.java
+++ b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/repository/eclipse/GlobalRepositoryManager.java
@@ -19,27 +19,17 @@
package org.apache.felix.sigil.eclipse.internal.repository.eclipse;
-import java.util.List;
-
import org.apache.felix.sigil.common.repository.IRepositoryManager;
-import org.apache.felix.sigil.eclipse.SigilCore;
import org.apache.felix.sigil.eclipse.internal.repository.eclipse.SigilRepositoryManager;
import org.apache.felix.sigil.eclipse.internal.repository.manager.RepositoryMap;
-import org.apache.felix.sigil.eclipse.model.repository.IRepositoryModel;
public class GlobalRepositoryManager extends SigilRepositoryManager implements IRepositoryManager
{
public GlobalRepositoryManager(RepositoryMap map)
{
- super(null, map);
+ super(map);
}
- @Override
- protected IRepositoryModel[] findRepositories()
- {
- List<IRepositoryModel> repos = SigilCore.getRepositoryConfiguration().loadRepositories();
- return repos.toArray(new IRepositoryModel[repos.size()]);
- }
}
diff --git a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/repository/eclipse/SigilRepositoryManager.java b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/repository/eclipse/SigilRepositoryManager.java
index cf74d3c..d6fb658 100644
--- a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/repository/eclipse/SigilRepositoryManager.java
+++ b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/repository/eclipse/SigilRepositoryManager.java
@@ -24,6 +24,7 @@
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashSet;
+import java.util.List;
import java.util.Properties;
import org.apache.felix.sigil.common.repository.AbstractRepositoryManager;
@@ -33,9 +34,8 @@
import org.apache.felix.sigil.common.repository.RepositoryException;
import org.apache.felix.sigil.eclipse.SigilCore;
import org.apache.felix.sigil.eclipse.internal.repository.manager.RepositoryMap;
-import org.apache.felix.sigil.eclipse.model.project.IRepositoryMap.RepositoryCache;
+import org.apache.felix.sigil.eclipse.internal.repository.manager.IRepositoryMap.RepositoryCache;
import org.apache.felix.sigil.eclipse.model.repository.IRepositoryModel;
-import org.apache.felix.sigil.eclipse.model.repository.IRepositorySet;
import org.apache.felix.sigil.eclipse.model.repository.IRepositoryType;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
@@ -50,13 +50,10 @@
public class SigilRepositoryManager extends AbstractRepositoryManager implements IRepositoryManager, IPropertyChangeListener
{
- private final String repositorySet;
-
private RepositoryMap cachedRepositories;
- public SigilRepositoryManager(String repositorySet, RepositoryMap cachedRepositories)
+ public SigilRepositoryManager(RepositoryMap cachedRepositories)
{
- this.repositorySet = repositorySet;
this.cachedRepositories = cachedRepositories;
}
@@ -84,7 +81,7 @@
ArrayList<IBundleRepository> repos = new ArrayList<IBundleRepository>();
HashSet<String> ids = new HashSet<String>();
- IRepositoryModel[] models = findRepositories();
+ List<IRepositoryModel> models = findRepositories();
for (IRepositoryModel repo : models)
{
try
@@ -141,26 +138,9 @@
return null;
}
- protected IRepositoryModel[] findRepositories()
+ protected List<IRepositoryModel> findRepositories()
{
- if (repositorySet == null)
- {
- return SigilCore.getRepositoryConfiguration().getDefaultRepositorySet().getRepositories();
- }
- else
- {
- IRepositorySet set = SigilCore.getRepositoryConfiguration().getRepositorySet(
- repositorySet);
- if (set == null)
- {
- SigilCore.error("Unknown repository set " + repositorySet);
- return SigilCore.getRepositoryConfiguration().getDefaultRepositorySet().getRepositories();
- }
- else
- {
- return set.getRepositories();
- }
- }
+ return SigilCore.getRepositoryPreferences().loadRepositories();
}
private IBundleRepository loadRepository(String id, Properties pref,
diff --git a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/model/project/EclipseRepositoryConfig.java b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/repository/manager/EclipseRepositoryConfig.java
similarity index 66%
rename from sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/model/project/EclipseRepositoryConfig.java
rename to sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/repository/manager/EclipseRepositoryConfig.java
index 5270fd0..1846846 100644
--- a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/model/project/EclipseRepositoryConfig.java
+++ b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/repository/manager/EclipseRepositoryConfig.java
@@ -17,16 +17,14 @@
* under the License.
*/
-package org.apache.felix.sigil.eclipse.internal.model.project;
+package org.apache.felix.sigil.eclipse.internal.repository.manager;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URI;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
import java.util.Properties;
import org.apache.felix.sigil.common.config.IRepositoryConfig;
@@ -52,8 +50,8 @@
*/
public List<String> getAllRepositories()
{
- ArrayList<String> list = new ArrayList<String>(readRepositories().keySet());
- list.addAll(projectConfig.getAllRepositories());
+ ArrayList<String> list = new ArrayList<String>(projectConfig.getAllRepositories());
+ list.addAll(readRepositoryNames());
return list;
}
@@ -63,8 +61,8 @@
public Properties getRepositoryConfig(String name)
{
Properties props = projectConfig.getRepositoryConfig(name);
- if ( props.isEmpty() ) {
- props = readRepositories().get(name);
+ if ( props == null ) {
+ props = readRepositoryConfig(name);
}
return props;
}
@@ -76,7 +74,7 @@
{
URI def = projectConfig.getRepositoryDefinition(name);
if ( def == null ) {
- if ( readRepositories().containsKey(name) ) {
+ if ( readRepositoryNames().contains(name) ) {
def = URI.create("sigil:eclipse:preferences");
}
}
@@ -91,29 +89,48 @@
return projectConfig.getRepositoryPath();
}
- private Map<String, Properties> readRepositories() {
- HashMap<String, Properties> repos = new HashMap<String, Properties>();
+ /**
+ * @return
+ */
+ private static List<String> readRepositoryNames()
+ {
+ List<IRepositoryModel> models = findRepositories();
+ ArrayList<String> repos = new ArrayList<String>(models.size());
+ for (IRepositoryModel repo : models)
+ {
+ String id = repo.getId();
+ repos.add(id);
+ }
+
+ return repos;
+ }
+
+ private static Properties readRepositoryConfig(String name) {
IPreferenceStore prefs = SigilCore.getDefault().getPreferenceStore();
- IRepositoryModel[] models = findRepositories();
- for (IRepositoryModel repo : models)
+ for (IRepositoryModel repo : findRepositories())
{
try
{
String id = repo.getId();
- Properties pref = null;
- if (repo.getType().isDynamic())
- {
- String instance = "repository." + repo.getType().getId() + "." + id;
- String loc = prefs.getString(instance + ".loc");
- pref = loadPreferences(loc);
+ if ( name.equals(id) ) {
+ Properties pref = null;
+ if (repo.getType().isDynamic())
+ {
+ String instance = "repository." + repo.getType().getId() + "." + id;
+ String loc = prefs.getString(instance + ".loc");
+ pref = loadPreferences(loc);
+ }
+ else
+ {
+ pref = new Properties();
+ }
+
+ if (!pref.containsKey(IRepositoryConfig.REPOSITORY_PROVIDER)) {
+ pref.put(IRepositoryConfig.REPOSITORY_PROVIDER, repo.getType().getProvider());
+ }
+ return pref;
}
- else
- {
- pref = new Properties();
- }
-
- repos.put(id, pref);
}
catch (IOException e)
{
@@ -121,15 +138,16 @@
}
}
- return repos;
+ // ok not found
+ return null;
}
- private IRepositoryModel[] findRepositories()
+ private static final List<IRepositoryModel> findRepositories()
{
- return SigilCore.getRepositoryConfiguration().getDefaultRepositorySet().getRepositories();
+ return SigilCore.getRepositoryPreferences().loadRepositories();
}
- private Properties loadPreferences(String loc) throws FileNotFoundException,
+ private static final Properties loadPreferences(String loc) throws FileNotFoundException,
IOException
{
FileInputStream in = null;
diff --git a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/repository/manager/EclipseRepositoryManager.java b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/repository/manager/EclipseRepositoryManager.java
index 2e081ec..fb9b46c 100644
--- a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/repository/manager/EclipseRepositoryManager.java
+++ b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/repository/manager/EclipseRepositoryManager.java
@@ -31,14 +31,16 @@
import org.apache.felix.sigil.common.repository.IRepositoryProvider;
import org.apache.felix.sigil.common.repository.RepositoryException;
import org.apache.felix.sigil.eclipse.SigilCore;
-import org.apache.felix.sigil.eclipse.model.project.IRepositoryMap;
-import org.apache.felix.sigil.eclipse.model.project.IRepositoryMap.RepositoryCache;
+import org.apache.felix.sigil.eclipse.internal.repository.manager.IRepositoryMap.RepositoryCache;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.jface.util.PropertyChangeEvent;
/**
* @author dave
*
*/
-public class EclipseRepositoryManager extends AbstractRepositoryManager
+public class EclipseRepositoryManager extends AbstractRepositoryManager implements IPropertyChangeListener
{
private final IRepositoryConfig config;
private final IRepositoryMap repositoryMap;
@@ -49,9 +51,25 @@
*/
public EclipseRepositoryManager(IRepositoryConfig config, IRepositoryMap repositoryMap)
{
- this.config = config;
+ this.config = new EclipseRepositoryConfig(config);
this.repositoryMap = repositoryMap;
}
+
+ @Override
+ public void initialise()
+ {
+ super.initialise();
+ SigilCore.getDefault().getPreferenceStore().addPropertyChangeListener(this);
+ }
+
+ public void destroy()
+ {
+ IPreferenceStore prefs = SigilCore.getDefault().getPreferenceStore();
+ if (prefs != null)
+ {
+ prefs.removePropertyChangeListener(this);
+ }
+ }
/* (non-Javadoc)
* @see org.apache.felix.sigil.common.repository.AbstractRepositoryManager#loadRepositories()
@@ -91,12 +109,14 @@
}
else {
Properties props = config.getRepositoryConfig(name);
- String uid = config.getRepositoryDefinition(name).toString() + name;
- IBundleRepository repo = buildRepository(uid, name, props);
-
- if ( repo != null ) {
- list.add(repo);
- }
+ if (props != null) {
+ String uid = config.getRepositoryDefinition(name).toString() + '#' + name;
+ IBundleRepository repo = buildRepository(uid, name, props);
+
+ if ( repo != null ) {
+ list.add(repo);
+ }
+ }
}
}
}
@@ -122,6 +142,8 @@
SigilCore.log(msg);
else
SigilCore.warn(msg);
+
+ return null;
}
try
@@ -169,5 +191,16 @@
throw new RepositoryException("Failed to build repositories", e);
}
}
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
+ */
+ public void propertyChange(PropertyChangeEvent event)
+ {
+ if (event.getProperty().equals("repository.order"))
+ {
+ loadRepositories();
+ }
+ }
}
diff --git a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/project/IRepositoryMap.java b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/repository/manager/IRepositoryMap.java
similarity index 95%
rename from sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/project/IRepositoryMap.java
rename to sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/repository/manager/IRepositoryMap.java
index f36a501..c2dc1fa 100644
--- a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/project/IRepositoryMap.java
+++ b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/repository/manager/IRepositoryMap.java
@@ -17,7 +17,7 @@
* under the License.
*/
-package org.apache.felix.sigil.eclipse.model.project;
+package org.apache.felix.sigil.eclipse.internal.repository.manager;
import java.util.Properties;
diff --git a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/repository/manager/RepositoryMap.java b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/repository/manager/RepositoryMap.java
index c9158c2..f103964 100644
--- a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/repository/manager/RepositoryMap.java
+++ b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/repository/manager/RepositoryMap.java
@@ -23,7 +23,6 @@
import java.util.HashMap;
import java.util.Iterator;
-import org.apache.felix.sigil.eclipse.model.project.IRepositoryMap;
public class RepositoryMap implements IRepositoryMap
{
diff --git a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/resources/ProjectResourceListener.java b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/resources/ProjectResourceListener.java
index 340f95e..340d560 100644
--- a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/resources/ProjectResourceListener.java
+++ b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/resources/ProjectResourceListener.java
@@ -35,11 +35,6 @@
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
-//import org.eclipse.core.runtime.IProgressMonitor;
-//import org.eclipse.core.runtime.IStatus;
-//import org.eclipse.core.runtime.Status;
-//import org.eclipse.core.runtime.jobs.Job;
-
public class ProjectResourceListener implements IResourceChangeListener
{
public static final int EVENT_MASKS = IResourceChangeEvent.PRE_DELETE
diff --git a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/resources/SigilProjectManager.java b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/resources/SigilProjectManager.java
index 03a8826..ad9e348 100644
--- a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/resources/SigilProjectManager.java
+++ b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/resources/SigilProjectManager.java
@@ -20,20 +20,26 @@
import java.util.HashMap;
+import org.apache.felix.sigil.common.config.IRepositoryConfig;
+import org.apache.felix.sigil.common.repository.IRepositoryManager;
import org.apache.felix.sigil.eclipse.SigilCore;
import org.apache.felix.sigil.eclipse.internal.model.project.SigilProject;
+import org.apache.felix.sigil.eclipse.internal.repository.manager.EclipseRepositoryManager;
+import org.apache.felix.sigil.eclipse.internal.repository.manager.IRepositoryMap;
+import org.apache.felix.sigil.eclipse.model.project.ISigilProjectModel;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
public class SigilProjectManager
{
- private static HashMap<IProject, SigilProject> projects = new HashMap<IProject, SigilProject>();
+ private static HashMap<IProject, ISigilProjectModel> projects = new HashMap<IProject, ISigilProjectModel>();
+ private static HashMap<ISigilProjectModel, EclipseRepositoryManager> repositoryManagers = new HashMap<ISigilProjectModel, EclipseRepositoryManager>();
- public SigilProject getSigilProject(IProject project) throws CoreException
+ public ISigilProjectModel getSigilProject(IProject project) throws CoreException
{
if (project.hasNature(SigilCore.NATURE_ID))
{
- SigilProject p = null;
+ ISigilProjectModel p = null;
synchronized (projects)
{
p = projects.get(project);
@@ -54,9 +60,35 @@
public void flushSigilProject(IProject project)
{
- synchronized (project)
+ synchronized (projects)
{
- projects.remove(project);
+ ISigilProjectModel model = projects.remove(project);
+ if ( model != null ) {
+ EclipseRepositoryManager manager = repositoryManagers.remove(model);
+ manager.destroy();
+ }
+ }
+ }
+
+ /**
+ * @param model
+ * @param repositoryMap
+ * @throws CoreException
+ */
+ public IRepositoryManager getRepositoryManager(ISigilProjectModel model, IRepositoryMap repositoryMap) throws CoreException
+ {
+ synchronized( projects ) {
+ EclipseRepositoryManager manager = repositoryManagers.get(model);
+
+ if ( manager == null ) {
+ IRepositoryConfig config = model.getRepositoryConfig();
+
+ manager = new EclipseRepositoryManager(config, repositoryMap);
+
+ repositoryManagers.put(model, manager);
+ }
+
+ return manager;
}
}
}
diff --git a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/project/ISigilProjectModel.java b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/project/ISigilProjectModel.java
index 0d53a03..8fc7cba 100644
--- a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/project/ISigilProjectModel.java
+++ b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/project/ISigilProjectModel.java
@@ -95,7 +95,7 @@
*/
IJavaProject getJavaModel();
- void resetClasspath(IProgressMonitor monitor) throws CoreException;
+ void resetClasspath(IProgressMonitor monitor, boolean forceResolve) throws CoreException;
IPath findBundleLocation() throws CoreException;
@@ -121,9 +121,8 @@
throws CoreException;
/**
- * @param repositoryMap
* @return
* @throws CoreException
*/
- IRepositoryManager getRepositoryManager(IRepositoryMap repositoryMap) throws CoreException;
+ IRepositoryManager getRepositoryManager();
}
diff --git a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/repository/IRepositoryConfiguration.java b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/repository/IRepositoryPreferences.java
similarity index 79%
rename from sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/repository/IRepositoryConfiguration.java
rename to sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/repository/IRepositoryPreferences.java
index f3683b6..708b74e 100644
--- a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/repository/IRepositoryConfiguration.java
+++ b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/repository/IRepositoryPreferences.java
@@ -20,14 +20,12 @@
package org.apache.felix.sigil.eclipse.model.repository;
import java.util.List;
-import java.util.Map;
import org.apache.felix.sigil.eclipse.internal.model.repository.RepositoryType;
import org.eclipse.core.runtime.CoreException;
-public interface IRepositoryConfiguration
+public interface IRepositoryPreferences
{
-
List<IRepositoryModel> loadRepositories();
IRepositoryModel findRepository(String id);
@@ -37,14 +35,4 @@
List<RepositoryType> loadRepositoryTypes();
IRepositoryModel newRepositoryElement(IRepositoryType type);
-
- IRepositorySet getDefaultRepositorySet();
-
- void setDefaultRepositorySet(IRepositorySet defaultSet);
-
- IRepositorySet getRepositorySet(String name);
-
- Map<String, IRepositorySet> loadRepositorySets();
-
- void saveRepositorySets(Map<String, IRepositorySet> sets);
}
\ No newline at end of file
diff --git a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/repository/IRepositorySet.java b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/repository/IRepositorySet.java
deleted file mode 100644
index 8ebb46c..0000000
--- a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/repository/IRepositorySet.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.felix.sigil.eclipse.model.repository;
-
-public interface IRepositorySet
-{
- void setRepository(IRepositoryModel id, int position);
-
- void removeRepository(IRepositoryModel id);
-
- IRepositoryModel[] getRepositories();
-
- void setRepositories(IRepositoryModel[] repositories);
-}
diff --git a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/repository/RepositorySet.java b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/repository/RepositorySet.java
deleted file mode 100644
index 1d80a8a..0000000
--- a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/repository/RepositorySet.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.felix.sigil.eclipse.model.repository;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-public class RepositorySet implements IRepositorySet
-{
-
- private static final IRepositoryModel[] EMPTY = new IRepositoryModel[0];
-
- private IRepositoryModel[] reps;
-
- public RepositorySet()
- {
- this(EMPTY);
- }
-
- public RepositorySet(Collection<IRepositoryModel> reps)
- {
- this(reps.toArray(new IRepositoryModel[reps.size()]));
- }
-
- public RepositorySet(IRepositoryModel[] repositories)
- {
- this.reps = repositories;
- }
-
- public void setRepository(IRepositoryModel id, int position)
- {
- ArrayList<IRepositoryModel> tmp = new ArrayList<IRepositoryModel>(reps.length + 1);
- tmp.remove(id);
- tmp.add(position, id);
- reps = tmp.toArray(new IRepositoryModel[tmp.size()]);
- }
-
- public IRepositoryModel[] getRepositories()
- {
- return reps;
- }
-
- public void removeRepository(IRepositoryModel id)
- {
- ArrayList<IRepositoryModel> tmp = new ArrayList<IRepositoryModel>(reps.length + 1);
- tmp.remove(id);
- reps = tmp.toArray(new IRepositoryModel[tmp.size()]);
- }
-
- public void setRepositories(IRepositoryModel[] repositories)
- {
- reps = repositories == null ? EMPTY : repositories;
- }
-}
diff --git a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/util/JavaHelper.java b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/util/JavaHelper.java
index fe34711..e4ac348 100644
--- a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/util/JavaHelper.java
+++ b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/util/JavaHelper.java
@@ -168,7 +168,7 @@
{
final LinkedList<IPackageExport> results = new LinkedList<IPackageExport>();
- SigilCore.getRepositoryManager(project).visit(new IModelWalker()
+ project.getRepositoryManager().visit(new IModelWalker()
{
public boolean visit(IModelElement element)
{
@@ -312,7 +312,7 @@
else if (element instanceof IRequiredBundle)
{
IRequiredBundle rb = (IRequiredBundle) element;
- IRepositoryManager manager = SigilCore.getRepositoryManager(project);
+ IRepositoryManager manager = project.getRepositoryManager();
ResolutionConfig config = new ResolutionConfig(
ResolutionConfig.INCLUDE_OPTIONAL
| ResolutionConfig.IGNORE_ERRORS);
@@ -366,7 +366,7 @@
IResolution resolution;
try
{
- resolution = SigilCore.getRepositoryManager(sigil).getBundleResolver().resolve(
+ resolution = sigil.getRepositoryManager().getBundleResolver().resolve(
sigil, config, new ResolutionMonitorAdapter(monitor));
}
catch (ResolutionException e)
diff --git a/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/OSGiLauncher.java b/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/OSGiLauncher.java
index 459a05d..d95e2e2 100644
--- a/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/OSGiLauncher.java
+++ b/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/OSGiLauncher.java
@@ -89,7 +89,7 @@
try
{
// TODO need to figure out a sensible repository manager for launch configs
- IRepositoryManager manager = SigilCore.getRepositoryManager(null);
+ IRepositoryManager manager = SigilCore.getGlobalRepositoryManager();
client.apply(form.resolve(new RuntimeBundleResolver(manager, config)));
}
catch (Exception e)
diff --git a/sigil/eclipse/search/src/org/apache/felix/sigil/search/SigilSearch.java b/sigil/eclipse/search/src/org/apache/felix/sigil/search/SigilSearch.java
index 316785c..ba587a1 100644
--- a/sigil/eclipse/search/src/org/apache/felix/sigil/search/SigilSearch.java
+++ b/sigil/eclipse/search/src/org/apache/felix/sigil/search/SigilSearch.java
@@ -125,12 +125,12 @@
if (index == null)
{
index = new Index();
- for (IBundleRepository rep : SigilCore.getRepositoryManager(sigil).getRepositories())
+ for (IBundleRepository rep : sigil.getRepositoryManager().getRepositories())
{
index(index, rep);
}
- SigilCore.getRepositoryManager(sigil).addRepositoryChangeListener(
+ sigil.getRepositoryManager().addRepositoryChangeListener(
new IRepositoryChangeListener()
{
public void repositoryChanged(RepositoryChangeEvent event)
diff --git a/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/actions/RefreshRepositoryAction.java b/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/actions/RefreshRepositoryAction.java
index c737c2f..677e019 100644
--- a/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/actions/RefreshRepositoryAction.java
+++ b/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/actions/RefreshRepositoryAction.java
@@ -72,7 +72,7 @@
SubMonitor sub = SubMonitor.convert(monitor, projects.size() * 10);
for (ISigilProjectModel p : projects)
{
- p.resetClasspath(sub.newChild(10));
+ p.resetClasspath(sub.newChild(10), false);
}
}
}
diff --git a/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/internal/handlers/project/RefreshSigilClasspathCommandHandler.java b/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/internal/handlers/project/RefreshSigilClasspathCommandHandler.java
index 27b49c4..f23ce33 100644
--- a/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/internal/handlers/project/RefreshSigilClasspathCommandHandler.java
+++ b/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/internal/handlers/project/RefreshSigilClasspathCommandHandler.java
@@ -53,7 +53,7 @@
throws CoreException, InvocationTargetException,
InterruptedException
{
- model.resetClasspath(monitor);
+ model.resetClasspath(monitor, true);
}
};
diff --git a/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/internal/preferences/repository/RepositoriesPreferencePage.java b/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/internal/preferences/repository/RepositoriesPreferencePage.java
index a1c3a0c..0ad5e38 100644
--- a/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/internal/preferences/repository/RepositoriesPreferencePage.java
+++ b/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/internal/preferences/repository/RepositoriesPreferencePage.java
@@ -20,9 +20,7 @@
package org.apache.felix.sigil.eclipse.ui.internal.preferences.repository;
import org.apache.felix.sigil.eclipse.SigilCore;
-import org.apache.felix.sigil.eclipse.model.repository.IRepositoryConfiguration;
-import org.apache.felix.sigil.eclipse.model.repository.IRepositorySet;
-import org.apache.felix.sigil.eclipse.model.repository.RepositorySet;
+import org.apache.felix.sigil.eclipse.model.repository.IRepositoryPreferences;
import org.apache.felix.sigil.eclipse.ui.internal.preferences.ProjectDependentPreferencesPage;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jface.preference.IPreferenceStore;
@@ -41,7 +39,6 @@
private boolean changed;
private RepositoriesView viewPage;
- private RepositorySetsView setPage;
public RepositoriesPreferencePage()
{
@@ -70,7 +67,6 @@
private Control initContents(Composite parent)
{
viewPage = new RepositoriesView(this);
- setPage = new RepositorySetsView(this);
Composite control = new Composite(parent, SWT.NONE);
@@ -80,10 +76,6 @@
view.setText("Repositories");
view.setControl(viewPage.createContents(folder));
- TabItem sets = new TabItem(folder, SWT.NONE);
- sets.setText("Sets");
- sets.setControl(setPage.createContents(folder));
-
control.setLayout(new GridLayout(1, true));
folder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
@@ -101,12 +93,8 @@
{
try
{
- IRepositoryConfiguration config = SigilCore.getRepositoryConfiguration();
+ IRepositoryPreferences config = SigilCore.getRepositoryPreferences();
config.saveRepositories(viewPage.getRepositories());
- config.saveRepositorySets(setPage.getSets());
- IRepositorySet defaultSet = new RepositorySet(
- setPage.getDefaultRepositories());
- config.setDefaultRepositorySet(defaultSet);
setErrorMessage(null);
getApplyButton().setEnabled(false);
diff --git a/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/internal/preferences/repository/RepositoriesView.java b/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/internal/preferences/repository/RepositoriesView.java
index fab0a60..19d6783 100644
--- a/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/internal/preferences/repository/RepositoriesView.java
+++ b/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/internal/preferences/repository/RepositoriesView.java
@@ -34,6 +34,7 @@
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.window.Window;
import org.eclipse.jface.wizard.WizardDialog;
@@ -98,11 +99,11 @@
// Layout
composite.setLayout(new GridLayout(2, false));
- table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 6));
+ table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 7));
createButtons(composite, repositoryView);
- repositories = SigilCore.getRepositoryConfiguration().loadRepositories();
+ repositories = SigilCore.getRepositoryPreferences().loadRepositories();
repositoryView.setInput(repositories);
return composite;
@@ -114,10 +115,18 @@
add.setText("Add...");
add.setEnabled(true);
+ final Button upBtn = new Button(composite, SWT.PUSH);
+ upBtn.setText("Up");
+ upBtn.setEnabled(false);
+
+ final Button downBtn = new Button(composite, SWT.PUSH);
+ downBtn.setText("Down");
+ downBtn.setEnabled(false);
+
final Button edit = new Button(composite, SWT.PUSH);
edit.setText("Edit...");
edit.setEnabled(false);
-
+
final Button remove = new Button(composite, SWT.PUSH);
remove.setText("Remove");
remove.setEnabled(false);
@@ -125,7 +134,7 @@
final Button refresh = new Button(composite, SWT.PUSH);
refresh.setText("Refresh");
refresh.setEnabled(false);
-
+
// Listeners
add.addSelectionListener(new SelectionAdapter()
{
@@ -162,6 +171,24 @@
}
});
+ upBtn.addSelectionListener(new SelectionAdapter()
+ {
+ @Override
+ public void widgetSelected(SelectionEvent e)
+ {
+ up();
+ }
+ });
+
+ downBtn.addSelectionListener(new SelectionAdapter()
+ {
+ @Override
+ public void widgetSelected(SelectionEvent e)
+ {
+ down();
+ }
+ });
+
repositoryView.addSelectionChangedListener(new ISelectionChangedListener()
{
public void selectionChanged(SelectionChangedEvent event)
@@ -175,9 +202,13 @@
checkEditEnabled(edit, sel);
checkRemoveEnabled(remove, sel);
+ upBtn.setEnabled(sel.size() == 1);
+ downBtn.setEnabled(sel.size() == 1);
}
else
{
+ upBtn.setEnabled(false);
+ downBtn.setEnabled(false);
refresh.setEnabled(false);
edit.setEnabled(false);
remove.setEnabled(false);
@@ -185,10 +216,37 @@
}
});
+ // layout
add.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
+ upBtn.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
+ downBtn.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
edit.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
remove.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
}
+
+ private void up()
+ {
+ IRepositoryModel model = (IRepositoryModel) ((StructuredSelection) repositoryView.getSelection()).getFirstElement();
+ int i = repositories.indexOf(model);
+ if (i > 0)
+ {
+ repositories.remove(i);
+ repositories.add(i - 1, model);
+ repositoryView.refresh();
+ }
+ }
+
+ private void down()
+ {
+ IRepositoryModel model = (IRepositoryModel) ((StructuredSelection) repositoryView.getSelection()).getFirstElement();
+ int i = repositories.indexOf(model);
+ if (i < repositories.size() - 1)
+ {
+ repositories.remove(i);
+ repositories.add(i + 1, model);
+ repositoryView.refresh();
+ }
+ }
@SuppressWarnings("unchecked")
private void checkRemoveEnabled(Button button, IStructuredSelection sel)
diff --git a/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/internal/preferences/repository/RepositorySetDialog.java b/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/internal/preferences/repository/RepositorySetDialog.java
deleted file mode 100644
index a2e08a4..0000000
--- a/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/internal/preferences/repository/RepositorySetDialog.java
+++ /dev/null
@@ -1,300 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.felix.sigil.eclipse.ui.internal.preferences.repository;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.felix.sigil.eclipse.SigilCore;
-import org.apache.felix.sigil.eclipse.model.repository.IRepositoryModel;
-import org.apache.felix.sigil.eclipse.ui.util.DefaultLabelProvider;
-import org.apache.felix.sigil.eclipse.ui.util.DefaultTableProvider;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.TitleAreaDialog;
-import org.eclipse.jface.viewers.CheckboxTableViewer;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.KeyAdapter;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-
-public class RepositorySetDialog extends TitleAreaDialog
-{
-
- private CheckboxTableViewer viewer;
- private Text nameTxt;
- private Button upBtn;
- private Button downBtn;
- private final String setName;
- private List<IRepositoryModel> repositories;
- private final boolean nameEditable;
- private final Set<String> set;
-
- private String newName;
-
- public RepositorySetDialog(Shell shell, Set<String> set)
- {
- this(shell, null, true, set);
- }
-
- public RepositorySetDialog(Shell parent, RepositoryViewData data, boolean nameEditable, Set<String> set)
- {
- super(parent);
- this.set = set;
- this.setName = data == null ? "" : data.getName();
- this.repositories = data == null ? new ArrayList<IRepositoryModel>()
- : new ArrayList<IRepositoryModel>(Arrays.asList(data.getRepositories()));
- this.nameEditable = nameEditable;
- }
-
- @Override
- protected Control createDialogArea(Composite parent)
- {
- Composite area = (Composite) super.createDialogArea(parent);
- createControl(area);
- return area;
- }
-
- public void createControl(Composite parent)
- {
- // controls
- Composite body = new Composite(parent, SWT.NONE);
- body.setLayoutData(new GridData(GridData.FILL_BOTH));
-
- if (nameEditable)
- {
- new Label(body, SWT.NONE).setText("Name");
-
- nameTxt = new Text(body, SWT.BORDER);
-
- nameTxt.setText(setName);
-
- nameTxt.addKeyListener(new KeyAdapter()
- {
- @Override
- public void keyReleased(KeyEvent e)
- {
- checkComplete();
- }
- });
- }
-
- Composite table = new Composite(body, SWT.NONE);
- table.setLayout(new GridLayout(2, false));
- createTable(table);
-
- // layout
- body.setLayout(new GridLayout(2, false));
- if (nameEditable)
- {
- nameTxt.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
- }
- table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
- }
-
- public RepositoryViewData getData()
- {
- String name = nameEditable ? newName : setName;
- IRepositoryModel[] reps = repositories.toArray(new IRepositoryModel[repositories.size()]);
- return new RepositoryViewData(name, reps);
- }
-
- private void checkComplete()
- {
- if (nameEditable)
- {
- String name = nameTxt.getText();
- if (!name.equals(setName) && set.contains(name))
- {
- setErrorMessage("Set " + name + " already exists");
- Button b = getButton(IDialogConstants.OK_ID);
- b.setEnabled(false);
- }
- }
- setErrorMessage(null);
- Button b = getButton(IDialogConstants.OK_ID);
- b.setEnabled(true);
- }
-
- @Override
- protected void okPressed()
- {
- if (nameEditable)
- {
- newName = nameTxt.getText();
- }
- repositories = getRepositories();
- super.okPressed();
- }
-
- private void createTable(Composite body)
- {
- createViewer(body);
-
- Composite btns = new Composite(body, SWT.NONE);
- btns.setLayout(new GridLayout(1, true));
-
- createButtons(btns);
-
- // layout
- viewer.getTable().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
- btns.setLayoutData(new GridData(SWT.RIGHT, SWT.TOP, false, false));
- }
-
- private void createButtons(Composite parent)
- {
- upBtn = new Button(parent, SWT.PUSH);
- upBtn.setText("Up");
- upBtn.addSelectionListener(new SelectionAdapter()
- {
- @Override
- public void widgetSelected(SelectionEvent e)
- {
- up();
- }
- });
-
- downBtn = new Button(parent, SWT.PUSH);
- downBtn.setText("Down");
- downBtn.addSelectionListener(new SelectionAdapter()
- {
- @Override
- public void widgetSelected(SelectionEvent e)
- {
- down();
- }
- });
-
- setUpDownEnabled(false);
- }
-
- private void up()
- {
- IRepositoryModel model = (IRepositoryModel) ((StructuredSelection) viewer.getSelection()).getFirstElement();
- int i = repositories.indexOf(model);
- if (i > 0)
- {
- repositories.remove(i);
- repositories.add(i - 1, model);
- viewer.refresh();
- }
- }
-
- private void down()
- {
- IRepositoryModel model = (IRepositoryModel) ((StructuredSelection) viewer.getSelection()).getFirstElement();
- int i = repositories.indexOf(model);
- if (i < repositories.size() - 1)
- {
- repositories.remove(i);
- repositories.add(i + 1, model);
- viewer.refresh();
- }
- }
-
- private void createViewer(Composite parent)
- {
- viewer = CheckboxTableViewer.newCheckList(parent, SWT.BORDER);
-
- viewer.addSelectionChangedListener(new ISelectionChangedListener()
- {
- public void selectionChanged(SelectionChangedEvent event)
- {
- setUpDownEnabled(!viewer.getSelection().isEmpty());
- }
- });
-
- viewer.setContentProvider(new DefaultTableProvider()
- {
- public Object[] getElements(Object inputElement)
- {
- return toArray(inputElement);
- }
- });
-
- viewer.setLabelProvider(new DefaultLabelProvider()
- {
- public Image getImage(Object element)
- {
- return null;
- }
-
- public String getText(Object element)
- {
- IRepositoryModel m = (IRepositoryModel) element;
- return m.getName();
- }
- });
-
- viewer.setInput(repositories);
-
- for (IRepositoryModel m : repositories)
- {
- viewer.setChecked(m, true);
- }
-
- List<IRepositoryModel> allRepositories = SigilCore.getRepositoryConfiguration().loadRepositories();
-
- for (IRepositoryModel m : allRepositories)
- {
- if (!repositories.contains(m))
- {
- repositories.add(m);
- }
- }
-
- viewer.refresh();
- }
-
- private void setUpDownEnabled(boolean enabled)
- {
- upBtn.setEnabled(enabled);
- downBtn.setEnabled(enabled);
- }
-
- private List<IRepositoryModel> getRepositories()
- {
- ArrayList<IRepositoryModel> reps = new ArrayList<IRepositoryModel>();
-
- for (IRepositoryModel m : repositories)
- {
- if (viewer.getChecked(m))
- {
- reps.add(m);
- }
- }
-
- return reps;
- }
-}
diff --git a/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/internal/preferences/repository/RepositorySetsView.java b/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/internal/preferences/repository/RepositorySetsView.java
deleted file mode 100644
index bcb6248..0000000
--- a/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/internal/preferences/repository/RepositorySetsView.java
+++ /dev/null
@@ -1,267 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.felix.sigil.eclipse.ui.internal.preferences.repository;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.felix.sigil.eclipse.SigilCore;
-import org.apache.felix.sigil.eclipse.model.repository.IRepositoryModel;
-import org.apache.felix.sigil.eclipse.model.repository.IRepositorySet;
-import org.apache.felix.sigil.eclipse.model.repository.RepositorySet;
-import org.apache.felix.sigil.eclipse.ui.util.DefaultLabelProvider;
-import org.apache.felix.sigil.eclipse.ui.util.DefaultTableProvider;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Table;
-
-public class RepositorySetsView
-{
- private static final String DEFAULT = "default";
-
- private final RepositoriesPreferencePage page;
-
- private ArrayList<RepositoryViewData> sets = new ArrayList<RepositoryViewData>();
-
- private TableViewer setView;
-
- private RepositoryViewData defaultSet;
-
- public RepositorySetsView(RepositoriesPreferencePage page)
- {
- this.page = page;
- }
-
- public Control createContents(Composite parent)
- {
- // Create Controls
- Composite composite = new Composite(parent, SWT.NONE);
-
- Table table = new Table(composite, SWT.SINGLE | SWT.BORDER);
-
- // Table Viewer Setup
- setView = new TableViewer(table);
-
- setView.setContentProvider(new DefaultTableProvider()
- {
- public Object[] getElements(Object inputElement)
- {
- return toArray(inputElement);
- }
- });
-
- defaultSet = new RepositoryViewData(
- DEFAULT,
- SigilCore.getRepositoryConfiguration().getDefaultRepositorySet().getRepositories());
-
- sets.add(defaultSet);
-
- for (Map.Entry<String, IRepositorySet> e : SigilCore.getRepositoryConfiguration().loadRepositorySets().entrySet())
- {
- IRepositorySet s = e.getValue();
- sets.add(new RepositoryViewData(e.getKey(), s.getRepositories()));
- }
-
- setView.setLabelProvider(new DefaultLabelProvider()
- {
- public Image getImage(Object element)
- {
- return null;
- }
-
- public String getText(Object element)
- {
- RepositoryViewData data = (RepositoryViewData) element;
- return data.getName();
- }
- });
-
- setView.setInput(sets);
-
- // Layout
- composite.setLayout(new GridLayout(2, false));
- table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 6));
-
- createButtons(composite);
-
- return composite;
- }
-
- private void createButtons(final Composite composite)
- {
- final Button add = new Button(composite, SWT.PUSH);
- add.setText("Add...");
- add.setEnabled(true);
-
- final Button edit = new Button(composite, SWT.PUSH);
- edit.setText("Edit...");
- edit.setEnabled(false);
-
- final Button remove = new Button(composite, SWT.PUSH);
- remove.setText("Remove");
- remove.setEnabled(false);
- // Listeners
- add.addSelectionListener(new SelectionAdapter()
- {
- public void widgetSelected(SelectionEvent e)
- {
- add(composite);
- }
- });
-
- edit.addSelectionListener(new SelectionAdapter()
- {
- public void widgetSelected(SelectionEvent e)
- {
- IStructuredSelection sel = (IStructuredSelection) setView.getSelection();
- edit(composite, sel);
- }
- });
-
- remove.addSelectionListener(new SelectionAdapter()
- {
- public void widgetSelected(SelectionEvent e)
- {
- IStructuredSelection sel = (IStructuredSelection) setView.getSelection();
- remove(sel);
- }
- });
-
- setView.addSelectionChangedListener(new ISelectionChangedListener()
- {
- public void selectionChanged(SelectionChangedEvent event)
- {
- boolean enabled = !event.getSelection().isEmpty();
- if (enabled)
- {
- RepositoryViewData element = (RepositoryViewData) ((IStructuredSelection) event.getSelection()).getFirstElement();
- edit.setEnabled(true);
- remove.setEnabled(element != defaultSet);
- }
- else
- {
- edit.setEnabled(false);
- remove.setEnabled(false);
- }
- }
- });
-
- add.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
- edit.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
- remove.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
- }
-
- private void add(Control parent)
- {
- RepositorySetDialog wizard = new RepositorySetDialog(getShell(parent), getNames());
- if (wizard.open() == Window.OK)
- {
- sets.add(wizard.getData());
- updated();
- }
- }
-
- private void edit(Control parent, IStructuredSelection sel)
- {
- RepositoryViewData data = (RepositoryViewData) sel.getFirstElement();
- RepositorySetDialog wizard = new RepositorySetDialog(getShell(parent), data,
- data != defaultSet, getNames());
- if (wizard.open() == Window.OK)
- {
- if (data != defaultSet)
- {
- data.setName(wizard.getData().getName());
- }
- data.setRepositories(wizard.getData().getRepositories());
- updated();
- }
- }
-
- private Set<String> getNames()
- {
- HashSet<String> names = new HashSet<String>();
-
- for (RepositoryViewData view : sets)
- {
- if (view != defaultSet)
- {
- names.add(view.getName());
- }
- }
-
- return names;
- }
-
- private Shell getShell(Control parent)
- {
- return parent.getShell();
- }
-
- private void remove(IStructuredSelection sel)
- {
- if (sets.remove(sel.getFirstElement()))
- {
- updated();
- }
- }
-
- private void updated()
- {
- setView.refresh();
- page.changed();
- }
-
- public Map<String, IRepositorySet> getSets()
- {
- HashMap<String, IRepositorySet> ret = new HashMap<String, IRepositorySet>();
-
- for (RepositoryViewData data : sets)
- {
- if (data != defaultSet)
- {
- IRepositorySet set = new RepositorySet(data.getRepositories());
- ret.put(data.getName(), set);
- }
- }
-
- return ret;
- }
-
- public IRepositoryModel[] getDefaultRepositories()
- {
- return defaultSet.getRepositories();
- }
-}
diff --git a/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/internal/preferences/repository/RepositoryTypeSelectionPage.java b/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/internal/preferences/repository/RepositoryTypeSelectionPage.java
index 309ab09..f36a85e 100644
--- a/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/internal/preferences/repository/RepositoryTypeSelectionPage.java
+++ b/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/internal/preferences/repository/RepositoryTypeSelectionPage.java
@@ -102,7 +102,7 @@
{
IStructuredSelection sel = (IStructuredSelection) event.getSelection();
IRepositoryType type = (IRepositoryType) sel.getFirstElement();
- repositoryElement = SigilCore.getRepositoryConfiguration().newRepositoryElement(
+ repositoryElement = SigilCore.getRepositoryPreferences().newRepositoryElement(
type);
selectWizardNode(new RepositoryWizardNode(repositoryElement));
}
@@ -110,7 +110,7 @@
});
ArrayList<IRepositoryType> descriptors = new ArrayList<IRepositoryType>(
- SigilCore.getRepositoryConfiguration().loadRepositoryTypes());
+ SigilCore.getRepositoryPreferences().loadRepositoryTypes());
for (Iterator<IRepositoryType> i = descriptors.iterator(); i.hasNext();)
{
diff --git a/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/internal/views/RepositoryViewPart.java b/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/internal/views/RepositoryViewPart.java
index 9a831c0..755f146 100644
--- a/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/internal/views/RepositoryViewPart.java
+++ b/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/internal/views/RepositoryViewPart.java
@@ -112,7 +112,7 @@
public RepositoryAction(IBundleRepository rep)
{
this.rep = rep;
- this.model = SigilCore.getRepositoryConfiguration().findRepository(
+ this.model = SigilCore.getRepositoryPreferences().findRepository(
rep.getId());
}
diff --git a/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/internal/views/resolution/BundleResolverView.java b/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/internal/views/resolution/BundleResolverView.java
index ad954c5..dfac116 100644
--- a/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/internal/views/resolution/BundleResolverView.java
+++ b/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/internal/views/resolution/BundleResolverView.java
@@ -259,7 +259,7 @@
};
ISigilProjectModel project = findProject(element);
- IRepositoryManager repository = SigilCore.getRepositoryManager(project);
+ IRepositoryManager repository = project.getRepositoryManager();
int options = ResolutionConfig.IGNORE_ERRORS;
diff --git a/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/util/ExportedPackageFinder.java b/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/util/ExportedPackageFinder.java
index 65eab4f..6b268b1 100644
--- a/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/util/ExportedPackageFinder.java
+++ b/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/util/ExportedPackageFinder.java
@@ -25,7 +25,6 @@
import org.apache.felix.sigil.common.model.IModelElement;
import org.apache.felix.sigil.common.model.IModelWalker;
import org.apache.felix.sigil.common.model.osgi.IPackageExport;
-import org.apache.felix.sigil.eclipse.SigilCore;
import org.apache.felix.sigil.eclipse.model.project.ISigilProjectModel;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
@@ -66,7 +65,7 @@
return !monitor.isCanceled();
}
};
- SigilCore.getRepositoryManager(sigil).visit(walker);
+ sigil.getRepositoryManager().visit(walker);
if (exports.size() > 0)
{
accumulator.addElements(exports);
diff --git a/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/util/ModelLabelProvider.java b/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/util/ModelLabelProvider.java
index 74fbcf5..71d32cb 100644
--- a/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/util/ModelLabelProvider.java
+++ b/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/util/ModelLabelProvider.java
@@ -93,7 +93,7 @@
if (element instanceof IBundleRepository)
{
IBundleRepository rep = (IBundleRepository) element;
- IRepositoryModel config = SigilCore.getRepositoryConfiguration().findRepository(
+ IRepositoryModel config = SigilCore.getRepositoryPreferences().findRepository(
rep.getId());
return config.getType().getIcon();
}
@@ -168,7 +168,7 @@
if (element instanceof IBundleRepository)
{
IBundleRepository rep = (IBundleRepository) element;
- IRepositoryModel config = SigilCore.getRepositoryConfiguration().findRepository(
+ IRepositoryModel config = SigilCore.getRepositoryPreferences().findRepository(
rep.getId());
return config.getName();
}
diff --git a/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/util/ResourcesDialogHelper.java b/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/util/ResourcesDialogHelper.java
index a9b1b3c..143803e 100644
--- a/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/util/ResourcesDialogHelper.java
+++ b/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/util/ResourcesDialogHelper.java
@@ -347,7 +347,7 @@
return !monitor.isCanceled();
}
};
- SigilCore.getRepositoryManager(sigil).visit(walker);
+ sigil.getRepositoryManager().visit(walker);
if (!bundles.isEmpty())
{
dialog.addElements(bundles);