Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2013-08-14 16:54:29 +0000
committerEike Stepper2013-08-14 16:54:29 +0000
commit0566397acda7c751212a969f228daa0c6d2933d9 (patch)
treeefb7e7baa50470fc09d40300ca29896dbed4fd55
parentcf3458afc4fbe2fbe5b0b547134daaaa25be82d9 (diff)
downloadcdo-0566397acda7c751212a969f228daa0c6d2933d9.tar.gz
cdo-0566397acda7c751212a969f228daa0c6d2933d9.tar.xz
cdo-0566397acda7c751212a969f228daa0c6d2933d9.zip
Make workingsets configurable
-rw-r--r--features/org.eclipse.emf.cdo.releng.workingsets-feature/feature.xml16
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.setup.edit/META-INF/MANIFEST.MF6
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.setup.edit/plugin.properties1
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.setup.edit/src/org/eclipse/emf/cdo/releng/setup/provider/ProjectItemProvider.java6
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.setup.edit/src/org/eclipse/emf/cdo/releng/setup/provider/SetupEditPlugin.java3
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.setup.ide/Setup IDE.launch4
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.setup.ide/src/org/eclipse/emf/cdo/releng/setup/ide/SetupIDE.java6
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.setup.ide/src/org/eclipse/emf/cdo/releng/setup/ide/WorkingSets.java81
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.setup/META-INF/MANIFEST.MF1
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.setup/model/Configuration.xmi81
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.setup/model/setup.ecore2
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.setup/model/setup.ecorediag35
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.setup/model/setup.genmodel27
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/setup/Project.java28
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/setup/SetupPackage.java44
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/setup/impl/ProjectImpl.java80
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/setup/impl/SetupPackageImpl.java22
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.version.ui/META-INF/MANIFEST.MF14
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.version.ui/src/org/eclipse/emf/cdo/releng/version/ui/preferences/VersionBuilderPreferencePage.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.edit/.classpath7
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.edit/.project33
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.edit/.settings/org.eclipse.jdt.core.prefs405
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.edit/.settings/org.eclipse.jdt.ui.prefs119
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.edit/.settings/org.eclipse.ltk.core.refactoring.prefs3
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.edit/.settings/org.eclipse.mylyn.tasks.ui.prefs4
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.edit/.settings/org.eclipse.mylyn.team.ui.prefs3
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.edit/.settings/org.eclipse.pde.api.tools.prefs95
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.edit/.settings/org.eclipse.pde.prefs32
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.edit/META-INF/MANIFEST.MF15
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.edit/about.html28
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.edit/build.properties14
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.edit/copyright.txt8
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.edit/icons/full/obj16/NamePredicate.gifbin0 -> 225 bytes
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.edit/icons/full/obj16/WorkingSet.gifbin0 -> 345 bytes
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.edit/icons/full/obj16/WorkingSetGroup.gifbin0 -> 366 bytes
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.edit/plugin.properties35
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.edit/plugin.xml22
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.edit/src/org/eclipse/emf/cdo/releng/workingsets/provider/NamePredicateItemProvider.java169
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.edit/src/org/eclipse/emf/cdo/releng/workingsets/provider/WorkingSetGroupItemProvider.java187
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.edit/src/org/eclipse/emf/cdo/releng/workingsets/provider/WorkingSetItemProvider.java210
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.edit/src/org/eclipse/emf/cdo/releng/workingsets/provider/WorkingSetsEditPlugin.java100
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.edit/src/org/eclipse/emf/cdo/releng/workingsets/provider/WorkingSetsItemProviderAdapterFactory.java284
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.editor/.classpath7
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.editor/.project33
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.editor/.settings/org.eclipse.jdt.core.prefs381
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.editor/.settings/org.eclipse.jdt.ui.prefs119
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.editor/.settings/org.eclipse.ltk.core.refactoring.prefs3
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.editor/.settings/org.eclipse.mylyn.tasks.ui.prefs4
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.editor/.settings/org.eclipse.mylyn.team.ui.prefs3
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.editor/.settings/org.eclipse.pde.api.tools.prefs95
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.editor/.settings/org.eclipse.pde.prefs32
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.editor/META-INF/MANIFEST.MF18
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.editor/about.html28
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.editor/build.properties14
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.editor/copyright.txt8
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.editor/icons/full/obj16/WorkingSetsModelFile.gifbin0 -> 366 bytes
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.editor/icons/full/wizban/NewWorkingSets.gifbin0 -> 8344 bytes
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.editor/plugin.properties60
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.editor/plugin.xml53
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.editor/src/org/eclipse/emf/cdo/releng/workingsets/presentation/EarlyStartup.java (renamed from plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/EarlyStartup.java)4
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.editor/src/org/eclipse/emf/cdo/releng/workingsets/presentation/WorkingSetManager.java282
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.editor/src/org/eclipse/emf/cdo/releng/workingsets/presentation/WorkingSetsActionBarContributor.java478
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.editor/src/org/eclipse/emf/cdo/releng/workingsets/presentation/WorkingSetsEditor.java1733
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.editor/src/org/eclipse/emf/cdo/releng/workingsets/presentation/WorkingSetsEditorPlugin.java120
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.editor/src/org/eclipse/emf/cdo/releng/workingsets/presentation/WorkingSetsModelWizard.java680
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets.editor/src/org/eclipse/emf/cdo/releng/workingsets/presentation/WorkingSetsPreferencePage.java151
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets/.settings/org.eclipse.core.resources.prefs3
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets/META-INF/MANIFEST.MF10
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets/build.properties3
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets/model/workingsets.ecore25
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets/model/workingsets.ecorediag120
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets/model/workingsets.genmodel30
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets/plugin.xml11
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/Activator.java214
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/NamePredicate.java57
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/Predicate.java37
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/WorkingSet.java77
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/WorkingSetGroup.java50
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/WorkingSetsFactory.java69
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/WorkingSetsPackage.java467
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/impl/NamePredicateImpl.java216
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/impl/PreferencesURIHandlerImpl.java140
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/impl/WorkingSetGroupImpl.java172
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/impl/WorkingSetImpl.java246
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/impl/WorkingSetsFactoryImpl.java174
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/impl/WorkingSetsPackageImpl.java351
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/util/WorkingSetsAdapterFactory.java203
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/util/WorkingSetsSwitch.java205
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/util/WorkingSetsUtil.java63
89 files changed, 9216 insertions, 265 deletions
diff --git a/features/org.eclipse.emf.cdo.releng.workingsets-feature/feature.xml b/features/org.eclipse.emf.cdo.releng.workingsets-feature/feature.xml
index f4309321f8..374532683a 100644
--- a/features/org.eclipse.emf.cdo.releng.workingsets-feature/feature.xml
+++ b/features/org.eclipse.emf.cdo.releng.workingsets-feature/feature.xml
@@ -12,7 +12,7 @@
<feature
id="org.eclipse.emf.cdo.releng.workingsets"
label="%featureName"
- version="1.1.100.qualifier"
+ version="1.2.0.qualifier"
provider-name="%providerName"
image="eclipse_update_120.jpg"
license-feature="org.eclipse.emf.cdo.license"
@@ -42,4 +42,18 @@
version="0.0.0"
unpack="false"/>
+ <plugin
+ id="org.eclipse.emf.cdo.releng.workingsets.edit"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.emf.cdo.releng.workingsets.editor"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
</feature>
diff --git a/plugins/org.eclipse.emf.cdo.releng.setup.edit/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.releng.setup.edit/META-INF/MANIFEST.MF
index 6011da1a08..67953d3baa 100644
--- a/plugins/org.eclipse.emf.cdo.releng.setup.edit/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.cdo.releng.setup.edit/META-INF/MANIFEST.MF
@@ -10,6 +10,8 @@ Bundle-Localization: plugin
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Export-Package: org.eclipse.emf.cdo.releng.setup.provider;version="1.0.0"
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)",
- org.eclipse.emf.cdo.releng.setup;visibility:=reexport;bundle-version="[1.0.0,2.0.0)",
- org.eclipse.emf.edit;visibility:=reexport;bundle-version="[2.5.0,3.0.0)"
+ org.eclipse.emf.cdo.releng.setup;bundle-version="[1.0.0,2.0.0)";visibility:=reexport,
+ org.eclipse.emf.edit;bundle-version="[2.5.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.cdo.releng.workingsets;bundle-version="[1.0.0,2.0.0)";visibility:=reexport,
+ org.eclipse.emf.cdo.releng.workingsets.edit;bundle-version="[1.0.0,2.0.0)";visibility:=reexport
Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.emf.cdo.releng.setup.edit/plugin.properties b/plugins/org.eclipse.emf.cdo.releng.setup.edit/plugin.properties
index 5dd66ba4c0..3226421baa 100644
--- a/plugins/org.eclipse.emf.cdo.releng.setup.edit/plugin.properties
+++ b/plugins/org.eclipse.emf.cdo.releng.setup.edit/plugin.properties
@@ -96,3 +96,4 @@ _UI_LinkLocation_type = Link Location
_UI_Preferences_linkLocations_feature = Link Locations
_UI_LinkLocation_path_feature = Path
_UI_LinkLocation_name_feature = Name
+_UI_Project_workingSetGroup_feature = Working Set Group
diff --git a/plugins/org.eclipse.emf.cdo.releng.setup.edit/src/org/eclipse/emf/cdo/releng/setup/provider/ProjectItemProvider.java b/plugins/org.eclipse.emf.cdo.releng.setup.edit/src/org/eclipse/emf/cdo/releng/setup/provider/ProjectItemProvider.java
index 1c13061d05..f68b2d32fb 100644
--- a/plugins/org.eclipse.emf.cdo.releng.setup.edit/src/org/eclipse/emf/cdo/releng/setup/provider/ProjectItemProvider.java
+++ b/plugins/org.eclipse.emf.cdo.releng.setup.edit/src/org/eclipse/emf/cdo/releng/setup/provider/ProjectItemProvider.java
@@ -14,6 +14,7 @@ import org.eclipse.emf.cdo.releng.setup.Project;
import org.eclipse.emf.cdo.releng.setup.SetupFactory;
import org.eclipse.emf.cdo.releng.setup.SetupPackage;
+import org.eclipse.emf.cdo.releng.workingsets.WorkingSetsFactory;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.ecore.EStructuralFeature;
@@ -100,6 +101,7 @@ public class ProjectItemProvider extends ToolInstallationItemProvider implements
super.getChildrenFeatures(object);
childrenFeatures.add(SetupPackage.Literals.PROJECT__BRANCHES);
childrenFeatures.add(SetupPackage.Literals.PROJECT__API_BASELINES);
+ childrenFeatures.add(SetupPackage.Literals.PROJECT__WORKING_SET_GROUP);
}
return childrenFeatures;
}
@@ -162,6 +164,7 @@ public class ProjectItemProvider extends ToolInstallationItemProvider implements
return;
case SetupPackage.PROJECT__BRANCHES:
case SetupPackage.PROJECT__API_BASELINES:
+ case SetupPackage.PROJECT__WORKING_SET_GROUP:
fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
return;
}
@@ -185,6 +188,9 @@ public class ProjectItemProvider extends ToolInstallationItemProvider implements
newChildDescriptors.add(createChildParameter(SetupPackage.Literals.PROJECT__API_BASELINES,
SetupFactory.eINSTANCE.createApiBaseline()));
+
+ newChildDescriptors.add(createChildParameter(SetupPackage.Literals.PROJECT__WORKING_SET_GROUP,
+ WorkingSetsFactory.eINSTANCE.createWorkingSetGroup()));
}
}
diff --git a/plugins/org.eclipse.emf.cdo.releng.setup.edit/src/org/eclipse/emf/cdo/releng/setup/provider/SetupEditPlugin.java b/plugins/org.eclipse.emf.cdo.releng.setup.edit/src/org/eclipse/emf/cdo/releng/setup/provider/SetupEditPlugin.java
index b6d6eeadc0..304ee79e5b 100644
--- a/plugins/org.eclipse.emf.cdo.releng.setup.edit/src/org/eclipse/emf/cdo/releng/setup/provider/SetupEditPlugin.java
+++ b/plugins/org.eclipse.emf.cdo.releng.setup.edit/src/org/eclipse/emf/cdo/releng/setup/provider/SetupEditPlugin.java
@@ -10,6 +10,7 @@
*/
package org.eclipse.emf.cdo.releng.setup.provider;
+import org.eclipse.emf.cdo.releng.workingsets.provider.WorkingSetsEditPlugin;
import org.eclipse.emf.common.EMFPlugin;
import org.eclipse.emf.common.util.ResourceLocator;
@@ -45,7 +46,7 @@ public final class SetupEditPlugin extends EMFPlugin
*/
public SetupEditPlugin()
{
- super(new ResourceLocator[] {});
+ super(new ResourceLocator[] { WorkingSetsEditPlugin.INSTANCE, });
}
/**
diff --git a/plugins/org.eclipse.emf.cdo.releng.setup.ide/Setup IDE.launch b/plugins/org.eclipse.emf.cdo.releng.setup.ide/Setup IDE.launch
index fd7434d9b5..803e48a022 100644
--- a/plugins/org.eclipse.emf.cdo.releng.setup.ide/Setup IDE.launch
+++ b/plugins/org.eclipse.emf.cdo.releng.setup.ide/Setup IDE.launch
@@ -12,7 +12,7 @@
<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/Setup IDE"/>
<booleanAttribute key="default" value="false"/>
<booleanAttribute key="includeOptional" value="true"/>
-<stringAttribute key="location" value="C:\develop\cdo\4.2\ws"/>
+<stringAttribute key="location" value="D:\sandbox\tmp4\emf\master\ws"/>
<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
@@ -25,7 +25,7 @@
<stringAttribute key="pde.version" value="3.3"/>
<stringAttribute key="product" value="org.eclipse.platform.ide"/>
<stringAttribute key="selected_target_plugins" value="com.ibm.icu@default:default,com.jcraft.jsch@default:default,javaewah@default:default,javax.annotation@default:default,javax.inject@default:default,javax.servlet@default:default,javax.xml@default:default,org.apache.ant@default:default,org.apache.batik.css@default:default,org.apache.batik.util.gui@default:default,org.apache.batik.util@default:default,org.apache.commons.codec@default:default,org.apache.commons.logging@default:default,org.apache.httpcomponents.httpclient@default:default,org.apache.httpcomponents.httpcore@default:default,org.apache.lucene.analysis@default:default,org.apache.lucene.core@default:default,org.eclipse.ant.core@default:default,org.eclipse.ant.launching@default:default,org.eclipse.ant.ui@default:default,org.eclipse.buckminster.ant@default:default,org.eclipse.buckminster.cmdline@default:default,org.eclipse.buckminster.core@default:default,org.eclipse.buckminster.download@default:default,org.eclipse.buckminster.executor@default:default,org.eclipse.buckminster.fetcher@default:default,org.eclipse.buckminster.generic.ui@default:default,org.eclipse.buckminster.generic@default:default,org.eclipse.buckminster.git@default:default,org.eclipse.buckminster.installer@default:default,org.eclipse.buckminster.jarprocessor@default:default,org.eclipse.buckminster.jdt@default:default,org.eclipse.buckminster.junit@default:default,org.eclipse.buckminster.model.common.edit@default:default,org.eclipse.buckminster.model.common@default:default,org.eclipse.buckminster.mspec.edit@default:default,org.eclipse.buckminster.mspec.editor@default:default,org.eclipse.buckminster.mspec@default:default,org.eclipse.buckminster.osgi.filter@default:default,org.eclipse.buckminster.pde.ui@default:default,org.eclipse.buckminster.pde@default:default,org.eclipse.buckminster.rmap.edit@default:default,org.eclipse.buckminster.rmap.editor@default:default,org.eclipse.buckminster.rmap.pde.edit@default:default,org.eclipse.buckminster.rmap.pde@default:default,org.eclipse.buckminster.rmap@default:default,org.eclipse.buckminster.runtime@default:default,org.eclipse.buckminster.sax@default:default,org.eclipse.buckminster.ui@default:default,org.eclipse.compare.core@default:default,org.eclipse.compare@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.core.databinding@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.externaltools@default:default,org.eclipse.core.filebuffers@default:default,org.eclipse.core.filesystem.win32.x86_64@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.net.win32.x86_64@default:false,org.eclipse.core.net@default:default,org.eclipse.core.resources.win32.x86_64@default:false,org.eclipse.core.resources@default:default,org.eclipse.core.runtime.compatibility.auth@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.core.runtime.compatibility@default:default,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.debug.core@default:default,org.eclipse.debug.ui@default:default,org.eclipse.e4.core.commands@default:default,org.eclipse.e4.core.contexts@default:default,org.eclipse.e4.core.di.extensions@default:default,org.eclipse.e4.core.di@default:default,org.eclipse.e4.core.services@default:default,org.eclipse.e4.ui.bindings@default:default,org.eclipse.e4.ui.css.core@default:default,org.eclipse.e4.ui.css.swt.theme@default:default,org.eclipse.e4.ui.css.swt@default:default,org.eclipse.e4.ui.di@default:default,org.eclipse.e4.ui.model.workbench@default:default,org.eclipse.e4.ui.services@default:default,org.eclipse.e4.ui.widgets@default:default,org.eclipse.e4.ui.workbench.addons.swt@default:default,org.eclipse.e4.ui.workbench.renderers.swt@default:default,org.eclipse.e4.ui.workbench.swt@default:default,org.eclipse.e4.ui.workbench3@default:default,org.eclipse.e4.ui.workbench@default:default,org.eclipse.ecf.filetransfer@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.provider.filetransfer.httpclient4.ssl@default:false,org.eclipse.ecf.provider.filetransfer.httpclient4@default:default,org.eclipse.ecf.provider.filetransfer.ssl@default:false,org.eclipse.ecf.provider.filetransfer@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.ecf@default:default,org.eclipse.egit.core@default:default,org.eclipse.egit.fetchfactory@default:default,org.eclipse.egit.ui@default:default,org.eclipse.egit@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.emf.edit@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.bidi@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.event@default:default,org.eclipse.equinox.frameworkadmin.equinox@default:default,org.eclipse.equinox.frameworkadmin@default:default,org.eclipse.equinox.http.jetty@default:default,org.eclipse.equinox.http.servlet@default:default,org.eclipse.equinox.p2.artifact.repository@default:default,org.eclipse.equinox.p2.console@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.p2.director.app@default:default,org.eclipse.equinox.p2.director@default:default,org.eclipse.equinox.p2.directorywatcher@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.p2.extensionlocation@default:default,org.eclipse.equinox.p2.garbagecollector@default:default,org.eclipse.equinox.p2.jarprocessor@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.equinox.p2.operations@default:default,org.eclipse.equinox.p2.publisher.eclipse@default:default,org.eclipse.equinox.p2.publisher@default:default,org.eclipse.equinox.p2.ql@default:default,org.eclipse.equinox.p2.reconciler.dropins@default:default,org.eclipse.equinox.p2.repository.tools@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.equinox.p2.touchpoint.eclipse@default:default,org.eclipse.equinox.p2.touchpoint.natives@default:default,org.eclipse.equinox.p2.transport.ecf@default:default,org.eclipse.equinox.p2.ui.importexport@default:default,org.eclipse.equinox.p2.ui.sdk.scheduler@default:default,org.eclipse.equinox.p2.ui.sdk@default:default,org.eclipse.equinox.p2.ui@default:default,org.eclipse.equinox.p2.updatechecker@default:default,org.eclipse.equinox.p2.updatesite@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.security.ui@default:default,org.eclipse.equinox.security.win32.x86_64@default:false,org.eclipse.equinox.security@default:default,org.eclipse.equinox.simpleconfigurator.manipulator@default:default,org.eclipse.equinox.simpleconfigurator@1:true,org.eclipse.equinox.util@default:default,org.eclipse.help.base@default:default,org.eclipse.help.ui@default:default,org.eclipse.help@default:default,org.eclipse.jdt.compiler.apt@default:false,org.eclipse.jdt.compiler.tool@default:false,org.eclipse.jdt.core.manipulation@default:default,org.eclipse.jdt.core@default:default,org.eclipse.jdt.debug.ui@default:default,org.eclipse.jdt.debug@default:default,org.eclipse.jdt.junit.core@default:default,org.eclipse.jdt.junit.runtime@default:default,org.eclipse.jdt.junit@default:default,org.eclipse.jdt.launching@default:default,org.eclipse.jdt.ui@default:default,org.eclipse.jdt@default:default,org.eclipse.jetty.continuation@default:default,org.eclipse.jetty.http@default:default,org.eclipse.jetty.io@default:default,org.eclipse.jetty.security@default:default,org.eclipse.jetty.server@default:default,org.eclipse.jetty.servlet@default:default,org.eclipse.jetty.util@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface.text@default:default,org.eclipse.jface@default:default,org.eclipse.jgit@default:default,org.eclipse.jsch.core@default:default,org.eclipse.jsch.ui@default:default,org.eclipse.ltk.core.refactoring@default:default,org.eclipse.ltk.ui.refactoring@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true,org.eclipse.pde.api.tools.ui@default:default,org.eclipse.pde.api.tools@default:default,org.eclipse.pde.build@default:default,org.eclipse.pde.core@default:default,org.eclipse.pde.ds.core@default:default,org.eclipse.pde.ds.ui@default:default,org.eclipse.pde.junit.runtime@default:default,org.eclipse.pde.launching@default:default,org.eclipse.pde.runtime@default:default,org.eclipse.pde.ua.core@default:default,org.eclipse.pde.ua.ui@default:default,org.eclipse.pde.ui@default:default,org.eclipse.pde@default:default,org.eclipse.platform@default:default,org.eclipse.search@default:default,org.eclipse.swt.win32.win32.x86_64@default:false,org.eclipse.swt@default:default,org.eclipse.team.core@default:default,org.eclipse.team.ui@default:default,org.eclipse.text@default:default,org.eclipse.ui.browser@default:default,org.eclipse.ui.cheatsheets@default:default,org.eclipse.ui.console@default:default,org.eclipse.ui.editors@default:default,org.eclipse.ui.externaltools@default:default,org.eclipse.ui.forms@default:default,org.eclipse.ui.ide.application@default:default,org.eclipse.ui.ide@default:default,org.eclipse.ui.intro.universal@default:default,org.eclipse.ui.intro@default:default,org.eclipse.ui.navigator.resources@default:default,org.eclipse.ui.navigator@default:default,org.eclipse.ui.net@default:default,org.eclipse.ui.trace@default:default,org.eclipse.ui.views.log@default:default,org.eclipse.ui.views.properties.tabbed@default:default,org.eclipse.ui.views@default:default,org.eclipse.ui.win32@default:false,org.eclipse.ui.workbench.texteditor@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.eclipse.update.configurator@3:true,org.hamcrest.core*1.3.0.v201303031735@default:default,org.junit@default:default,org.objectweb.asm@default:default,org.sat4j.core@default:default,org.sat4j.pb@default:default,org.w3c.css.sac@default:default,org.w3c.dom.smil@default:default,org.w3c.dom.svg@default:default"/>
-<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.cdo.ecore.retrofit@default:false,org.eclipse.emf.cdo.releng.setup.edit@default:default,org.eclipse.emf.cdo.releng.setup.editor@default:default,org.eclipse.emf.cdo.releng.setup.ide@default:default,org.eclipse.emf.cdo.releng.setup.ui@default:default,org.eclipse.emf.cdo.releng.setup@default:default,org.eclipse.net4j.util@default:default"/>
+<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.cdo.ecore.retrofit@default:false,org.eclipse.emf.cdo.releng.setup.edit@default:default,org.eclipse.emf.cdo.releng.setup.editor@default:default,org.eclipse.emf.cdo.releng.setup.ide@default:default,org.eclipse.emf.cdo.releng.setup.ui@default:default,org.eclipse.emf.cdo.releng.setup@default:default,org.eclipse.emf.cdo.releng.workingsets.edit@default:default,org.eclipse.emf.cdo.releng.workingsets.editor@default:default,org.eclipse.emf.cdo.releng.workingsets@default:default,org.eclipse.net4j.util@default:default"/>
<booleanAttribute key="show_selected_only" value="false"/>
<stringAttribute key="templateConfig" value="${target_home}\configuration\config.ini"/>
<booleanAttribute key="tracing" value="false"/>
diff --git a/plugins/org.eclipse.emf.cdo.releng.setup.ide/src/org/eclipse/emf/cdo/releng/setup/ide/SetupIDE.java b/plugins/org.eclipse.emf.cdo.releng.setup.ide/src/org/eclipse/emf/cdo/releng/setup/ide/SetupIDE.java
index 4a6641fb78..8cff533693 100644
--- a/plugins/org.eclipse.emf.cdo.releng.setup.ide/src/org/eclipse/emf/cdo/releng/setup/ide/SetupIDE.java
+++ b/plugins/org.eclipse.emf.cdo.releng.setup.ide/src/org/eclipse/emf/cdo/releng/setup/ide/SetupIDE.java
@@ -118,6 +118,12 @@ public final class SetupIDE
restart = true;
}
+ if (state < 7)
+ {
+ WorkingSets.init();
+ saveState(7);
+ }
+
if (state < DONE)
{
Prefs.initLate();
diff --git a/plugins/org.eclipse.emf.cdo.releng.setup.ide/src/org/eclipse/emf/cdo/releng/setup/ide/WorkingSets.java b/plugins/org.eclipse.emf.cdo.releng.setup.ide/src/org/eclipse/emf/cdo/releng/setup/ide/WorkingSets.java
new file mode 100644
index 0000000000..e78ef47111
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.setup.ide/src/org/eclipse/emf/cdo/releng/setup/ide/WorkingSets.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2013 Eike Stepper (Berlin, Germany) and others.
+ * 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
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.releng.setup.ide;
+
+import org.eclipse.emf.cdo.releng.workingsets.WorkingSetGroup;
+import org.eclipse.emf.cdo.releng.workingsets.util.WorkingSetsUtil;
+
+import org.eclipse.emf.ecore.resource.Resource;
+
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.IViewReference;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+
+import java.io.IOException;
+import java.lang.reflect.Method;
+
+/**
+ * @author Eike Stepper
+ */
+public final class WorkingSets
+{
+ private static final SetupContext CONTEXT = Activator.getDefault();
+
+ private static final IWorkbench WORKBENCH = PlatformUI.getWorkbench();
+
+ private static final String JAVA_PACKAGE_EXPLORER_VIEW_ID = "org.eclipse.jdt.ui.PackageExplorer";
+
+ public static void init() throws IOException
+ {
+ WorkingSetGroup workingSetGroup = CONTEXT.getSetup().getBranch().getProject().getWorkingSetGroup();
+ if (workingSetGroup != null)
+ {
+ initPackageExplorer();
+
+ WorkingSetGroup defaultWorkingSetGroup = WorkingSetsUtil.getWorkingSetGroup();
+ Resource resource = defaultWorkingSetGroup.eResource();
+ resource.getContents().set(0, workingSetGroup);
+ resource.save(null);
+ }
+ }
+
+ private static void initPackageExplorer()
+ {
+ IWorkbenchWindow workbenchWindow = WORKBENCH.getWorkbenchWindows()[0];
+ for (final IViewReference viewReference : workbenchWindow.getActivePage().getViewReferences())
+ {
+ if (JAVA_PACKAGE_EXPLORER_VIEW_ID.equals(viewReference.getId()))
+ {
+ workbenchWindow.getShell().getDisplay().asyncExec(new Runnable()
+ {
+ public void run()
+ {
+ IViewPart view = viewReference.getView(false);
+ if (view != null)
+ {
+ try
+ {
+ Method method = view.getClass().getMethod("rootModeChanged", int.class);
+ method.invoke(view, 2);
+ }
+ catch (Exception ex)
+ {
+ Activator.log(ex);
+ }
+ }
+ }
+ });
+ }
+ }
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.releng.setup/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.releng.setup/META-INF/MANIFEST.MF
index b683de8db6..e0540563db 100644
--- a/plugins/org.eclipse.emf.cdo.releng.setup/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.cdo.releng.setup/META-INF/MANIFEST.MF
@@ -8,6 +8,7 @@ Bundle-Vendor: %providerName
Bundle-Localization: plugin
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)",
org.eclipse.emf.ecore;bundle-version="[2.5.0,3.0.0)",
+ org.eclipse.emf.cdo.releng.workingsets;bundle-version="[1.0.0,2.0.0)";visibility:=reexport,
org.eclipse.emf.ecore.xmi;bundle-version="[2.5.0,3.0.0)"
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.emf.cdo.releng.setup/model/Configuration.xmi b/plugins/org.eclipse.emf.cdo.releng.setup/model/Configuration.xmi
index 8570d0c384..ac1486eda3 100644
--- a/plugins/org.eclipse.emf.cdo.releng.setup/model/Configuration.xmi
+++ b/plugins/org.eclipse.emf.cdo.releng.setup/model/Configuration.xmi
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="ASCII"?>
-<setup:Configuration xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:setup="http://www.eclipse.org/CDO/releng/setup/1.0">
+<setup:Configuration xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:setup="http://www.eclipse.org/CDO/releng/setup/1.0" xmlns:workingsets="http://www.eclipse.org/CDO/releng/workingsets/1.0">
<projects name="EMF">
<branches name="master" mspecFilePath="emf/releng/org.eclipse.emf.releng.setup.core/buckminster.mspec">
<directorCalls>
@@ -13,6 +13,44 @@
<gitClones name="emf" remoteURI="ssh://git.eclipse.org:29418/emf/org.eclipse.emf" checkoutBranch="master"/>
<gitClones name="xsd" remoteURI="ssh://git.eclipse.org/gitroot/xsd/org.eclipse.xsd.git" checkoutBranch="master"/>
</branches>
+ <workingSetGroup>
+ <workingSets name="XSD Examples">
+ <predicates xsi:type="workingsets:NamePredicate" pattern="org\.eclipse\.xsd\.example[^-]*"/>
+ <predicates xsi:type="workingsets:NamePredicate" pattern="org\.eclipse\.xsd\.cheatsheets"/>
+ </workingSets>
+ <workingSets name="XSD">
+ <predicates xsi:type="workingsets:NamePredicate" pattern="org\.eclipse\.xsd[^-]*"/>
+ <predicates xsi:type="workingsets:NamePredicate" pattern="org\.eclipse\.emf\.mapping\.xsd2ecore[^-]*"/>
+ </workingSets>
+ <workingSets name="XSD Features">
+ <predicates xsi:type="workingsets:NamePredicate" pattern="org\.eclipse\.xsd.*-feature"/>
+ </workingSets>
+ <workingSets name="EMF ODA">
+ <predicates xsi:type="workingsets:NamePredicate" pattern="org\.eclipse\.emf\.oda[^-]*"/>
+ </workingSets>
+ <workingSets name="EMF ODA Features">
+ <predicates xsi:type="workingsets:NamePredicate" pattern="org\.eclipse\.emf\.oda.*-feature"/>
+ </workingSets>
+ <workingSets name="EMF Features">
+ <predicates xsi:type="workingsets:NamePredicate" pattern="org\.eclipse\.emf.*-feature"/>
+ </workingSets>
+ <workingSets name="EMF Releng">
+ <predicates xsi:type="workingsets:NamePredicate" pattern="org\.eclipse\.emf\.releng[^-]*"/>
+ </workingSets>
+ <workingSets name="EMF Examples">
+ <predicates xsi:type="workingsets:NamePredicate" pattern="org\.eclipse\.emf\.example[^-]*"/>
+ <predicates xsi:type="workingsets:NamePredicate" pattern="org\.eclipse\.emf\.java[^-]*"/>
+ <predicates xsi:type="workingsets:NamePredicate" pattern="org\.eclipse\.emf\.exporter\.html[^-]*"/>
+ <predicates xsi:type="workingsets:NamePredicate" pattern="org\.eclipse\.emf\.activities[^-]*"/>
+ <predicates xsi:type="workingsets:NamePredicate" pattern="org\.eclipse\.emf\.cheatsheets[^-]*"/>
+ </workingSets>
+ <workingSets name="EMF Tests">
+ <predicates xsi:type="workingsets:NamePredicate" pattern="org\.eclipse\.emf\.test[^-]*"/>
+ </workingSets>
+ <workingSets name="EMF">
+ <predicates xsi:type="workingsets:NamePredicate" pattern="org\.eclipse\.emf[^-]*"/>
+ </workingSets>
+ </workingSetGroup>
</projects>
<projects name="CDO">
<directorCalls>
@@ -67,6 +105,47 @@
<gitClones name="cdo" remoteURI="ssh://git.eclipse.org:29418/cdo/cdo" checkoutBranch="streams/4.2-maintenance"/>
</branches>
<apiBaselines version="4.2" zipLocation="http://sourceforge.net/projects/net4j/files/Baselines/emf-cdo-4.2-baseline.zip/download"/>
+ <workingSetGroup>
+ <workingSets name="Features">
+ <predicates xsi:type="workingsets:NamePredicate" pattern="org\.eclipse\.emf\.cdo.*-feature"/>
+ <predicates xsi:type="workingsets:NamePredicate" pattern="org\.eclipse\.net4j.*-feature"/>
+ <predicates xsi:type="workingsets:NamePredicate" pattern="org\.gastro.*-feature"/>
+ </workingSets>
+ <workingSets name="Infrastructure">
+ <predicates xsi:type="workingsets:NamePredicate" pattern="org\.eclipse\.emf\.cdo\.releng\.promotion.*"/>
+ <predicates xsi:type="workingsets:NamePredicate" pattern="org\.eclipse\.emf\.cdo\.releng\.doc\.supplemental.*"/>
+ <predicates xsi:type="workingsets:NamePredicate" pattern="cdo\.www.*"/>
+ <predicates xsi:type="workingsets:NamePredicate" pattern="org\.eclipse\.simrel\.build.*"/>
+ <predicates xsi:type="workingsets:NamePredicate" pattern="com\.ibm\.db2\.jcc.*"/>
+ </workingSets>
+ <workingSets name="Releng">
+ <predicates xsi:type="workingsets:NamePredicate" pattern="org\.eclipse\.emf\.cdo\.releng.*"/>
+ </workingSets>
+ <workingSets name="CDO Dawn">
+ <predicates xsi:type="workingsets:NamePredicate" pattern="org\.eclipse\.emf\.cdo\.dawn.*"/>
+ </workingSets>
+ <workingSets name="CDO Tests">
+ <predicates xsi:type="workingsets:NamePredicate" pattern="org\.eclipse\.emf.cdo\.tests.*"/>
+ </workingSets>
+ <workingSets name="CDO Examples">
+ <predicates xsi:type="workingsets:NamePredicate" pattern="org\.eclipse\.emf\.cdo\.examples.*"/>
+ <predicates xsi:type="workingsets:NamePredicate" pattern="org\.gastro.*"/>
+ </workingSets>
+ <workingSets name="CDO">
+ <predicates xsi:type="workingsets:NamePredicate" pattern="org\.eclipse\.emf\.cdo.*"/>
+ </workingSets>
+ <workingSets name="Net4j DB">
+ <predicates xsi:type="workingsets:NamePredicate" pattern="org\.eclipse\.net4j\.db.*"/>
+ </workingSets>
+ <workingSets name="Net4j Examples">
+ <predicates xsi:type="workingsets:NamePredicate" pattern="org\.eclipse\.net4j\.examples.*"/>
+ <predicates xsi:type="workingsets:NamePredicate" pattern="org\.eclipse\.net4j\.buddies.*"/>
+ <predicates xsi:type="workingsets:NamePredicate" pattern="org\.eclipse\.net4j\.jms.*"/>
+ </workingSets>
+ <workingSets name="Net4j">
+ <predicates xsi:type="workingsets:NamePredicate" pattern="org\.eclipse\.net4j.*"/>
+ </workingSets>
+ </workingSetGroup>
</projects>
<eclipseVersions version="3.8">
<directorCall>
diff --git a/plugins/org.eclipse.emf.cdo.releng.setup/model/setup.ecore b/plugins/org.eclipse.emf.cdo.releng.setup/model/setup.ecore
index 45d8fd2bb7..2263c5de9e 100644
--- a/plugins/org.eclipse.emf.cdo.releng.setup/model/setup.ecore
+++ b/plugins/org.eclipse.emf.cdo.releng.setup/model/setup.ecore
@@ -59,6 +59,8 @@
<eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="apiBaselines" upperBound="-1"
eType="#//ApiBaseline" containment="true" eOpposite="#//ApiBaseline/project"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="workingSetGroup" eType="ecore:EClass ../../org.eclipse.emf.cdo.releng.workingsets/model/workingsets.ecore#//WorkingSetGroup"
+ containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Branch" eSuperTypes="#//ToolInstallation">
<eOperations name="isInstalled" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
diff --git a/plugins/org.eclipse.emf.cdo.releng.setup/model/setup.ecorediag b/plugins/org.eclipse.emf.cdo.releng.setup/model/setup.ecorediag
index 59b78a722a..e673ce5331 100644
--- a/plugins/org.eclipse.emf.cdo.releng.setup/model/setup.ecorediag
+++ b/plugins/org.eclipse.emf.cdo.releng.setup/model/setup.ecorediag
@@ -300,6 +300,25 @@
<element xmi:type="ecore:EClass" href="setup.ecore#//LinkLocation"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_iK-h0vdCEeKAgoQldAmgzQ" x="1077" y="370"/>
</children>
+ <children xmi:type="notation:Node" xmi:id="_BvKIgASwEeOeiM9WAQqlaA" type="1001">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_BvanMASwEeOeiM9WAQqlaA" source="Shortcut">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_BvanMQSwEeOeiM9WAQqlaA" key="modelID" value="EcoreTools"/>
+ </eAnnotations>
+ <children xmi:type="notation:Node" xmi:id="_BvOZ8ASwEeOeiM9WAQqlaA" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_BvPBAASwEeOeiM9WAQqlaA" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_BvPBAQSwEeOeiM9WAQqlaA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_BvPBAgSwEeOeiM9WAQqlaA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_BvPBAwSwEeOeiM9WAQqlaA"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_BvPoEASwEeOeiM9WAQqlaA" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_BvPoEQSwEeOeiM9WAQqlaA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_BvPoEgSwEeOeiM9WAQqlaA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_BvPoEwSwEeOeiM9WAQqlaA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_BvKIgQSwEeOeiM9WAQqlaA" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="platform:/resource/org.eclipse.emf.cdo.releng.workingsets/model/workingsets.ecore#//WorkingSetGroup"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BvKIggSwEeOeiM9WAQqlaA" x="135" y="90" width="202" height="78"/>
+ </children>
<styles xmi:type="notation:DiagramStyle" xmi:id="_u_e_seoIEeKpRf481yfX-g"/>
<element xmi:type="ecore:EPackage" href="setup.ecore#/"/>
<edges xmi:type="notation:Edge" xmi:id="_4esFEOoIEeKpRf481yfX-g" type="3002" source="_zoytIOoIEeKpRf481yfX-g" target="_2Y42MOoIEeKpRf481yfX-g">
@@ -469,7 +488,7 @@
</edges>
<edges xmi:type="notation:Edge" xmi:id="_uVxboOrJEeKpRf481yfX-g" type="3002" source="_tV-Q8OoYEeKpRf481yfX-g" target="_678VMOoJEeKpRf481yfX-g">
<children xmi:type="notation:Node" xmi:id="_uVz34OrJEeKpRf481yfX-g" type="4011">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_uVz34erJEeKpRf481yfX-g" x="-1" y="72"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uVz34erJEeKpRf481yfX-g" x="71" y="71"/>
</children>
<children xmi:type="notation:Node" xmi:id="_uVz34urJEeKpRf481yfX-g" type="4012">
<layoutConstraint xmi:type="notation:Location" xmi:id="_uVz34-rJEeKpRf481yfX-g" x="163" y="-15"/>
@@ -634,4 +653,18 @@
<element xmi:type="ecore:EReference" href="setup.ecore#//Preferences/linkLocations"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_q56n4_dCEeKAgoQldAmgzQ" points="[-5, 50, -5, -106]$[-5, 132, -5, -24]"/>
</edges>
+ <edges xmi:type="notation:Edge" xmi:id="_LsR48ASwEeOeiM9WAQqlaA" type="3002" source="_2Y42MOoIEeKpRf481yfX-g" target="_BvKIgASwEeOeiM9WAQqlaA">
+ <children xmi:type="notation:Node" xmi:id="_LsTHEASwEeOeiM9WAQqlaA" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LsTHEQSwEeOeiM9WAQqlaA" x="41" y="-61"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_LsTuIASwEeOeiM9WAQqlaA" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LsTuIQSwEeOeiM9WAQqlaA" x="10" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_LsR48QSwEeOeiM9WAQqlaA" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_LsR48gSwEeOeiM9WAQqlaA" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="setup.ecore#//Project/workingSetGroup"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_LsR48wSwEeOeiM9WAQqlaA" points="[-6, -6, 48, 57]$[-52, -32, 2, 31]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LsWKYASwEeOeiM9WAQqlaA" id="(0.11888111888111888,0.1111111111111111)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LsWKYQSwEeOeiM9WAQqlaA" id="(0.7898089171974523,0.5694444444444444)"/>
+ </edges>
</notation:Diagram>
diff --git a/plugins/org.eclipse.emf.cdo.releng.setup/model/setup.genmodel b/plugins/org.eclipse.emf.cdo.releng.setup/model/setup.genmodel
index d7488715a0..b5aaeda28a 100644
--- a/plugins/org.eclipse.emf.cdo.releng.setup/model/setup.genmodel
+++ b/plugins/org.eclipse.emf.cdo.releng.setup/model/setup.genmodel
@@ -4,6 +4,7 @@
modelPluginID="org.eclipse.emf.cdo.releng.setup" modelName="Setup" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
codeFormatting="true" testsDirectory="" importerID="org.eclipse.emf.importer.ecore"
complianceLevel="5.0" copyrightFields="false" optimizedHasChildren="true" runtimeVersion="2.5"
+ usedGenPackages="../../org.eclipse.emf.cdo.releng.workingsets/model/workingsets.genmodel#//workingsets"
importOrganizing="true">
<foreignModel>setup.ecore</foreignModel>
<genPackages prefix="Setup" basePackage="org.eclipse.emf.cdo.releng" disposableProviderFactory="true"
@@ -11,11 +12,22 @@
<genDataTypes ecoreDataType="setup.ecore#//URI"/>
<genClasses ecoreClass="setup.ecore#//Preferences">
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute setup.ecore#//Preferences/userName"/>
- <genFeatures createChild="false" ecoreFeature="ecore:EAttribute setup.ecore#//Preferences/bundlePool"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute setup.ecore#//Preferences/installFolder"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute setup.ecore#//Preferences/gitPrefix"/>
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference setup.ecore#//Preferences/linkLocations"/>
</genClasses>
+ <genClasses ecoreClass="setup.ecore#//LinkLocation" labelFeature="#//setup/LinkLocation/path">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute setup.ecore#//LinkLocation/path"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute setup.ecore#//LinkLocation/name"/>
+ </genClasses>
+ <genClasses ecoreClass="setup.ecore#//ToolInstallation">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference setup.ecore#//ToolInstallation/directorCalls"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference setup.ecore#//ToolInstallation/toolPreferences"/>
+ </genClasses>
+ <genClasses ecoreClass="setup.ecore#//ToolPreference">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute setup.ecore#//ToolPreference/key"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute setup.ecore#//ToolPreference/value"/>
+ </genClasses>
<genClasses ecoreClass="setup.ecore#//EclipseVersion">
<genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference setup.ecore#//EclipseVersion/configuration"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute setup.ecore#//EclipseVersion/version"/>
@@ -37,15 +49,12 @@
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference setup.ecore#//Configuration/projects"/>
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference setup.ecore#//Configuration/eclipseVersions"/>
</genClasses>
- <genClasses ecoreClass="setup.ecore#//ToolInstallation">
- <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference setup.ecore#//ToolInstallation/directorCalls"/>
- <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference setup.ecore#//ToolInstallation/toolPreferences"/>
- </genClasses>
<genClasses ecoreClass="setup.ecore#//Project">
<genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference setup.ecore#//Project/configuration"/>
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference setup.ecore#//Project/branches"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute setup.ecore#//Project/name"/>
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference setup.ecore#//Project/apiBaselines"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference setup.ecore#//Project/workingSetGroup"/>
</genClasses>
<genClasses ecoreClass="setup.ecore#//Branch">
<genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference setup.ecore#//Branch/project"/>
@@ -80,13 +89,5 @@
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference setup.ecore#//Setup/preferences"/>
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference setup.ecore#//Setup/updateLocations"/>
</genClasses>
- <genClasses ecoreClass="setup.ecore#//ToolPreference">
- <genFeatures createChild="false" ecoreFeature="ecore:EAttribute setup.ecore#//ToolPreference/key"/>
- <genFeatures createChild="false" ecoreFeature="ecore:EAttribute setup.ecore#//ToolPreference/value"/>
- </genClasses>
- <genClasses ecoreClass="setup.ecore#//LinkLocation" labelFeature="#//setup/LinkLocation/path">
- <genFeatures createChild="false" ecoreFeature="ecore:EAttribute setup.ecore#//LinkLocation/path"/>
- <genFeatures createChild="false" ecoreFeature="ecore:EAttribute setup.ecore#//LinkLocation/name"/>
- </genClasses>
</genPackages>
</genmodel:GenModel>
diff --git a/plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/setup/Project.java b/plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/setup/Project.java
index 5a0d7dd3e4..284a66bfc3 100644
--- a/plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/setup/Project.java
+++ b/plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/setup/Project.java
@@ -10,6 +10,7 @@
*/
package org.eclipse.emf.cdo.releng.setup;
+import org.eclipse.emf.cdo.releng.workingsets.WorkingSetGroup;
import org.eclipse.emf.common.util.EList;
/**
@@ -24,6 +25,7 @@ import org.eclipse.emf.common.util.EList;
* <li>{@link org.eclipse.emf.cdo.releng.setup.Project#getBranches <em>Branches</em>}</li>
* <li>{@link org.eclipse.emf.cdo.releng.setup.Project#getName <em>Name</em>}</li>
* <li>{@link org.eclipse.emf.cdo.releng.setup.Project#getApiBaselines <em>Api Baselines</em>}</li>
+ * <li>{@link org.eclipse.emf.cdo.releng.setup.Project#getWorkingSetGroup <em>Working Set Group</em>}</li>
* </ul>
* </p>
*
@@ -123,4 +125,30 @@ public interface Project extends ToolInstallation
*/
EList<ApiBaseline> getApiBaselines();
+ /**
+ * Returns the value of the '<em><b>Working Set Group</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Working Set Group</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Working Set Group</em>' containment reference.
+ * @see #setWorkingSetGroup(WorkingSetGroup)
+ * @see org.eclipse.emf.cdo.releng.setup.SetupPackage#getProject_WorkingSetGroup()
+ * @model containment="true"
+ * @generated
+ */
+ WorkingSetGroup getWorkingSetGroup();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.emf.cdo.releng.setup.Project#getWorkingSetGroup <em>Working Set Group</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Working Set Group</em>' containment reference.
+ * @see #getWorkingSetGroup()
+ * @generated
+ */
+ void setWorkingSetGroup(WorkingSetGroup value);
+
} // Project
diff --git a/plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/setup/SetupPackage.java b/plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/setup/SetupPackage.java
index ca771d431b..eece03b9e8 100644
--- a/plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/setup/SetupPackage.java
+++ b/plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/setup/SetupPackage.java
@@ -549,13 +549,22 @@ public interface SetupPackage extends EPackage
int PROJECT__API_BASELINES = TOOL_INSTALLATION_FEATURE_COUNT + 3;
/**
- * The number of structural features of the '<em>Project</em>' class.
+ * The feature id for the '<em><b>Working Set Group</b></em>' containment reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
* @ordered
*/
- int PROJECT_FEATURE_COUNT = TOOL_INSTALLATION_FEATURE_COUNT + 4;
+ int PROJECT__WORKING_SET_GROUP = TOOL_INSTALLATION_FEATURE_COUNT + 4;
+
+ /**
+ * The number of structural features of the '<em>Project</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROJECT_FEATURE_COUNT = TOOL_INSTALLATION_FEATURE_COUNT + 5;
/**
* The feature id for the '<em><b>Director Calls</b></em>' containment reference list.
@@ -861,13 +870,24 @@ public interface SetupPackage extends EPackage
EReference getProject_ApiBaselines();
/**
- * Returns the meta object for class '{@link org.eclipse.emf.cdo.releng.setup.Branch <em>Branch</em>}'.
+ * Returns the meta object for the containment reference '{@link org.eclipse.emf.cdo.releng.setup.Project#getWorkingSetGroup <em>Working Set Group</em>}'.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @return the meta object for class '<em>Branch</em>'.
- * @see org.eclipse.emf.cdo.releng.setup.Branch
+ * @return the meta object for the containment reference '<em>Working Set Group</em>'.
+ * @see org.eclipse.emf.cdo.releng.setup.Project#getWorkingSetGroup()
+ * @see #getProject()
* @generated
*/
+ EReference getProject_WorkingSetGroup();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.emf.cdo.releng.setup.Branch <em>Branch</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Branch</em>'.
+ * @see org.eclipse.emf.cdo.releng.setup.Branch
+ * @generated
+ */
EClass getBranch();
/**
@@ -1480,13 +1500,21 @@ public interface SetupPackage extends EPackage
EReference PROJECT__API_BASELINES = eINSTANCE.getProject_ApiBaselines();
/**
- * The meta object literal for the '{@link org.eclipse.emf.cdo.releng.setup.impl.BranchImpl <em>Branch</em>}' class.
+ * The meta object literal for the '<em><b>Working Set Group</b></em>' containment reference feature.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @see org.eclipse.emf.cdo.releng.setup.impl.BranchImpl
- * @see org.eclipse.emf.cdo.releng.setup.impl.SetupPackageImpl#getBranch()
* @generated
*/
+ EReference PROJECT__WORKING_SET_GROUP = eINSTANCE.getProject_WorkingSetGroup();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.emf.cdo.releng.setup.impl.BranchImpl <em>Branch</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.cdo.releng.setup.impl.BranchImpl
+ * @see org.eclipse.emf.cdo.releng.setup.impl.SetupPackageImpl#getBranch()
+ * @generated
+ */
EClass BRANCH = eINSTANCE.getBranch();
/**
diff --git a/plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/setup/impl/ProjectImpl.java b/plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/setup/impl/ProjectImpl.java
index c1a32af520..3c0a1fe2af 100644
--- a/plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/setup/impl/ProjectImpl.java
+++ b/plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/setup/impl/ProjectImpl.java
@@ -16,6 +16,7 @@ import org.eclipse.emf.cdo.releng.setup.Configuration;
import org.eclipse.emf.cdo.releng.setup.Project;
import org.eclipse.emf.cdo.releng.setup.SetupPackage;
+import org.eclipse.emf.cdo.releng.workingsets.WorkingSetGroup;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.NotificationChain;
import org.eclipse.emf.common.util.EList;
@@ -39,6 +40,7 @@ import java.util.Collection;
* <li>{@link org.eclipse.emf.cdo.releng.setup.impl.ProjectImpl#getBranches <em>Branches</em>}</li>
* <li>{@link org.eclipse.emf.cdo.releng.setup.impl.ProjectImpl#getName <em>Name</em>}</li>
* <li>{@link org.eclipse.emf.cdo.releng.setup.impl.ProjectImpl#getApiBaselines <em>Api Baselines</em>}</li>
+ * <li>{@link org.eclipse.emf.cdo.releng.setup.impl.ProjectImpl#getWorkingSetGroup <em>Working Set Group</em>}</li>
* </ul>
* </p>
*
@@ -87,10 +89,20 @@ public class ProjectImpl extends ToolInstallationImpl implements Project
protected EList<ApiBaseline> apiBaselines;
/**
+ * The cached value of the '{@link #getWorkingSetGroup() <em>Working Set Group</em>}' containment reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
+ * @see #getWorkingSetGroup()
* @generated
+ * @ordered
*/
+ protected WorkingSetGroup workingSetGroup;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
protected ProjectImpl()
{
super();
@@ -215,6 +227,62 @@ public class ProjectImpl extends ToolInstallationImpl implements Project
* <!-- end-user-doc -->
* @generated
*/
+ public WorkingSetGroup getWorkingSetGroup()
+ {
+ return workingSetGroup;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetWorkingSetGroup(WorkingSetGroup newWorkingSetGroup, NotificationChain msgs)
+ {
+ WorkingSetGroup oldWorkingSetGroup = workingSetGroup;
+ workingSetGroup = newWorkingSetGroup;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ SetupPackage.PROJECT__WORKING_SET_GROUP, oldWorkingSetGroup, newWorkingSetGroup);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setWorkingSetGroup(WorkingSetGroup newWorkingSetGroup)
+ {
+ if (newWorkingSetGroup != workingSetGroup)
+ {
+ NotificationChain msgs = null;
+ if (workingSetGroup != null)
+ msgs = ((InternalEObject)workingSetGroup).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+ - SetupPackage.PROJECT__WORKING_SET_GROUP, null, msgs);
+ if (newWorkingSetGroup != null)
+ msgs = ((InternalEObject)newWorkingSetGroup).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+ - SetupPackage.PROJECT__WORKING_SET_GROUP, null, msgs);
+ msgs = basicSetWorkingSetGroup(newWorkingSetGroup, msgs);
+ if (msgs != null)
+ msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, SetupPackage.PROJECT__WORKING_SET_GROUP,
+ newWorkingSetGroup, newWorkingSetGroup));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
@SuppressWarnings("unchecked")
@Override
public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs)
@@ -249,6 +317,8 @@ public class ProjectImpl extends ToolInstallationImpl implements Project
return ((InternalEList<?>)getBranches()).basicRemove(otherEnd, msgs);
case SetupPackage.PROJECT__API_BASELINES:
return ((InternalEList<?>)getApiBaselines()).basicRemove(otherEnd, msgs);
+ case SetupPackage.PROJECT__WORKING_SET_GROUP:
+ return basicSetWorkingSetGroup(null, msgs);
}
return super.eInverseRemove(otherEnd, featureID, msgs);
}
@@ -287,6 +357,8 @@ public class ProjectImpl extends ToolInstallationImpl implements Project
return getName();
case SetupPackage.PROJECT__API_BASELINES:
return getApiBaselines();
+ case SetupPackage.PROJECT__WORKING_SET_GROUP:
+ return getWorkingSetGroup();
}
return super.eGet(featureID, resolve, coreType);
}
@@ -316,6 +388,9 @@ public class ProjectImpl extends ToolInstallationImpl implements Project
getApiBaselines().clear();
getApiBaselines().addAll((Collection<? extends ApiBaseline>)newValue);
return;
+ case SetupPackage.PROJECT__WORKING_SET_GROUP:
+ setWorkingSetGroup((WorkingSetGroup)newValue);
+ return;
}
super.eSet(featureID, newValue);
}
@@ -342,6 +417,9 @@ public class ProjectImpl extends ToolInstallationImpl implements Project
case SetupPackage.PROJECT__API_BASELINES:
getApiBaselines().clear();
return;
+ case SetupPackage.PROJECT__WORKING_SET_GROUP:
+ setWorkingSetGroup((WorkingSetGroup)null);
+ return;
}
super.eUnset(featureID);
}
@@ -364,6 +442,8 @@ public class ProjectImpl extends ToolInstallationImpl implements Project
return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
case SetupPackage.PROJECT__API_BASELINES:
return apiBaselines != null && !apiBaselines.isEmpty();
+ case SetupPackage.PROJECT__WORKING_SET_GROUP:
+ return workingSetGroup != null;
}
return super.eIsSet(featureID);
}
diff --git a/plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/setup/impl/SetupPackageImpl.java b/plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/setup/impl/SetupPackageImpl.java
index 023c0a417b..d08b90ff97 100644
--- a/plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/setup/impl/SetupPackageImpl.java
+++ b/plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/setup/impl/SetupPackageImpl.java
@@ -26,6 +26,7 @@ import org.eclipse.emf.cdo.releng.setup.SetupFactory;
import org.eclipse.emf.cdo.releng.setup.SetupPackage;
import org.eclipse.emf.cdo.releng.setup.ToolInstallation;
import org.eclipse.emf.cdo.releng.setup.ToolPreference;
+import org.eclipse.emf.cdo.releng.workingsets.WorkingSetsPackage;
import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EDataType;
@@ -197,6 +198,9 @@ public class SetupPackageImpl extends EPackageImpl implements SetupPackage
isInited = true;
+ // Initialize simple dependencies
+ WorkingSetsPackage.eINSTANCE.eClass();
+
// Create package meta-data objects
theSetupPackage.createPackageContents();
@@ -296,6 +300,16 @@ public class SetupPackageImpl extends EPackageImpl implements SetupPackage
* <!-- end-user-doc -->
* @generated
*/
+ public EReference getProject_WorkingSetGroup()
+ {
+ return (EReference)projectEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
public EClass getBranch()
{
return branchEClass;
@@ -856,6 +870,7 @@ public class SetupPackageImpl extends EPackageImpl implements SetupPackage
createEReference(projectEClass, PROJECT__BRANCHES);
createEAttribute(projectEClass, PROJECT__NAME);
createEReference(projectEClass, PROJECT__API_BASELINES);
+ createEReference(projectEClass, PROJECT__WORKING_SET_GROUP);
branchEClass = createEClass(BRANCH);
createEReference(branchEClass, BRANCH__PROJECT);
@@ -911,6 +926,10 @@ public class SetupPackageImpl extends EPackageImpl implements SetupPackage
setNsPrefix(eNS_PREFIX);
setNsURI(eNS_URI);
+ // Obtain other dependent packages
+ WorkingSetsPackage theWorkingSetsPackage = (WorkingSetsPackage)EPackage.Registry.INSTANCE
+ .getEPackage(WorkingSetsPackage.eNS_URI);
+
// Create type parameters
// Set bounds for type parameters
@@ -1016,6 +1035,9 @@ public class SetupPackageImpl extends EPackageImpl implements SetupPackage
initEReference(getProject_ApiBaselines(), this.getApiBaseline(), this.getApiBaseline_Project(), "apiBaselines",
null, 0, -1, Project.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getProject_WorkingSetGroup(), theWorkingSetsPackage.getWorkingSetGroup(), null, "workingSetGroup",
+ null, 0, 1, Project.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+ !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEClass(branchEClass, Branch.class, "Branch", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEReference(getBranch_Project(), this.getProject(), this.getProject_Branches(), "project", null, 0, 1,
diff --git a/plugins/org.eclipse.emf.cdo.releng.version.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.releng.version.ui/META-INF/MANIFEST.MF
index 95bb6bf3cb..16de6c7e4a 100644
--- a/plugins/org.eclipse.emf.cdo.releng.version.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.cdo.releng.version.ui/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.emf.cdo.releng.version.ui;singleton:=true
-Bundle-Version: 1.1.0.qualifier
+Bundle-Version: 1.1.100.qualifier
Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -17,10 +17,10 @@ Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)",
org.eclipse.ui.ide;bundle-version="[3.5.0,4.0.0)",
org.eclipse.emf.cdo.releng.version;bundle-version="[1.0.0,2.0.0)";visibility:=reexport,
org.eclipse.pde.core;bundle-version="[3.5.0,4.0.0)"
-Export-Package: org.eclipse.emf.cdo.releng.version.ui;version="1.1.0";x-internal:=true,
- org.eclipse.emf.cdo.releng.version.ui.actions;version="1.1.0";x-internal:=true,
- org.eclipse.emf.cdo.releng.version.ui.dialogs;version="1.1.0";x-internal:=true,
- org.eclipse.emf.cdo.releng.version.ui.preferences;version="1.1.0";x-internal:=true,
- org.eclipse.emf.cdo.releng.version.ui.quickfixes;version="1.1.0";x-friends:="org.eclipse.emf.cdo.releng.version.tests",
- org.eclipse.emf.cdo.releng.version.ui.views;version="1.1.0";x-internal:=true
+Export-Package: org.eclipse.emf.cdo.releng.version.ui;version="1.1.100";x-internal:=true,
+ org.eclipse.emf.cdo.releng.version.ui.actions;version="1.1.100";x-internal:=true,
+ org.eclipse.emf.cdo.releng.version.ui.dialogs;version="1.1.100";x-internal:=true,
+ org.eclipse.emf.cdo.releng.version.ui.preferences;version="1.1.100";x-internal:=true,
+ org.eclipse.emf.cdo.releng.version.ui.quickfixes;version="1.1.100";x-friends:="org.eclipse.emf.cdo.releng.version.tests",
+ org.eclipse.emf.cdo.releng.version.ui.views;version="1.1.100";x-internal:=true
Eclipse-BuddyPolicy: dependent
diff --git a/plugins/org.eclipse.emf.cdo.releng.version.ui/src/org/eclipse/emf/cdo/releng/version/ui/preferences/VersionBuilderPreferencePage.java b/plugins/org.eclipse.emf.cdo.releng.version.ui/src/org/eclipse/emf/cdo/releng/version/ui/preferences/VersionBuilderPreferencePage.java
index 4e1b70ca8b..5c17dd5e0b 100644
--- a/plugins/org.eclipse.emf.cdo.releng.version.ui/src/org/eclipse/emf/cdo/releng/version/ui/preferences/VersionBuilderPreferencePage.java
+++ b/plugins/org.eclipse.emf.cdo.releng.version.ui/src/org/eclipse/emf/cdo/releng/version/ui/preferences/VersionBuilderPreferencePage.java
@@ -36,7 +36,7 @@ public class VersionBuilderPreferencePage extends PreferencePage implements IWor
{
public VersionBuilderPreferencePage()
{
- super("XXX");
+ super("<taken from plugin.xml>");
setDescription("Manage ignored releases:");
}
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/.classpath b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/.classpath
new file mode 100644
index 0000000000..64c5e31b7a
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/.project b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/.project
new file mode 100644
index 0000000000..a3040469a5
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/.project
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.emf.cdo.releng.workingsets.edit</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.emf.cdo.releng.version.VersionBuilder</name>
+ <arguments>
+ <dictionary>
+ <key>release.path</key>
+ <value>/org.eclipse.emf.cdo.releng.release/release.xml</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.emf.cdo.releng.version.VersionNature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000000..33616536a2
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,405 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=public
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=warning
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.5
+org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled
+org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,HIGH,HIGH,LOW,LOW,LOW,LOW,LOW
+org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,XXX,PERF,MEM,POLISH,@generated NOT,@ADDED
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=1
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=next_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
+org.eclipse.jdt.core.formatter.comment.line_length=120
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=2
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=space
+org.eclipse.jdt.core.formatter.tabulation.size=2
+org.eclipse.jdt.core.formatter.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/.settings/org.eclipse.jdt.ui.prefs b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000000..3fc140fcdc
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,119 @@
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=true
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.correct_indentation=true
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.organize_imports=true
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.remove_private_constructors=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=true
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.use_blocks=true
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_parentheses_in_expressions=true
+cleanup.use_this_for_non_static_field_access=true
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=true
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup_profile=_EMFT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_EMFT
+formatter_settings_version=12
+org.eclipse.jdt.ui.exception.name=ex
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=org.eclipse.emf.cdo;org.eclipse.emf.internal.cdo;org.eclipse.net4j;org.eclipse.internal.net4j;org.eclipse.emf;org.eclipse;com;org;javax;java;
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=99
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="false" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment"/><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*\r\n * Copyright (c) 2004-2013 Eike Stepper (Berlin, Germany) and others.\r\n * All rights reserved. This program and the accompanying materials\r\n * are made available under the terms of the Eclipse Public License v1.0\r\n * which accompanies this distribution, and is available at\r\n * http\://www.eclipse.org/legal/epl-v10.html\r\n * \r\n * Contributors\:\r\n * Eike Stepper - initial API and implementation\r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author Eike Stepper\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment"/><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="false" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment"/><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=false
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=true
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.make_local_variable_final=false
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=true
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_blocks=true
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_parentheses_in_expressions=true
+sp_cleanup.use_this_for_non_static_field_access=true
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=true
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/.settings/org.eclipse.ltk.core.refactoring.prefs b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/.settings/org.eclipse.ltk.core.refactoring.prefs
new file mode 100644
index 0000000000..864e30fe5d
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/.settings/org.eclipse.ltk.core.refactoring.prefs
@@ -0,0 +1,3 @@
+#Thu Feb 04 09:44:24 CET 2010
+eclipse.preferences.version=1
+org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/.settings/org.eclipse.mylyn.tasks.ui.prefs b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/.settings/org.eclipse.mylyn.tasks.ui.prefs
new file mode 100644
index 0000000000..b050639a54
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/.settings/org.eclipse.mylyn.tasks.ui.prefs
@@ -0,0 +1,4 @@
+#Thu Feb 04 09:44:24 CET 2010
+eclipse.preferences.version=1
+project.repository.kind=bugzilla
+project.repository.url=https\://bugs.eclipse.org/bugs
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/.settings/org.eclipse.mylyn.team.ui.prefs b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/.settings/org.eclipse.mylyn.team.ui.prefs
new file mode 100644
index 0000000000..2f50f36c0c
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/.settings/org.eclipse.mylyn.team.ui.prefs
@@ -0,0 +1,3 @@
+#Thu Feb 04 09:44:24 CET 2010
+commit.comment.template=[${task.id}] ${task.description} \r\n${task.url}
+eclipse.preferences.version=1
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/.settings/org.eclipse.pde.api.tools.prefs b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 0000000000..0c17d59e45
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,95 @@
+#Thu Feb 04 09:44:24 CET 2010
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_JAVADOC_TAG=Ignore
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Error
+MISSING_EE_DESCRIPTIONS=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Ignore
+automatically_removed_unused_problem_filters=Disabled
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/.settings/org.eclipse.pde.prefs b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/.settings/org.eclipse.pde.prefs
new file mode 100644
index 0000000000..eb962232b8
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,32 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=2
+compilers.p.discouraged-class=2
+compilers.p.internal=1
+compilers.p.missing-packages=1
+compilers.p.missing-version-export-package=1
+compilers.p.missing-version-import-package=1
+compilers.p.missing-version-require-bundle=1
+compilers.p.no-required-att=0
+compilers.p.not-externalized-att=2
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=2
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+eclipse.preferences.version=1
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000..c0bbc659c0
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/META-INF/MANIFEST.MF
@@ -0,0 +1,15 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.emf.cdo.releng.workingsets.edit;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: org.eclipse.emf.cdo.releng.workingsets.provider.WorkingSetsEditPlugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Export-Package: org.eclipse.emf.cdo.releng.workingsets.provider;version="1.0.0"
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)",
+ org.eclipse.emf.cdo.releng.workingsets;bundle-version="[1.0.0,2.0.0)";visibility:=reexport,
+ org.eclipse.emf.edit;bundle-version="[2.5.0,3.0.0)";visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/about.html b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/about.html
new file mode 100644
index 0000000000..d35d5aed64
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 5, 2007</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/build.properties b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/build.properties
new file mode 100644
index 0000000000..29cb0969dd
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/build.properties
@@ -0,0 +1,14 @@
+#
+
+bin.includes = .,\
+ icons/,\
+ META-INF/,\
+ plugin.xml,\
+ plugin.properties,\
+ about.html,\
+ copyright.txt
+jars.compile.order = .
+source.. = src/
+output.. = bin/
+src.includes = about.html,\
+ copyright.txt
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/copyright.txt b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/copyright.txt
new file mode 100644
index 0000000000..1c77978050
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/copyright.txt
@@ -0,0 +1,8 @@
+Copyright (c) 2004-2013 Eike Stepper (Berlin, Germany) and others.
+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
+
+Contributors:
+ Eike Stepper - initial API and implementation
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/icons/full/obj16/NamePredicate.gif b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/icons/full/obj16/NamePredicate.gif
new file mode 100644
index 0000000000..b983f27e28
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/icons/full/obj16/NamePredicate.gif
Binary files differ
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/icons/full/obj16/WorkingSet.gif b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/icons/full/obj16/WorkingSet.gif
new file mode 100644
index 0000000000..ca336d723f
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/icons/full/obj16/WorkingSet.gif
Binary files differ
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/icons/full/obj16/WorkingSetGroup.gif b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/icons/full/obj16/WorkingSetGroup.gif
new file mode 100644
index 0000000000..f878001bdd
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/icons/full/obj16/WorkingSetGroup.gif
Binary files differ
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/plugin.properties b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/plugin.properties
new file mode 100644
index 0000000000..7ea4dddd2b
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/plugin.properties
@@ -0,0 +1,35 @@
+# Copyright (c) 2013 Eike Stepper (Berlin, Germany) and others.
+# 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
+#
+# Contributors:
+# Eike Stepper - initial API and implementation
+
+pluginName = CDO Release Engineering Dynamic Working Sets Edit Support
+providerName = Eclipse Modeling Project
+
+_UI_CreateChild_text = {0}
+_UI_CreateChild_text2 = {1} {0}
+_UI_CreateChild_text3 = {1}
+_UI_CreateChild_tooltip = Create New {0} Under {1} Feature
+_UI_CreateChild_description = Create a new child of type {0} for the {1} feature of the selected {2}.
+_UI_CreateSibling_description = Create a new sibling of type {0} for the selected {2}, under the {1} feature of their parent.
+
+_UI_PropertyDescriptor_description = The {0} of the {1}
+
+_UI_WorkingSet_type = Working Set
+_UI_WorkingSetGroup_type = Working Set Group
+_UI_Predicate_type = Predicate
+_UI_NamePredicate_type = Name Predicate
+_UI_Unknown_type = Object
+
+_UI_Unknown_datatype= Value
+
+_UI_WorkingSet_predicates_feature = Predicates
+_UI_WorkingSet_name_feature = Name
+_UI_WorkingSetGroup_workingSets_feature = Working Sets
+_UI_NamePredicate_pattern_feature = Pattern
+_UI_Unknown_feature = Unspecified
+
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/plugin.xml b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/plugin.xml
new file mode 100644
index 0000000000..6d85cc3a52
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/plugin.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+-->
+
+<plugin>
+
+ <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+ <!-- @generated workingsets -->
+ <factory
+ uri="http://www.eclipse.org/CDO/releng/workingsets/1.0"
+ class="org.eclipse.emf.cdo.releng.workingsets.provider.WorkingSetsItemProviderAdapterFactory"
+ supportedTypes=
+ "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+ org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+ org.eclipse.emf.edit.provider.ITreeItemContentProvider
+ org.eclipse.emf.edit.provider.IItemLabelProvider
+ org.eclipse.emf.edit.provider.IItemPropertySource"/>
+ </extension>
+
+</plugin>
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/src/org/eclipse/emf/cdo/releng/workingsets/provider/NamePredicateItemProvider.java b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/src/org/eclipse/emf/cdo/releng/workingsets/provider/NamePredicateItemProvider.java
new file mode 100644
index 0000000000..1992103019
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/src/org/eclipse/emf/cdo/releng/workingsets/provider/NamePredicateItemProvider.java
@@ -0,0 +1,169 @@
+/*
+ * Copyright (c) 2013 Eike Stepper (Berlin, Germany) and others.
+ * 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
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.releng.workingsets.provider;
+
+import org.eclipse.emf.cdo.releng.workingsets.NamePredicate;
+import org.eclipse.emf.cdo.releng.workingsets.WorkingSetsPackage;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.emf.cdo.releng.workingsets.NamePredicate} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class NamePredicateItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
+ IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NamePredicateItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+
+ addPatternPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Pattern feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addPatternPropertyDescriptor(Object object)
+ {
+ itemPropertyDescriptors.add(createItemPropertyDescriptor(
+ ((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(),
+ getString("_UI_NamePredicate_pattern_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_NamePredicate_pattern_feature", "_UI_NamePredicate_type"),
+ WorkingSetsPackage.Literals.NAME_PREDICATE__PATTERN, true, false, false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+ }
+
+ /**
+ * This returns NamePredicate.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object)
+ {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/NamePredicate"));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected boolean shouldComposeCreationImage()
+ {
+ return true;
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object)
+ {
+ String label = ((NamePredicate)object).getPattern();
+ return label == null ? "" : label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification)
+ {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(NamePredicate.class))
+ {
+ case WorkingSetsPackage.NAME_PREDICATE__PATTERN:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+ {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator()
+ {
+ return WorkingSetsEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/src/org/eclipse/emf/cdo/releng/workingsets/provider/WorkingSetGroupItemProvider.java b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/src/org/eclipse/emf/cdo/releng/workingsets/provider/WorkingSetGroupItemProvider.java
new file mode 100644
index 0000000000..99d9d3b561
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/src/org/eclipse/emf/cdo/releng/workingsets/provider/WorkingSetGroupItemProvider.java
@@ -0,0 +1,187 @@
+/*
+ * Copyright (c) 2013 Eike Stepper (Berlin, Germany) and others.
+ * 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
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.releng.workingsets.provider;
+
+import org.eclipse.emf.cdo.releng.workingsets.WorkingSetGroup;
+import org.eclipse.emf.cdo.releng.workingsets.WorkingSetsFactory;
+import org.eclipse.emf.cdo.releng.workingsets.WorkingSetsPackage;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.emf.cdo.releng.workingsets.WorkingSetGroup} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class WorkingSetGroupItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
+ IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public WorkingSetGroupItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
+ {
+ if (childrenFeatures == null)
+ {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(WorkingSetsPackage.Literals.WORKING_SET_GROUP__WORKING_SETS);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child)
+ {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns WorkingSetGroup.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object)
+ {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/WorkingSetGroup"));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected boolean shouldComposeCreationImage()
+ {
+ return true;
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object)
+ {
+ return "Working Sets";
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification)
+ {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(WorkingSetGroup.class))
+ {
+ case WorkingSetsPackage.WORKING_SET_GROUP__WORKING_SETS:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+ {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add(createChildParameter(WorkingSetsPackage.Literals.WORKING_SET_GROUP__WORKING_SETS,
+ WorkingSetsFactory.eINSTANCE.createWorkingSet()));
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator()
+ {
+ return WorkingSetsEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/src/org/eclipse/emf/cdo/releng/workingsets/provider/WorkingSetItemProvider.java b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/src/org/eclipse/emf/cdo/releng/workingsets/provider/WorkingSetItemProvider.java
new file mode 100644
index 0000000000..a1caec5df8
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/src/org/eclipse/emf/cdo/releng/workingsets/provider/WorkingSetItemProvider.java
@@ -0,0 +1,210 @@
+/*
+ * Copyright (c) 2013 Eike Stepper (Berlin, Germany) and others.
+ * 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
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.releng.workingsets.provider;
+
+import org.eclipse.emf.cdo.releng.workingsets.WorkingSet;
+import org.eclipse.emf.cdo.releng.workingsets.WorkingSetsFactory;
+import org.eclipse.emf.cdo.releng.workingsets.WorkingSetsPackage;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.emf.cdo.releng.workingsets.WorkingSet} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class WorkingSetItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
+ IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource
+{
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public WorkingSetItemProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+ {
+ if (itemPropertyDescriptors == null)
+ {
+ super.getPropertyDescriptors(object);
+
+ addNamePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Name feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addNamePropertyDescriptor(Object object)
+ {
+ itemPropertyDescriptors.add(createItemPropertyDescriptor(
+ ((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(),
+ getString("_UI_WorkingSet_name_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_WorkingSet_name_feature", "_UI_WorkingSet_type"),
+ WorkingSetsPackage.Literals.WORKING_SET__NAME, true, false, false, ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null, null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
+ {
+ if (childrenFeatures == null)
+ {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(WorkingSetsPackage.Literals.WORKING_SET__PREDICATES);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child)
+ {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns WorkingSet.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object)
+ {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/WorkingSet"));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected boolean shouldComposeCreationImage()
+ {
+ return true;
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object)
+ {
+ String label = ((WorkingSet)object).getName();
+ return label == null ? "" : label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification)
+ {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(WorkingSet.class))
+ {
+ case WorkingSetsPackage.WORKING_SET__NAME:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ case WorkingSetsPackage.WORKING_SET__PREDICATES:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+ {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add(createChildParameter(WorkingSetsPackage.Literals.WORKING_SET__PREDICATES,
+ WorkingSetsFactory.eINSTANCE.createNamePredicate()));
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator()
+ {
+ return WorkingSetsEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/src/org/eclipse/emf/cdo/releng/workingsets/provider/WorkingSetsEditPlugin.java b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/src/org/eclipse/emf/cdo/releng/workingsets/provider/WorkingSetsEditPlugin.java
new file mode 100644
index 0000000000..ee8029d114
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/src/org/eclipse/emf/cdo/releng/workingsets/provider/WorkingSetsEditPlugin.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (c) 2013 Eike Stepper (Berlin, Germany) and others.
+ * 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
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.releng.workingsets.provider;
+
+import org.eclipse.emf.common.EMFPlugin;
+import org.eclipse.emf.common.util.ResourceLocator;
+
+/**
+ * This is the central singleton for the Workingsets edit plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class WorkingSetsEditPlugin extends EMFPlugin
+{
+ /**
+ * Keep track of the singleton.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final WorkingSetsEditPlugin INSTANCE = new WorkingSetsEditPlugin();
+
+ /**
+ * Keep track of the singleton.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static Implementation plugin;
+
+ /**
+ * Create the instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public WorkingSetsEditPlugin()
+ {
+ super(new ResourceLocator[] {});
+ }
+
+ /**
+ * Returns the singleton instance of the Eclipse plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the singleton instance.
+ * @generated
+ */
+ @Override
+ public ResourceLocator getPluginResourceLocator()
+ {
+ return plugin;
+ }
+
+ /**
+ * Returns the singleton instance of the Eclipse plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the singleton instance.
+ * @generated
+ */
+ public static Implementation getPlugin()
+ {
+ return plugin;
+ }
+
+ /**
+ * The actual implementation of the Eclipse <b>Plugin</b>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static class Implementation extends EclipsePlugin
+ {
+ /**
+ * Creates an instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Implementation()
+ {
+ super();
+
+ // Remember the static instance.
+ //
+ plugin = this;
+ }
+ }
+
+}
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/src/org/eclipse/emf/cdo/releng/workingsets/provider/WorkingSetsItemProviderAdapterFactory.java b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/src/org/eclipse/emf/cdo/releng/workingsets/provider/WorkingSetsItemProviderAdapterFactory.java
new file mode 100644
index 0000000000..63fc58cd4d
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.edit/src/org/eclipse/emf/cdo/releng/workingsets/provider/WorkingSetsItemProviderAdapterFactory.java
@@ -0,0 +1,284 @@
+/*
+ * Copyright (c) 2013 Eike Stepper (Berlin, Germany) and others.
+ * 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
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.releng.workingsets.provider;
+
+import org.eclipse.emf.cdo.releng.workingsets.util.WorkingSetsAdapterFactory;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class WorkingSetsItemProviderAdapterFactory extends WorkingSetsAdapterFactory implements
+ ComposeableAdapterFactory, IChangeNotifier, IDisposable
+{
+ /**
+ * This keeps track of the root adapter factory that delegates to this adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ComposedAdapterFactory parentAdapterFactory;
+
+ /**
+ * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+ /**
+ * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+ /**
+ * This constructs an instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public WorkingSetsItemProviderAdapterFactory()
+ {
+ supportedTypes.add(IEditingDomainItemProvider.class);
+ supportedTypes.add(IStructuredItemContentProvider.class);
+ supportedTypes.add(ITreeItemContentProvider.class);
+ supportedTypes.add(IItemLabelProvider.class);
+ supportedTypes.add(IItemPropertySource.class);
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.emf.cdo.releng.workingsets.WorkingSet} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected WorkingSetItemProvider workingSetItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.emf.cdo.releng.workingsets.WorkingSet}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createWorkingSetAdapter()
+ {
+ if (workingSetItemProvider == null)
+ {
+ workingSetItemProvider = new WorkingSetItemProvider(this);
+ }
+
+ return workingSetItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.emf.cdo.releng.workingsets.WorkingSetGroup} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected WorkingSetGroupItemProvider workingSetGroupItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.emf.cdo.releng.workingsets.WorkingSetGroup}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createWorkingSetGroupAdapter()
+ {
+ if (workingSetGroupItemProvider == null)
+ {
+ workingSetGroupItemProvider = new WorkingSetGroupItemProvider(this);
+ }
+
+ return workingSetGroupItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.emf.cdo.releng.workingsets.NamePredicate} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected NamePredicateItemProvider namePredicateItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.emf.cdo.releng.workingsets.NamePredicate}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createNamePredicateAdapter()
+ {
+ if (namePredicateItemProvider == null)
+ {
+ namePredicateItemProvider = new NamePredicateItemProvider(this);
+ }
+
+ return namePredicateItemProvider;
+ }
+
+ /**
+ * This returns the root adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ComposeableAdapterFactory getRootAdapterFactory()
+ {
+ return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+ }
+
+ /**
+ * This sets the composed adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory)
+ {
+ this.parentAdapterFactory = parentAdapterFactory;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object type)
+ {
+ return supportedTypes.contains(type) || super.isFactoryForType(type);
+ }
+
+ /**
+ * This implementation substitutes the factory itself as the key for the adapter.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter adapt(Notifier notifier, Object type)
+ {
+ return super.adapt(notifier, this);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object adapt(Object object, Object type)
+ {
+ if (isFactoryForType(type))
+ {
+ Object adapter = super.adapt(object, type);
+ if (!(type instanceof Class<?>) || ((Class<?>)type).isInstance(adapter))
+ {
+ return adapter;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * This adds a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void addListener(INotifyChangedListener notifyChangedListener)
+ {
+ changeNotifier.addListener(notifyChangedListener);
+ }
+
+ /**
+ * This removes a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void removeListener(INotifyChangedListener notifyChangedListener)
+ {
+ changeNotifier.removeListener(notifyChangedListener);
+ }
+
+ /**
+ * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void fireNotifyChanged(Notification notification)
+ {
+ changeNotifier.fireNotifyChanged(notification);
+
+ if (parentAdapterFactory != null)
+ {
+ parentAdapterFactory.fireNotifyChanged(notification);
+ }
+ }
+
+ /**
+ * This disposes all of the item providers created by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void dispose()
+ {
+ if (workingSetItemProvider != null)
+ {
+ workingSetItemProvider.dispose();
+ }
+ if (workingSetGroupItemProvider != null)
+ {
+ workingSetGroupItemProvider.dispose();
+ }
+ if (namePredicateItemProvider != null)
+ {
+ namePredicateItemProvider.dispose();
+ }
+ }
+
+}
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/.classpath b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/.classpath
new file mode 100644
index 0000000000..64c5e31b7a
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/.project b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/.project
new file mode 100644
index 0000000000..16b5042c60
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/.project
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.emf.cdo.releng.workingsets.editor</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.emf.cdo.releng.version.VersionBuilder</name>
+ <arguments>
+ <dictionary>
+ <key>release.path</key>
+ <value>/org.eclipse.emf.cdo.releng.release/release.xml</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.emf.cdo.releng.version.VersionNature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000000..48aafaf7ea
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,381 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=public
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=warning
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.5
+org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled
+org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,HIGH,HIGH,LOW,LOW,LOW,LOW,LOW
+org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,XXX,PERF,MEM,POLISH,@generated NOT,@ADDED
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=1
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=next_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
+org.eclipse.jdt.core.formatter.comment.line_length=120
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=2
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=space
+org.eclipse.jdt.core.formatter.tabulation.size=2
+org.eclipse.jdt.core.formatter.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/.settings/org.eclipse.jdt.ui.prefs b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000000..3fc140fcdc
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,119 @@
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=true
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.correct_indentation=true
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.organize_imports=true
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.remove_private_constructors=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=true
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.use_blocks=true
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_parentheses_in_expressions=true
+cleanup.use_this_for_non_static_field_access=true
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=true
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup_profile=_EMFT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_EMFT
+formatter_settings_version=12
+org.eclipse.jdt.ui.exception.name=ex
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=org.eclipse.emf.cdo;org.eclipse.emf.internal.cdo;org.eclipse.net4j;org.eclipse.internal.net4j;org.eclipse.emf;org.eclipse;com;org;javax;java;
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=99
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="false" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment"/><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*\r\n * Copyright (c) 2004-2013 Eike Stepper (Berlin, Germany) and others.\r\n * All rights reserved. This program and the accompanying materials\r\n * are made available under the terms of the Eclipse Public License v1.0\r\n * which accompanies this distribution, and is available at\r\n * http\://www.eclipse.org/legal/epl-v10.html\r\n * \r\n * Contributors\:\r\n * Eike Stepper - initial API and implementation\r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author Eike Stepper\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment"/><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="false" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment"/><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=false
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=true
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.make_local_variable_final=false
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=true
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_blocks=true
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_parentheses_in_expressions=true
+sp_cleanup.use_this_for_non_static_field_access=true
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=true
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/.settings/org.eclipse.ltk.core.refactoring.prefs b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/.settings/org.eclipse.ltk.core.refactoring.prefs
new file mode 100644
index 0000000000..864e30fe5d
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/.settings/org.eclipse.ltk.core.refactoring.prefs
@@ -0,0 +1,3 @@
+#Thu Feb 04 09:44:24 CET 2010
+eclipse.preferences.version=1
+org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/.settings/org.eclipse.mylyn.tasks.ui.prefs b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/.settings/org.eclipse.mylyn.tasks.ui.prefs
new file mode 100644
index 0000000000..b050639a54
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/.settings/org.eclipse.mylyn.tasks.ui.prefs
@@ -0,0 +1,4 @@
+#Thu Feb 04 09:44:24 CET 2010
+eclipse.preferences.version=1
+project.repository.kind=bugzilla
+project.repository.url=https\://bugs.eclipse.org/bugs
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/.settings/org.eclipse.mylyn.team.ui.prefs b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/.settings/org.eclipse.mylyn.team.ui.prefs
new file mode 100644
index 0000000000..2f50f36c0c
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/.settings/org.eclipse.mylyn.team.ui.prefs
@@ -0,0 +1,3 @@
+#Thu Feb 04 09:44:24 CET 2010
+commit.comment.template=[${task.id}] ${task.description} \r\n${task.url}
+eclipse.preferences.version=1
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/.settings/org.eclipse.pde.api.tools.prefs b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 0000000000..0c17d59e45
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,95 @@
+#Thu Feb 04 09:44:24 CET 2010
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_JAVADOC_TAG=Ignore
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Error
+MISSING_EE_DESCRIPTIONS=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Ignore
+automatically_removed_unused_problem_filters=Disabled
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/.settings/org.eclipse.pde.prefs b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/.settings/org.eclipse.pde.prefs
new file mode 100644
index 0000000000..eb962232b8
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,32 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=2
+compilers.p.discouraged-class=2
+compilers.p.internal=1
+compilers.p.missing-packages=1
+compilers.p.missing-version-export-package=1
+compilers.p.missing-version-import-package=1
+compilers.p.missing-version-require-bundle=1
+compilers.p.no-required-att=0
+compilers.p.not-externalized-att=2
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=2
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+eclipse.preferences.version=1
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000..fb1f1f6f77
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/META-INF/MANIFEST.MF
@@ -0,0 +1,18 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.emf.cdo.releng.workingsets.editor;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: org.eclipse.emf.cdo.releng.workingsets.presentation.WorkingSetsEditorPlugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Export-Package: org.eclipse.emf.cdo.releng.workingsets.presentation;version="1.0.0"
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)",
+ org.eclipse.core.resources;bundle-version="[3.5.0,4.0.0)";visibility:=reexport,
+ org.eclipse.emf.cdo.releng.workingsets.edit;bundle-version="[1.0.0,2.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore.xmi;visibility:=reexport;bundle-version="[2.5.0,3.0.0)",
+ org.eclipse.emf.edit.ui;visibility:=reexport;bundle-version="[2.5.0,3.0.0)",
+ org.eclipse.ui.ide;visibility:=reexport;bundle-version="[3.5.0,4.0.0)"
+Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/about.html b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/about.html
new file mode 100644
index 0000000000..d35d5aed64
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 5, 2007</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/build.properties b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/build.properties
new file mode 100644
index 0000000000..bc62f5eb62
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/build.properties
@@ -0,0 +1,14 @@
+#
+
+bin.includes = .,\
+ icons/,\
+ META-INF/,\
+ plugin.xml,\
+ plugin.properties,\
+ copyright.txt,\
+ about.html
+jars.compile.order = .
+source.. = src/
+output.. = bin
+src.includes = about.html,\
+ copyright.txt
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/copyright.txt b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/copyright.txt
new file mode 100644
index 0000000000..1c77978050
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/copyright.txt
@@ -0,0 +1,8 @@
+Copyright (c) 2004-2013 Eike Stepper (Berlin, Germany) and others.
+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
+
+Contributors:
+ Eike Stepper - initial API and implementation
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/icons/full/obj16/WorkingSetsModelFile.gif b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/icons/full/obj16/WorkingSetsModelFile.gif
new file mode 100644
index 0000000000..f878001bdd
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/icons/full/obj16/WorkingSetsModelFile.gif
Binary files differ
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/icons/full/wizban/NewWorkingSets.gif b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/icons/full/wizban/NewWorkingSets.gif
new file mode 100644
index 0000000000..07efd3e0d8
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/icons/full/wizban/NewWorkingSets.gif
Binary files differ
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/plugin.properties b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/plugin.properties
new file mode 100644
index 0000000000..ef1729083d
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/plugin.properties
@@ -0,0 +1,60 @@
+# Copyright (c) 2013 Eike Stepper (Berlin, Germany) and others.
+# 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
+#
+# Contributors:
+# Eike Stepper - initial API and implementation
+
+pluginName = CDO Release Engineering Dynamic Working Sets Editor
+providerName = Eclipse Modeling Project
+
+_UI_WorkingSetsEditor_menu = &WorkingSets Editor
+
+_UI_CreateChild_menu_item = &New Child
+_UI_CreateSibling_menu_item = N&ew Sibling
+
+_UI_ShowPropertiesView_menu_item = Show &Properties View
+_UI_RefreshViewer_menu_item = &Refresh
+
+_UI_SelectionPage_label = Selection
+_UI_ParentPage_label = Parent
+_UI_ListPage_label = List
+_UI_TreePage_label = Tree
+_UI_TablePage_label = Table
+_UI_TreeWithColumnsPage_label = Tree with Columns
+_UI_ObjectColumn_label = Object
+_UI_SelfColumn_label = Self
+
+_UI_NoObjectSelected = Selected Nothing
+_UI_SingleObjectSelected = Selected Object: {0}
+_UI_MultiObjectSelected = Selected {0} Objects
+
+_UI_OpenEditorError_label = Open Editor
+
+_UI_Wizard_category = Example EMF Model Creation Wizards
+
+_UI_CreateModelError_message = Problems encountered in file "{0}"
+
+_UI_WorkingSetsModelWizard_label = WorkingSets Model
+_UI_WorkingSetsModelWizard_description = Create a new WorkingSets model
+
+_UI_WorkingSetsEditor_label = WorkingSets Model Editor
+
+_UI_WorkingSetsEditorFilenameDefaultBase = My
+_UI_WorkingSetsEditorFilenameExtensions = workingsets
+
+_UI_Wizard_label = New
+
+_WARN_FilenameExtension = The file name must end in ''.{0}''
+_WARN_FilenameExtensions = The file name must have one of the following extensions: {0}
+
+_UI_ModelObject = &Model Object
+_UI_XMLEncoding = &XML Encoding
+_UI_XMLEncodingChoices = UTF-8 ASCII UTF-16 UTF-16BE UTF-16LE ISO-8859-1
+_UI_Wizard_initial_object_description = Select a model object to create
+
+_UI_FileConflict_label = File Conflict
+_WARN_FileConflict = There are unsaved changes that conflict with changes made outside the editor. Do you wish to discard this editor's changes?
+
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/plugin.xml b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/plugin.xml
new file mode 100644
index 0000000000..a71ad65b94
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/plugin.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+-->
+
+<plugin>
+
+ <extension
+ point="org.eclipse.ui.startup">
+ <startup
+ class="org.eclipse.emf.cdo.releng.workingsets.presentation.EarlyStartup">
+ </startup>
+ </extension>
+
+ <extension
+ point="org.eclipse.ui.preferencePages">
+ <page
+ class="org.eclipse.emf.cdo.releng.workingsets.presentation.WorkingSetsPreferencePage"
+ id="org.eclipse.emf.cdo.releng.workingsets.presentation.VersionBuilderPreferencePage"
+ name="Dynamic Working Sets">
+ </page>
+ </extension>
+
+ <extension point="org.eclipse.ui.newWizards">
+ <!-- @generated workingsets -->
+ <category
+ id="org.eclipse.emf.ecore.Wizard.category.ID"
+ name="%_UI_Wizard_category"/>
+ <wizard
+ id="org.eclipse.emf.cdo.releng.workingsets.presentation.WorkingSetsModelWizardID"
+ name="%_UI_WorkingSetsModelWizard_label"
+ class="org.eclipse.emf.cdo.releng.workingsets.presentation.WorkingSetsModelWizard"
+ category="org.eclipse.emf.ecore.Wizard.category.ID"
+ icon="icons/full/obj16/WorkingSetsModelFile.gif">
+ <description>%_UI_WorkingSetsModelWizard_description</description>
+ <selection class="org.eclipse.core.resources.IResource"/>
+ </wizard>
+ </extension>
+
+ <extension point="org.eclipse.ui.editors">
+ <!-- @generated workingsets -->
+ <editor
+ id="org.eclipse.emf.cdo.releng.workingsets.presentation.WorkingSetsEditorID"
+ name="%_UI_WorkingSetsEditor_label"
+ icon="icons/full/obj16/WorkingSetsModelFile.gif"
+ extensions="workingsets"
+ class="org.eclipse.emf.cdo.releng.workingsets.presentation.WorkingSetsEditor"
+ contributorClass="org.eclipse.emf.cdo.releng.workingsets.presentation.WorkingSetsActionBarContributor">
+ </editor>
+ </extension>
+
+</plugin>
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/EarlyStartup.java b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/src/org/eclipse/emf/cdo/releng/workingsets/presentation/EarlyStartup.java
index 2d051aefde..3847732e6c 100644
--- a/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/EarlyStartup.java
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/src/org/eclipse/emf/cdo/releng/workingsets/presentation/EarlyStartup.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2012 Eike Stepper (Berlin, Germany) and others.
+ * Copyright (c) 2013 Eike Stepper (Berlin, Germany) and others.
* 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
@@ -8,7 +8,7 @@
* Contributors:
* Eike Stepper - initial API and implementation
*/
-package org.eclipse.emf.cdo.releng.workingsets;
+package org.eclipse.emf.cdo.releng.workingsets.presentation;
import org.eclipse.ui.IStartup;
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/src/org/eclipse/emf/cdo/releng/workingsets/presentation/WorkingSetManager.java b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/src/org/eclipse/emf/cdo/releng/workingsets/presentation/WorkingSetManager.java
new file mode 100644
index 0000000000..4aec8b85f6
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/src/org/eclipse/emf/cdo/releng/workingsets/presentation/WorkingSetManager.java
@@ -0,0 +1,282 @@
+/*
+ * Copyright (c) 2004-2013 Eike Stepper (Berlin, Germany) and others.
+ * 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
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.releng.workingsets.presentation;
+
+import org.eclipse.emf.cdo.releng.workingsets.Predicate;
+import org.eclipse.emf.cdo.releng.workingsets.WorkingSet;
+import org.eclipse.emf.cdo.releng.workingsets.WorkingSetGroup;
+import org.eclipse.emf.cdo.releng.workingsets.util.WorkingSetsUtil;
+
+import org.eclipse.emf.common.util.BasicEMap;
+import org.eclipse.emf.common.util.EMap;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences.PreferenceChangeEvent;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IWorkingSet;
+import org.eclipse.ui.IWorkingSetManager;
+import org.eclipse.ui.PlatformUI;
+
+import java.util.Arrays;
+import java.util.LinkedHashSet;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * @author Eike Stepper
+ */
+public class WorkingSetManager
+{
+ private static final String WORKING_SET_PAGE = "org.eclipse.jdt.ui.JavaWorkingSetPage";
+
+ private static final IWorkingSetManager MANAGER = PlatformUI.getWorkbench().getWorkingSetManager();
+
+ private static final IWorkspace WORKSPACE = ResourcesPlugin.getWorkspace();
+
+ private final IEclipsePreferences.IPreferenceChangeListener preferencesListener = new IEclipsePreferences.IPreferenceChangeListener()
+ {
+ public void preferenceChange(PreferenceChangeEvent event)
+ {
+ if (WorkingSetsUtil.WORKING_SET_GROUP_PREFERENCE_KEY.equals(event.getKey()))
+ {
+ WorkingSetGroup oldWorkingSetGroup = workingSetGroup;
+
+ // Compute the working sets for the new working group.
+ workingSetGroup = WorkingSetsUtil.getWorkingSetGroup();
+ EMap<String, Set<IAdaptable>> workingSets = getWorkingSets();
+
+ // Update the map to include null (to cause a delete) for any old working set that isn't in the new working set.
+ for (WorkingSet workingSet : oldWorkingSetGroup.getWorkingSets())
+ {
+ String name = workingSet.getName();
+ if (!workingSets.containsKey(name))
+ {
+ workingSets.put(name, null);
+ }
+ }
+
+ // Update the working sets for all the projects in the workspace and apply the result to the real working sets.
+ updateProjects(workingSets);
+ apply(workingSets);
+ }
+ }
+ };
+
+ private final IResourceChangeListener resourceChangeListener = new IResourceChangeListener()
+ {
+ public void resourceChanged(IResourceChangeEvent event)
+ {
+ IResourceDelta delta = event.getDelta();
+ if (delta != null)
+ {
+ try
+ {
+ // Compute the workings sets and update them relative to our workspace delta, i.e., relative to added and
+ // removed projects.
+ final EMap<String, Set<IAdaptable>> workingSets = getWorkingSets();
+ IResourceDeltaVisitor resourceDeltaVisitor = new IResourceDeltaVisitor()
+ {
+ public boolean visit(IResourceDelta delta) throws CoreException
+ {
+ IResource resource = delta.getResource();
+ if (resource instanceof IWorkspaceRoot)
+ {
+ return true;
+ }
+
+ if (resource instanceof IProject)
+ {
+ int kind = delta.getKind();
+ if (kind == IResourceDelta.ADDED)
+ {
+ addProject((IProject)resource, workingSets);
+ }
+ else if (kind == IResourceDelta.REMOVED)
+ {
+ removeProject((IProject)resource, workingSets);
+ }
+ }
+
+ return false;
+ }
+ };
+
+ delta.accept(resourceDeltaVisitor);
+ apply(workingSets);
+ }
+ catch (CoreException ex)
+ {
+ // Ignore
+ }
+ }
+ }
+ };
+
+ private WorkingSetGroup workingSetGroup;
+
+ public WorkingSetManager()
+ {
+ workingSetGroup = WorkingSetsUtil.getWorkingSetGroup();
+
+ // Compute the working sets, update them for the projects in the workspace, and apply those results to the real
+ // working sets.
+ EMap<String, Set<IAdaptable>> workingSets = getWorkingSets();
+ updateProjects(workingSets);
+ apply(workingSets);
+
+ // Listen for projects being added or removed from the workspace and for preferences changing.
+ WORKSPACE.addResourceChangeListener(resourceChangeListener);
+ WorkingSetsUtil.WORKING_SET_GROUP_PREFERENCES.addPreferenceChangeListener(preferencesListener);
+ }
+
+ /**
+ * Clean up the listeners.
+ */
+ public void dispose()
+ {
+ WORKSPACE.removeResourceChangeListener(resourceChangeListener);
+
+ WorkingSetsUtil.WORKING_SET_GROUP_PREFERENCES.removePreferenceChangeListener(preferencesListener);
+ }
+
+ /**
+ * Returns a map with an entry for every working set defined in the working set group from the working set name to either the elements in the real working set or to null, if there isn't one.
+ */
+ private EMap<String, Set<IAdaptable>> getWorkingSets()
+ {
+ EMap<String, Set<IAdaptable>> workingSets = new BasicEMap<String, Set<IAdaptable>>();
+ for (WorkingSet workingSet : workingSetGroup.getWorkingSets())
+ {
+ String name = workingSet.getName();
+ IWorkingSet iWorkingSet = MANAGER.getWorkingSet(name);
+ workingSets.put(name,
+ iWorkingSet == null ? null : new LinkedHashSet<IAdaptable>(Arrays.asList(iWorkingSet.getElements())));
+ }
+
+ return workingSets;
+ }
+
+ /**
+ * Update the real workings sets based on the map.
+ * This deletes the real working set for any map entry with a null value and creates or updates the real working set for every other entry.
+ */
+ private void apply(final EMap<String, Set<IAdaptable>> workingSets)
+ {
+ // Do this on the UI thread to avoid problems with JDT's getting out of sync with respect to our updates.
+ Display.getDefault().asyncExec(new Runnable()
+ {
+ public void run()
+ {
+ for (Map.Entry<String, Set<IAdaptable>> entry : workingSets)
+ {
+ String key = entry.getKey();
+ Set<IAdaptable> value = entry.getValue();
+ IWorkingSet workingSet = MANAGER.getWorkingSet(key);
+ if (workingSet == null)
+ {
+ if (value != null)
+ {
+ workingSet = MANAGER.createWorkingSet(key, value.toArray(new IAdaptable[value.size()]));
+ workingSet.setLabel(key);
+ workingSet.setId(WORKING_SET_PAGE);
+ MANAGER.addWorkingSet(workingSet);
+ }
+ }
+ else
+ {
+ if (value == null)
+ {
+ MANAGER.removeWorkingSet(workingSet);
+ }
+ else
+ {
+ workingSet.setElements(value.toArray(new IAdaptable[value.size()]));
+ }
+ }
+ }
+ }
+ });
+ }
+
+ /**
+ * Compute the elements for the working sets based on the projects in the workspace.
+ */
+ private void updateProjects(EMap<String, Set<IAdaptable>> workingSets)
+ {
+ for (IProject project : WORKSPACE.getRoot().getProjects())
+ {
+ addProject(project, workingSets);
+ }
+ }
+
+ /**
+ * Adds the project to the appropriate working set entry, if applicable.
+ */
+ private void addProject(IProject project, EMap<String, Set<IAdaptable>> workingSets)
+ {
+ for (WorkingSet workingSet : workingSetGroup.getWorkingSets())
+ {
+ for (Predicate predicate : workingSet.getPredicates())
+ {
+ if (predicate.matches(project))
+ {
+ String name = workingSet.getName();
+ Set<IAdaptable> elements = workingSets.get(name);
+ if (elements == null)
+ {
+ elements = new LinkedHashSet<IAdaptable>();
+ workingSets.put(name, elements);
+ }
+
+ elements.add(project);
+
+ // Add the element only to the first matchinging working set.
+ return;
+ }
+ }
+ }
+ }
+
+ /**
+ * Removes the project from the appropriate working set entry.
+ */
+ private void removeProject(IProject project, EMap<String, Set<IAdaptable>> workingSets)
+ {
+ for (WorkingSet workingSet : workingSetGroup.getWorkingSets())
+ {
+ for (Predicate predicate : workingSet.getPredicates())
+ {
+ if (predicate.matches(project))
+ {
+ String name = workingSet.getName();
+ Set<IAdaptable> elements = workingSets.get(name);
+ if (elements != null)
+ {
+ elements.remove(name);
+ }
+
+ return;
+ }
+ }
+ }
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/src/org/eclipse/emf/cdo/releng/workingsets/presentation/WorkingSetsActionBarContributor.java b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/src/org/eclipse/emf/cdo/releng/workingsets/presentation/WorkingSetsActionBarContributor.java
new file mode 100644
index 0000000000..5756beb219
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/src/org/eclipse/emf/cdo/releng/workingsets/presentation/WorkingSetsActionBarContributor.java
@@ -0,0 +1,478 @@
+/*
+ * Copyright (c) 2013 Eike Stepper (Berlin, Germany) and others.
+ * 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
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.releng.workingsets.presentation;
+
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+import org.eclipse.emf.edit.ui.action.ControlAction;
+import org.eclipse.emf.edit.ui.action.CreateChildAction;
+import org.eclipse.emf.edit.ui.action.CreateSiblingAction;
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+import org.eclipse.emf.edit.ui.action.LoadResourceAction;
+import org.eclipse.emf.edit.ui.action.ValidateAction;
+import org.eclipse.emf.edit.ui.provider.DiagnosticDecorator;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.ActionContributionItem;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IContributionManager;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.action.SubContributionItem;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PartInitException;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+/**
+ * This is the action bar contributor for the WorkingSets model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class WorkingSetsActionBarContributor extends EditingDomainActionBarContributor implements
+ ISelectionChangedListener
+{
+ /**
+ * This keeps track of the active editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IEditorPart activeEditorPart;
+
+ /**
+ * This keeps track of the current selection provider.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ISelectionProvider selectionProvider;
+
+ /**
+ * This action opens the Properties view.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IAction showPropertiesViewAction = new Action(
+ WorkingSetsEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item"))
+ {
+ @Override
+ public void run()
+ {
+ try
+ {
+ getPage().showView("org.eclipse.ui.views.PropertySheet");
+ }
+ catch (PartInitException exception)
+ {
+ WorkingSetsEditorPlugin.INSTANCE.log(exception);
+ }
+ }
+ };
+
+ /**
+ * This action refreshes the viewer of the current editor if the editor
+ * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IAction refreshViewerAction = new Action(
+ WorkingSetsEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item"))
+ {
+ @Override
+ public boolean isEnabled()
+ {
+ return activeEditorPart instanceof IViewerProvider;
+ }
+
+ @Override
+ public void run()
+ {
+ if (activeEditorPart instanceof IViewerProvider)
+ {
+ Viewer viewer = ((IViewerProvider)activeEditorPart).getViewer();
+ if (viewer != null)
+ {
+ viewer.refresh();
+ }
+ }
+ }
+ };
+
+ /**
+ * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor
+ * generated for the current selection by the item provider.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<IAction> createChildActions;
+
+ /**
+ * This is the menu manager into which menu contribution items should be added for CreateChild actions.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IMenuManager createChildMenuManager;
+
+ /**
+ * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor
+ * generated for the current selection by the item provider.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<IAction> createSiblingActions;
+
+ /**
+ * This is the menu manager into which menu contribution items should be added for CreateSibling actions.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IMenuManager createSiblingMenuManager;
+
+ /**
+ * This creates an instance of the contributor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public WorkingSetsActionBarContributor()
+ {
+ super(ADDITIONS_LAST_STYLE);
+ loadResourceAction = new LoadResourceAction();
+ validateAction = new ValidateAction();
+ liveValidationAction = new DiagnosticDecorator.LiveValidator.LiveValidationAction(WorkingSetsEditorPlugin
+ .getPlugin().getDialogSettings());
+ controlAction = new ControlAction();
+ }
+
+ /**
+ * This adds Separators for editor additions to the tool bar.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void contributeToToolBar(IToolBarManager toolBarManager)
+ {
+ toolBarManager.add(new Separator("workingsets-settings"));
+ toolBarManager.add(new Separator("workingsets-additions"));
+ }
+
+ /**
+ * This adds to the menu bar a menu and some separators for editor additions,
+ * as well as the sub-menus for object creation items.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void contributeToMenu(IMenuManager menuManager)
+ {
+ super.contributeToMenu(menuManager);
+
+ IMenuManager submenuManager = new MenuManager(
+ WorkingSetsEditorPlugin.INSTANCE.getString("_UI_WorkingSetsEditor_menu"),
+ "org.eclipse.emf.cdo.releng.workingsetsMenuID");
+ menuManager.insertAfter("additions", submenuManager);
+ submenuManager.add(new Separator("settings"));
+ submenuManager.add(new Separator("actions"));
+ submenuManager.add(new Separator("additions"));
+ submenuManager.add(new Separator("additions-end"));
+
+ // Prepare for CreateChild item addition or removal.
+ //
+ createChildMenuManager = new MenuManager(WorkingSetsEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+ submenuManager.insertBefore("additions", createChildMenuManager);
+
+ // Prepare for CreateSibling item addition or removal.
+ //
+ createSiblingMenuManager = new MenuManager(
+ WorkingSetsEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+ submenuManager.insertBefore("additions", createSiblingMenuManager);
+
+ // Force an update because Eclipse hides empty menus now.
+ //
+ submenuManager.addMenuListener(new IMenuListener()
+ {
+ public void menuAboutToShow(IMenuManager menuManager)
+ {
+ menuManager.updateAll(true);
+ }
+ });
+
+ addGlobalActions(submenuManager);
+ }
+
+ /**
+ * When the active editor changes, this remembers the change and registers with it as a selection provider.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void setActiveEditor(IEditorPart part)
+ {
+ super.setActiveEditor(part);
+ activeEditorPart = part;
+
+ // Switch to the new selection provider.
+ //
+ if (selectionProvider != null)
+ {
+ selectionProvider.removeSelectionChangedListener(this);
+ }
+ if (part == null)
+ {
+ selectionProvider = null;
+ }
+ else
+ {
+ selectionProvider = part.getSite().getSelectionProvider();
+ selectionProvider.addSelectionChangedListener(this);
+
+ // Fake a selection changed event to update the menus.
+ //
+ if (selectionProvider.getSelection() != null)
+ {
+ selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection()));
+ }
+ }
+ }
+
+ /**
+ * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener},
+ * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings
+ * that can be added to the selected object and updating the menus accordingly.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void selectionChanged(SelectionChangedEvent event)
+ {
+ // Remove any menu items for old selection.
+ //
+ if (createChildMenuManager != null)
+ {
+ depopulateManager(createChildMenuManager, createChildActions);
+ }
+ if (createSiblingMenuManager != null)
+ {
+ depopulateManager(createSiblingMenuManager, createSiblingActions);
+ }
+
+ // Query the new selection for appropriate new child/sibling descriptors
+ //
+ Collection<?> newChildDescriptors = null;
+ Collection<?> newSiblingDescriptors = null;
+
+ ISelection selection = event.getSelection();
+ if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).size() == 1)
+ {
+ Object object = ((IStructuredSelection)selection).getFirstElement();
+
+ EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain();
+
+ newChildDescriptors = domain.getNewChildDescriptors(object, null);
+ newSiblingDescriptors = domain.getNewChildDescriptors(null, object);
+ }
+
+ // Generate actions for selection; populate and redraw the menus.
+ //
+ createChildActions = generateCreateChildActions(newChildDescriptors, selection);
+ createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection);
+
+ if (createChildMenuManager != null)
+ {
+ populateManager(createChildMenuManager, createChildActions, null);
+ createChildMenuManager.update(true);
+ }
+ if (createSiblingMenuManager != null)
+ {
+ populateManager(createSiblingMenuManager, createSiblingActions, null);
+ createSiblingMenuManager.update(true);
+ }
+ }
+
+ /**
+ * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>,
+ * and returns the collection of these actions.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection)
+ {
+ Collection<IAction> actions = new ArrayList<IAction>();
+ if (descriptors != null)
+ {
+ for (Object descriptor : descriptors)
+ {
+ actions.add(new CreateChildAction(activeEditorPart, selection, descriptor));
+ }
+ }
+ return actions;
+ }
+
+ /**
+ * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>,
+ * and returns the collection of these actions.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection)
+ {
+ Collection<IAction> actions = new ArrayList<IAction>();
+ if (descriptors != null)
+ {
+ for (Object descriptor : descriptors)
+ {
+ actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor));
+ }
+ }
+ return actions;
+ }
+
+ /**
+ * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s
+ * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection,
+ * by inserting them before the specified contribution item <code>contributionID</code>.
+ * If <code>contributionID</code> is <code>null</code>, they are simply added.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions,
+ String contributionID)
+ {
+ if (actions != null)
+ {
+ for (IAction action : actions)
+ {
+ if (contributionID != null)
+ {
+ manager.insertBefore(contributionID, action);
+ }
+ else
+ {
+ manager.add(action);
+ }
+ }
+ }
+ }
+
+ /**
+ * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s
+ * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions)
+ {
+ if (actions != null)
+ {
+ IContributionItem[] items = manager.getItems();
+ for (int i = 0; i < items.length; i++)
+ {
+ // Look into SubContributionItems
+ //
+ IContributionItem contributionItem = items[i];
+ while (contributionItem instanceof SubContributionItem)
+ {
+ contributionItem = ((SubContributionItem)contributionItem).getInnerItem();
+ }
+
+ // Delete the ActionContributionItems with matching action.
+ //
+ if (contributionItem instanceof ActionContributionItem)
+ {
+ IAction action = ((ActionContributionItem)contributionItem).getAction();
+ if (actions.contains(action))
+ {
+ manager.remove(contributionItem);
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * This populates the pop-up menu before it appears.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void menuAboutToShow(IMenuManager menuManager)
+ {
+ super.menuAboutToShow(menuManager);
+ MenuManager submenuManager = null;
+
+ submenuManager = new MenuManager(WorkingSetsEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+ populateManager(submenuManager, createChildActions, null);
+ menuManager.insertBefore("edit", submenuManager);
+
+ submenuManager = new MenuManager(WorkingSetsEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+ populateManager(submenuManager, createSiblingActions, null);
+ menuManager.insertBefore("edit", submenuManager);
+ }
+
+ /**
+ * This inserts global actions before the "additions-end" separator.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void addGlobalActions(IMenuManager menuManager)
+ {
+ menuManager.insertAfter("additions-end", new Separator("ui-actions"));
+ menuManager.insertAfter("ui-actions", showPropertiesViewAction);
+
+ refreshViewerAction.setEnabled(refreshViewerAction.isEnabled());
+ menuManager.insertAfter("ui-actions", refreshViewerAction);
+
+ super.addGlobalActions(menuManager);
+ }
+
+ /**
+ * This ensures that a delete action will clean up all references to deleted objects.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected boolean removeAllReferencesOnDelete()
+ {
+ return true;
+ }
+
+}
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/src/org/eclipse/emf/cdo/releng/workingsets/presentation/WorkingSetsEditor.java b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/src/org/eclipse/emf/cdo/releng/workingsets/presentation/WorkingSetsEditor.java
new file mode 100644
index 0000000000..db28ea16b6
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/src/org/eclipse/emf/cdo/releng/workingsets/presentation/WorkingSetsEditor.java
@@ -0,0 +1,1733 @@
+/*
+ * Copyright (c) 2013 Eike Stepper (Berlin, Germany) and others.
+ * 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
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.releng.workingsets.presentation;
+
+import org.eclipse.emf.cdo.releng.workingsets.impl.PreferencesURIHandlerImpl;
+import org.eclipse.emf.cdo.releng.workingsets.provider.WorkingSetsItemProviderAdapterFactory;
+
+import org.eclipse.emf.common.command.BasicCommandStack;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CommandStack;
+import org.eclipse.emf.common.command.CommandStackListener;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.ui.MarkerHelper;
+import org.eclipse.emf.common.ui.editor.ProblemEditorPart;
+import org.eclipse.emf.common.ui.viewer.ColumnViewerInformationControlToolTipSupport;
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+import org.eclipse.emf.common.util.BasicDiagnostic;
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.util.EContentAdapter;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
+import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory;
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor;
+import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter;
+import org.eclipse.emf.edit.ui.dnd.LocalTransfer;
+import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.emf.edit.ui.provider.DecoratingColumLabelProvider;
+import org.eclipse.emf.edit.ui.provider.DiagnosticDecorator;
+import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider;
+import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper;
+import org.eclipse.emf.edit.ui.util.EditUIUtil;
+import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IStatusLineManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+import org.eclipse.jface.util.LocalSelectionTransfer;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.FileTransfer;
+import org.eclipse.swt.dnd.Transfer;
+import org.eclipse.swt.events.ControlAdapter;
+import org.eclipse.swt.events.ControlEvent;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.IPartListener;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+import org.eclipse.ui.dialogs.SaveAsDialog;
+import org.eclipse.ui.ide.IGotoMarker;
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.MultiPageEditorPart;
+import org.eclipse.ui.views.contentoutline.ContentOutline;
+import org.eclipse.ui.views.contentoutline.ContentOutlinePage;
+import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
+import org.eclipse.ui.views.properties.IPropertySheetPage;
+import org.eclipse.ui.views.properties.PropertySheet;
+import org.eclipse.ui.views.properties.PropertySheetPage;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.EventObject;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * This is an example of a WorkingSets model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class WorkingSetsEditor extends MultiPageEditorPart implements IEditingDomainProvider, ISelectionProvider,
+ IMenuListener, IViewerProvider, IGotoMarker
+{
+ /**
+ * This keeps track of the editing domain that is used to track all changes to the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected AdapterFactoryEditingDomain editingDomain;
+
+ /**
+ * This is the one adapter factory used for providing views of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ComposedAdapterFactory adapterFactory;
+
+ /**
+ * This is the content outline page.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IContentOutlinePage contentOutlinePage;
+
+ /**
+ * This is a kludge...
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IStatusLineManager contentOutlineStatusLineManager;
+
+ /**
+ * This is the content outline page's viewer.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TreeViewer contentOutlineViewer;
+
+ /**
+ * This is the property sheet page.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected List<PropertySheetPage> propertySheetPages = new ArrayList<PropertySheetPage>();
+
+ /**
+ * This is the viewer that shadows the selection in the content outline.
+ * The parent relation must be correctly defined for this to work.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TreeViewer selectionViewer;
+
+ /**
+ * This keeps track of the active content viewer, which may be either one of the viewers in the pages or the content outline viewer.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Viewer currentViewer;
+
+ /**
+ * This listens to which ever viewer is active.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ISelectionChangedListener selectionChangedListener;
+
+ /**
+ * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>();
+
+ /**
+ * This keeps track of the selection of the editor as a whole.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ISelection editorSelection = StructuredSelection.EMPTY;
+
+ /**
+ * The MarkerHelper is responsible for creating workspace resource markers presented
+ * in Eclipse's Problems View.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected MarkerHelper markerHelper = new EditUIMarkerHelper();
+
+ /**
+ * This listens for when the outline becomes active
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IPartListener partListener = new IPartListener()
+ {
+ public void partActivated(IWorkbenchPart p)
+ {
+ if (p instanceof ContentOutline)
+ {
+ if (((ContentOutline)p).getCurrentPage() == contentOutlinePage)
+ {
+ getActionBarContributor().setActiveEditor(WorkingSetsEditor.this);
+
+ setCurrentViewer(contentOutlineViewer);
+ }
+ }
+ else if (p instanceof PropertySheet)
+ {
+ if (propertySheetPages.contains(((PropertySheet)p).getCurrentPage()))
+ {
+ getActionBarContributor().setActiveEditor(WorkingSetsEditor.this);
+ handleActivate();
+ }
+ }
+ else if (p == WorkingSetsEditor.this)
+ {
+ handleActivate();
+ }
+ }
+
+ public void partBroughtToTop(IWorkbenchPart p)
+ {
+ // Ignore.
+ }
+
+ public void partClosed(IWorkbenchPart p)
+ {
+ // Ignore.
+ }
+
+ public void partDeactivated(IWorkbenchPart p)
+ {
+ // Ignore.
+ }
+
+ public void partOpened(IWorkbenchPart p)
+ {
+ // Ignore.
+ }
+ };
+
+ /**
+ * Resources that have been removed since last activation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+ /**
+ * Resources that have been changed since last activation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<Resource> changedResources = new ArrayList<Resource>();
+
+ /**
+ * Resources that have been saved.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<Resource> savedResources = new ArrayList<Resource>();
+
+ /**
+ * Map to store the diagnostic associated with a resource.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Map<Resource, Diagnostic> resourceToDiagnosticMap = new LinkedHashMap<Resource, Diagnostic>();
+
+ /**
+ * Controls whether the problem indication should be updated.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected boolean updateProblemIndication = true;
+
+ /**
+ * Adapter used to update the problem indication when resources are demanded loaded.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EContentAdapter problemIndicationAdapter = new EContentAdapter()
+ {
+ @Override
+ public void notifyChanged(Notification notification)
+ {
+ if (notification.getNotifier() instanceof Resource)
+ {
+ switch (notification.getFeatureID(Resource.class))
+ {
+ case Resource.RESOURCE__IS_LOADED:
+ case Resource.RESOURCE__ERRORS:
+ case Resource.RESOURCE__WARNINGS:
+ {
+ Resource resource = (Resource)notification.getNotifier();
+ Diagnostic diagnostic = analyzeResourceProblems(resource, null);
+ if (diagnostic.getSeverity() != Diagnostic.OK)
+ {
+ resourceToDiagnosticMap.put(resource, diagnostic);
+ }
+ else
+ {
+ resourceToDiagnosticMap.remove(resource);
+ }
+
+ if (updateProblemIndication)
+ {
+ getSite().getShell().getDisplay().asyncExec(new Runnable()
+ {
+ public void run()
+ {
+ updateProblemIndication();
+ }
+ });
+ }
+ break;
+ }
+ }
+ }
+ else
+ {
+ super.notifyChanged(notification);
+ }
+ }
+
+ @Override
+ protected void setTarget(Resource target)
+ {
+ basicSetTarget(target);
+ }
+
+ @Override
+ protected void unsetTarget(Resource target)
+ {
+ basicUnsetTarget(target);
+ resourceToDiagnosticMap.remove(target);
+ if (updateProblemIndication)
+ {
+ getSite().getShell().getDisplay().asyncExec(new Runnable()
+ {
+ public void run()
+ {
+ updateProblemIndication();
+ }
+ });
+ }
+ }
+ };
+
+ /**
+ * This listens for workspace changes.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IResourceChangeListener resourceChangeListener = new IResourceChangeListener()
+ {
+ public void resourceChanged(IResourceChangeEvent event)
+ {
+ IResourceDelta delta = event.getDelta();
+ try
+ {
+ class ResourceDeltaVisitor implements IResourceDeltaVisitor
+ {
+ protected ResourceSet resourceSet = editingDomain.getResourceSet();
+
+ protected Collection<Resource> changedResources = new ArrayList<Resource>();
+
+ protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+ public boolean visit(final IResourceDelta delta)
+ {
+ if (delta.getResource().getType() == IResource.FILE)
+ {
+ if (delta.getKind() == IResourceDelta.REMOVED || delta.getKind() == IResourceDelta.CHANGED)
+ {
+ final Resource resource = resourceSet.getResource(
+ URI.createPlatformResourceURI(delta.getFullPath().toString(), true), false);
+ if (resource != null)
+ {
+ if (delta.getKind() == IResourceDelta.REMOVED)
+ {
+ removedResources.add(resource);
+ }
+ else
+ {
+ if ((delta.getFlags() & IResourceDelta.MARKERS) != 0)
+ {
+ DiagnosticDecorator.DiagnosticAdapter.update(resource,
+ markerHelper.getMarkerDiagnostics(resource, (IFile)delta.getResource()));
+ }
+ if ((delta.getFlags() & IResourceDelta.CONTENT) != 0)
+ {
+ if (!savedResources.remove(resource))
+ {
+ changedResources.add(resource);
+ }
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ return true;
+ }
+
+ public Collection<Resource> getChangedResources()
+ {
+ return changedResources;
+ }
+
+ public Collection<Resource> getRemovedResources()
+ {
+ return removedResources;
+ }
+ }
+
+ final ResourceDeltaVisitor visitor = new ResourceDeltaVisitor();
+ delta.accept(visitor);
+
+ if (!visitor.getRemovedResources().isEmpty())
+ {
+ getSite().getShell().getDisplay().asyncExec(new Runnable()
+ {
+ public void run()
+ {
+ removedResources.addAll(visitor.getRemovedResources());
+ if (!isDirty())
+ {
+ getSite().getPage().closeEditor(WorkingSetsEditor.this, false);
+ }
+ }
+ });
+ }
+
+ if (!visitor.getChangedResources().isEmpty())
+ {
+ getSite().getShell().getDisplay().asyncExec(new Runnable()
+ {
+ public void run()
+ {
+ changedResources.addAll(visitor.getChangedResources());
+ if (getSite().getPage().getActiveEditor() == WorkingSetsEditor.this)
+ {
+ handleActivate();
+ }
+ }
+ });
+ }
+ }
+ catch (CoreException exception)
+ {
+ WorkingSetsEditorPlugin.INSTANCE.log(exception);
+ }
+ }
+ };
+
+ /**
+ * Handles activation of the editor or it's associated views.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void handleActivate()
+ {
+ // Recompute the read only state.
+ //
+ if (editingDomain.getResourceToReadOnlyMap() != null)
+ {
+ editingDomain.getResourceToReadOnlyMap().clear();
+
+ // Refresh any actions that may become enabled or disabled.
+ //
+ setSelection(getSelection());
+ }
+
+ if (!removedResources.isEmpty())
+ {
+ if (handleDirtyConflict())
+ {
+ getSite().getPage().closeEditor(WorkingSetsEditor.this, false);
+ }
+ else
+ {
+ removedResources.clear();
+ changedResources.clear();
+ savedResources.clear();
+ }
+ }
+ else if (!changedResources.isEmpty())
+ {
+ changedResources.removeAll(savedResources);
+ handleChangedResources();
+ changedResources.clear();
+ savedResources.clear();
+ }
+ }
+
+ /**
+ * Handles what to do with changed resources on activation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void handleChangedResources()
+ {
+ if (!changedResources.isEmpty() && (!isDirty() || handleDirtyConflict()))
+ {
+ if (isDirty())
+ {
+ changedResources.addAll(editingDomain.getResourceSet().getResources());
+ }
+ editingDomain.getCommandStack().flush();
+
+ updateProblemIndication = false;
+ for (Resource resource : changedResources)
+ {
+ if (resource.isLoaded())
+ {
+ resource.unload();
+ try
+ {
+ resource.load(Collections.EMPTY_MAP);
+ }
+ catch (IOException exception)
+ {
+ if (!resourceToDiagnosticMap.containsKey(resource))
+ {
+ resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+ }
+ }
+ }
+ }
+
+ if (AdapterFactoryEditingDomain.isStale(editorSelection))
+ {
+ setSelection(StructuredSelection.EMPTY);
+ }
+
+ updateProblemIndication = true;
+ updateProblemIndication();
+ }
+ }
+
+ /**
+ * Updates the problems indication with the information described in the specified diagnostic.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void updateProblemIndication()
+ {
+ if (updateProblemIndication)
+ {
+ BasicDiagnostic diagnostic = new BasicDiagnostic(Diagnostic.OK, "org.eclipse.emf.cdo.releng.workingsets.editor",
+ 0, null, new Object[] { editingDomain.getResourceSet() });
+ for (Diagnostic childDiagnostic : resourceToDiagnosticMap.values())
+ {
+ if (childDiagnostic.getSeverity() != Diagnostic.OK)
+ {
+ diagnostic.add(childDiagnostic);
+ }
+ }
+
+ int lastEditorPage = getPageCount() - 1;
+ if (lastEditorPage >= 0 && getEditor(lastEditorPage) instanceof ProblemEditorPart)
+ {
+ ((ProblemEditorPart)getEditor(lastEditorPage)).setDiagnostic(diagnostic);
+ if (diagnostic.getSeverity() != Diagnostic.OK)
+ {
+ setActivePage(lastEditorPage);
+ }
+ }
+ else if (diagnostic.getSeverity() != Diagnostic.OK)
+ {
+ ProblemEditorPart problemEditorPart = new ProblemEditorPart();
+ problemEditorPart.setDiagnostic(diagnostic);
+ problemEditorPart.setMarkerHelper(markerHelper);
+ try
+ {
+ addPage(++lastEditorPage, problemEditorPart, getEditorInput());
+ setPageText(lastEditorPage, problemEditorPart.getPartName());
+ setActivePage(lastEditorPage);
+ showTabs();
+ }
+ catch (PartInitException exception)
+ {
+ WorkingSetsEditorPlugin.INSTANCE.log(exception);
+ }
+ }
+
+ if (markerHelper.hasMarkers(editingDomain.getResourceSet()))
+ {
+ markerHelper.deleteMarkers(editingDomain.getResourceSet());
+ if (diagnostic.getSeverity() != Diagnostic.OK)
+ {
+ try
+ {
+ markerHelper.createMarkers(diagnostic);
+ }
+ catch (CoreException exception)
+ {
+ WorkingSetsEditorPlugin.INSTANCE.log(exception);
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Shows a dialog that asks if conflicting changes should be discarded.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected boolean handleDirtyConflict()
+ {
+ return MessageDialog.openQuestion(getSite().getShell(), getString("_UI_FileConflict_label"),
+ getString("_WARN_FileConflict"));
+ }
+
+ /**
+ * This creates a model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public WorkingSetsEditor()
+ {
+ super();
+ initializeEditingDomain();
+ }
+
+ /**
+ * This sets up the editing domain for the model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void initializeEditingDomain()
+ {
+ // Create an adapter factory that yields item providers.
+ //
+ adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+
+ adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory());
+ adapterFactory.addAdapterFactory(new WorkingSetsItemProviderAdapterFactory());
+ adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory());
+
+ // Create the command stack that will notify this editor as commands are executed.
+ //
+ BasicCommandStack commandStack = new BasicCommandStack();
+
+ // Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus.
+ //
+ commandStack.addCommandStackListener(new CommandStackListener()
+ {
+ public void commandStackChanged(final EventObject event)
+ {
+ getContainer().getDisplay().asyncExec(new Runnable()
+ {
+ public void run()
+ {
+ firePropertyChange(IEditorPart.PROP_DIRTY);
+
+ // Try to select the affected objects.
+ //
+ Command mostRecentCommand = ((CommandStack)event.getSource()).getMostRecentCommand();
+ if (mostRecentCommand != null)
+ {
+ setSelectionToViewer(mostRecentCommand.getAffectedObjects());
+ }
+ for (Iterator<PropertySheetPage> i = propertySheetPages.iterator(); i.hasNext();)
+ {
+ PropertySheetPage propertySheetPage = i.next();
+ if (propertySheetPage.getControl().isDisposed())
+ {
+ i.remove();
+ }
+ else
+ {
+ propertySheetPage.refresh();
+ }
+ }
+ }
+ });
+ }
+ });
+
+ // Create the editing domain with a special command stack.
+ //
+ editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>());
+ }
+
+ /**
+ * This is here for the listener to be able to call it.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void firePropertyChange(int action)
+ {
+ super.firePropertyChange(action);
+ }
+
+ /**
+ * This sets the selection into whichever viewer is active.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSelectionToViewer(Collection<?> collection)
+ {
+ final Collection<?> theSelection = collection;
+ // Make sure it's okay.
+ //
+ if (theSelection != null && !theSelection.isEmpty())
+ {
+ Runnable runnable = new Runnable()
+ {
+ public void run()
+ {
+ // Try to select the items in the current content viewer of the editor.
+ //
+ if (currentViewer != null)
+ {
+ currentViewer.setSelection(new StructuredSelection(theSelection.toArray()), true);
+ }
+ }
+ };
+ getSite().getShell().getDisplay().asyncExec(runnable);
+ }
+ }
+
+ /**
+ * This returns the editing domain as required by the {@link IEditingDomainProvider} interface.
+ * This is important for implementing the static methods of {@link AdapterFactoryEditingDomain}
+ * and for supporting {@link org.eclipse.emf.edit.ui.action.CommandAction}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EditingDomain getEditingDomain()
+ {
+ return editingDomain;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public class ReverseAdapterFactoryContentProvider extends AdapterFactoryContentProvider
+ {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ReverseAdapterFactoryContentProvider(AdapterFactory adapterFactory)
+ {
+ super(adapterFactory);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object[] getElements(Object object)
+ {
+ Object parent = super.getParent(object);
+ return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object[] getChildren(Object object)
+ {
+ Object parent = super.getParent(object);
+ return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean hasChildren(Object object)
+ {
+ Object parent = super.getParent(object);
+ return parent != null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getParent(Object object)
+ {
+ return null;
+ }
+ }
+
+ /**
+ * This makes sure that one content viewer, either for the current page or the outline view, if it has focus,
+ * is the current one.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setCurrentViewer(Viewer viewer)
+ {
+ // If it is changing...
+ //
+ if (currentViewer != viewer)
+ {
+ if (selectionChangedListener == null)
+ {
+ // Create the listener on demand.
+ //
+ selectionChangedListener = new ISelectionChangedListener()
+ {
+ // This just notifies those things that are affected by the section.
+ //
+ public void selectionChanged(SelectionChangedEvent selectionChangedEvent)
+ {
+ setSelection(selectionChangedEvent.getSelection());
+ }
+ };
+ }
+
+ // Stop listening to the old one.
+ //
+ if (currentViewer != null)
+ {
+ currentViewer.removeSelectionChangedListener(selectionChangedListener);
+ }
+
+ // Start listening to the new one.
+ //
+ if (viewer != null)
+ {
+ viewer.addSelectionChangedListener(selectionChangedListener);
+ }
+
+ // Remember it.
+ //
+ currentViewer = viewer;
+
+ // Set the editors selection based on the current viewer's selection.
+ //
+ setSelection(currentViewer == null ? StructuredSelection.EMPTY : currentViewer.getSelection());
+ }
+ }
+
+ /**
+ * This returns the viewer as required by the {@link IViewerProvider} interface.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Viewer getViewer()
+ {
+ return currentViewer;
+ }
+
+ /**
+ * This creates a context menu for the viewer and adds a listener as well registering the menu for extension.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void createContextMenuFor(StructuredViewer viewer)
+ {
+ MenuManager contextMenu = new MenuManager("#PopUp");
+ contextMenu.add(new Separator("additions"));
+ contextMenu.setRemoveAllWhenShown(true);
+ contextMenu.addMenuListener(this);
+ Menu menu = contextMenu.createContextMenu(viewer.getControl());
+ viewer.getControl().setMenu(menu);
+ getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer));
+
+ int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK;
+ Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance(), LocalSelectionTransfer.getTransfer(),
+ FileTransfer.getInstance() };
+ viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer));
+ viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer));
+ }
+
+ public void createModel()
+ {
+ editingDomain.getResourceSet().getURIConverter().getURIHandlers().add(0, new PreferencesURIHandlerImpl());
+ createModelGen();
+ }
+
+ /**
+ * This is the method called to load a resource into the editing domain's resource set based on the editor's input.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createModelGen()
+ {
+ URI resourceURI = EditUIUtil.getURI(getEditorInput());
+ Exception exception = null;
+ Resource resource = null;
+ try
+ {
+ // Load the resource through the editing domain.
+ //
+ resource = editingDomain.getResourceSet().getResource(resourceURI, true);
+ }
+ catch (Exception e)
+ {
+ exception = e;
+ resource = editingDomain.getResourceSet().getResource(resourceURI, false);
+ }
+
+ Diagnostic diagnostic = analyzeResourceProblems(resource, exception);
+ if (diagnostic.getSeverity() != Diagnostic.OK)
+ {
+ resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+ }
+ editingDomain.getResourceSet().eAdapters().add(problemIndicationAdapter);
+ }
+
+ /**
+ * Returns a diagnostic describing the errors and warnings listed in the resource
+ * and the specified exception (if any).
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Diagnostic analyzeResourceProblems(Resource resource, Exception exception)
+ {
+ if (!resource.getErrors().isEmpty() || !resource.getWarnings().isEmpty())
+ {
+ BasicDiagnostic basicDiagnostic = new BasicDiagnostic(Diagnostic.ERROR,
+ "org.eclipse.emf.cdo.releng.workingsets.editor", 0, getString("_UI_CreateModelError_message",
+ resource.getURI()), new Object[] { exception == null ? (Object)resource : exception });
+ basicDiagnostic.merge(EcoreUtil.computeDiagnostic(resource, true));
+ return basicDiagnostic;
+ }
+ else if (exception != null)
+ {
+ return new BasicDiagnostic(Diagnostic.ERROR, "org.eclipse.emf.cdo.releng.workingsets.editor", 0, getString(
+ "_UI_CreateModelError_message", resource.getURI()), new Object[] { exception });
+ }
+ else
+ {
+ return Diagnostic.OK_INSTANCE;
+ }
+ }
+
+ @Override
+ public void createPages()
+ {
+ createPagesGen();
+ if (!getEditingDomain().getResourceSet().getResources().isEmpty())
+ {
+ selectionViewer.setInput(editingDomain.getResourceSet().getResources().get(0));
+ selectionViewer.expandToLevel(2);
+ }
+
+ }
+
+ /**
+ * This is the method used by the framework to install your own controls.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPagesGen()
+ {
+ // Creates the model from the editor input
+ //
+ createModel();
+
+ // Only creates the other pages if there is something that can be edited
+ //
+ if (!getEditingDomain().getResourceSet().getResources().isEmpty())
+ {
+ // Create a page for the selection tree view.
+ //
+ Tree tree = new Tree(getContainer(), SWT.MULTI);
+ selectionViewer = new TreeViewer(tree);
+ setCurrentViewer(selectionViewer);
+
+ selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+ selectionViewer.setLabelProvider(new DecoratingColumLabelProvider(
+ new AdapterFactoryLabelProvider(adapterFactory), new DiagnosticDecorator(editingDomain, selectionViewer,
+ WorkingSetsEditorPlugin.getPlugin().getDialogSettings())));
+ selectionViewer.setInput(editingDomain.getResourceSet());
+ selectionViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
+
+ new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory);
+ new ColumnViewerInformationControlToolTipSupport(selectionViewer,
+ new DiagnosticDecorator.EditingDomainLocationListener(editingDomain, selectionViewer));
+
+ createContextMenuFor(selectionViewer);
+ int pageIndex = addPage(tree);
+ setPageText(pageIndex, getString("_UI_SelectionPage_label"));
+
+ getSite().getShell().getDisplay().asyncExec(new Runnable()
+ {
+ public void run()
+ {
+ setActivePage(0);
+ }
+ });
+ }
+
+ // Ensures that this editor will only display the page's tab
+ // area if there are more than one page
+ //
+ getContainer().addControlListener(new ControlAdapter()
+ {
+ boolean guard = false;
+
+ @Override
+ public void controlResized(ControlEvent event)
+ {
+ if (!guard)
+ {
+ guard = true;
+ hideTabs();
+ guard = false;
+ }
+ }
+ });
+
+ getSite().getShell().getDisplay().asyncExec(new Runnable()
+ {
+ public void run()
+ {
+ updateProblemIndication();
+ }
+ });
+ }
+
+ /**
+ * If there is just one page in the multi-page editor part,
+ * this hides the single tab at the bottom.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void hideTabs()
+ {
+ if (getPageCount() <= 1)
+ {
+ setPageText(0, "");
+ if (getContainer() instanceof CTabFolder)
+ {
+ ((CTabFolder)getContainer()).setTabHeight(1);
+ Point point = getContainer().getSize();
+ getContainer().setSize(point.x, point.y + 6);
+ }
+ }
+ }
+
+ /**
+ * If there is more than one page in the multi-page editor part,
+ * this shows the tabs at the bottom.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void showTabs()
+ {
+ if (getPageCount() > 1)
+ {
+ setPageText(0, getString("_UI_SelectionPage_label"));
+ if (getContainer() instanceof CTabFolder)
+ {
+ ((CTabFolder)getContainer()).setTabHeight(SWT.DEFAULT);
+ Point point = getContainer().getSize();
+ getContainer().setSize(point.x, point.y - 6);
+ }
+ }
+ }
+
+ /**
+ * This is used to track the active viewer.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void pageChange(int pageIndex)
+ {
+ super.pageChange(pageIndex);
+
+ if (contentOutlinePage != null)
+ {
+ handleContentOutlineSelection(contentOutlinePage.getSelection());
+ }
+ }
+
+ /**
+ * This is how the framework determines which interfaces we implement.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("rawtypes")
+ @Override
+ public Object getAdapter(Class key)
+ {
+ if (key.equals(IContentOutlinePage.class))
+ {
+ return showOutlineView() ? getContentOutlinePage() : null;
+ }
+ else if (key.equals(IPropertySheetPage.class))
+ {
+ return getPropertySheetPage();
+ }
+ else if (key.equals(IGotoMarker.class))
+ {
+ return this;
+ }
+ else
+ {
+ return super.getAdapter(key);
+ }
+ }
+
+ /**
+ * This accesses a cached version of the content outliner.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IContentOutlinePage getContentOutlinePage()
+ {
+ if (contentOutlinePage == null)
+ {
+ // The content outline is just a tree.
+ //
+ class MyContentOutlinePage extends ContentOutlinePage
+ {
+ @Override
+ public void createControl(Composite parent)
+ {
+ super.createControl(parent);
+ contentOutlineViewer = getTreeViewer();
+ contentOutlineViewer.addSelectionChangedListener(this);
+
+ // Set up the tree viewer.
+ //
+ contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+ contentOutlineViewer.setLabelProvider(new DecoratingColumLabelProvider(new AdapterFactoryLabelProvider(
+ adapterFactory), new DiagnosticDecorator(editingDomain, contentOutlineViewer, WorkingSetsEditorPlugin
+ .getPlugin().getDialogSettings())));
+ contentOutlineViewer.setInput(editingDomain.getResourceSet());
+
+ new ColumnViewerInformationControlToolTipSupport(contentOutlineViewer,
+ new DiagnosticDecorator.EditingDomainLocationListener(editingDomain, contentOutlineViewer));
+
+ // Make sure our popups work.
+ //
+ createContextMenuFor(contentOutlineViewer);
+
+ if (!editingDomain.getResourceSet().getResources().isEmpty())
+ {
+ // Select the root object in the view.
+ //
+ contentOutlineViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources()
+ .get(0)), true);
+ }
+ }
+
+ @Override
+ public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager,
+ IStatusLineManager statusLineManager)
+ {
+ super.makeContributions(menuManager, toolBarManager, statusLineManager);
+ contentOutlineStatusLineManager = statusLineManager;
+ }
+
+ @Override
+ public void setActionBars(IActionBars actionBars)
+ {
+ super.setActionBars(actionBars);
+ getActionBarContributor().shareGlobalActions(this, actionBars);
+ }
+ }
+
+ contentOutlinePage = new MyContentOutlinePage();
+
+ // Listen to selection so that we can handle it is a special way.
+ //
+ contentOutlinePage.addSelectionChangedListener(new ISelectionChangedListener()
+ {
+ // This ensures that we handle selections correctly.
+ //
+ public void selectionChanged(SelectionChangedEvent event)
+ {
+ handleContentOutlineSelection(event.getSelection());
+ }
+ });
+ }
+
+ return contentOutlinePage;
+ }
+
+ /**
+ * This accesses a cached version of the property sheet.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IPropertySheetPage getPropertySheetPage()
+ {
+ PropertySheetPage propertySheetPage = new ExtendedPropertySheetPage(editingDomain,
+ ExtendedPropertySheetPage.Decoration.LIVE, WorkingSetsEditorPlugin.getPlugin().getDialogSettings())
+ {
+ @Override
+ public void setSelectionToViewer(List<?> selection)
+ {
+ WorkingSetsEditor.this.setSelectionToViewer(selection);
+ WorkingSetsEditor.this.setFocus();
+ }
+
+ @Override
+ public void setActionBars(IActionBars actionBars)
+ {
+ super.setActionBars(actionBars);
+ getActionBarContributor().shareGlobalActions(this, actionBars);
+ }
+ };
+ propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory));
+ propertySheetPages.add(propertySheetPage);
+
+ return propertySheetPage;
+ }
+
+ /**
+ * This deals with how we want selection in the outliner to affect the other views.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void handleContentOutlineSelection(ISelection selection)
+ {
+ if (selectionViewer != null && !selection.isEmpty() && selection instanceof IStructuredSelection)
+ {
+ Iterator<?> selectedElements = ((IStructuredSelection)selection).iterator();
+ if (selectedElements.hasNext())
+ {
+ // Get the first selected element.
+ //
+ Object selectedElement = selectedElements.next();
+
+ ArrayList<Object> selectionList = new ArrayList<Object>();
+ selectionList.add(selectedElement);
+ while (selectedElements.hasNext())
+ {
+ selectionList.add(selectedElements.next());
+ }
+
+ // Set the selection to the widget.
+ //
+ selectionViewer.setSelection(new StructuredSelection(selectionList));
+ }
+ }
+ }
+
+ /**
+ * This is for implementing {@link IEditorPart} and simply tests the command stack.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean isDirty()
+ {
+ return ((BasicCommandStack)editingDomain.getCommandStack()).isSaveNeeded();
+ }
+
+ /**
+ * This is for implementing {@link IEditorPart} and simply saves the model file.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void doSave(IProgressMonitor progressMonitor)
+ {
+ // Save only resources that have actually changed.
+ //
+ final Map<Object, Object> saveOptions = new HashMap<Object, Object>();
+ saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER);
+ saveOptions.put(Resource.OPTION_LINE_DELIMITER, Resource.OPTION_LINE_DELIMITER_UNSPECIFIED);
+
+ // Do the work within an operation because this is a long running activity that modifies the workbench.
+ //
+ WorkspaceModifyOperation operation = new WorkspaceModifyOperation()
+ {
+ // This is the method that gets invoked when the operation runs.
+ //
+ @Override
+ public void execute(IProgressMonitor monitor)
+ {
+ // Save the resources to the file system.
+ //
+ boolean first = true;
+ for (Resource resource : editingDomain.getResourceSet().getResources())
+ {
+ if ((first || !resource.getContents().isEmpty() || isPersisted(resource))
+ && !editingDomain.isReadOnly(resource))
+ {
+ try
+ {
+ long timeStamp = resource.getTimeStamp();
+ resource.save(saveOptions);
+ if (resource.getTimeStamp() != timeStamp)
+ {
+ savedResources.add(resource);
+ }
+ }
+ catch (Exception exception)
+ {
+ resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+ }
+ first = false;
+ }
+ }
+ }
+ };
+
+ updateProblemIndication = false;
+ try
+ {
+ // This runs the options, and shows progress.
+ //
+ new ProgressMonitorDialog(getSite().getShell()).run(true, false, operation);
+
+ // Refresh the necessary state.
+ //
+ ((BasicCommandStack)editingDomain.getCommandStack()).saveIsDone();
+ firePropertyChange(IEditorPart.PROP_DIRTY);
+ }
+ catch (Exception exception)
+ {
+ // Something went wrong that shouldn't.
+ //
+ WorkingSetsEditorPlugin.INSTANCE.log(exception);
+ }
+ updateProblemIndication = true;
+ updateProblemIndication();
+ }
+
+ /**
+ * This returns whether something has been persisted to the URI of the specified resource.
+ * The implementation uses the URI converter from the editor's resource set to try to open an input stream.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected boolean isPersisted(Resource resource)
+ {
+ boolean result = false;
+ try
+ {
+ InputStream stream = editingDomain.getResourceSet().getURIConverter().createInputStream(resource.getURI());
+ if (stream != null)
+ {
+ result = true;
+ stream.close();
+ }
+ }
+ catch (IOException e)
+ {
+ // Ignore
+ }
+ return result;
+ }
+
+ /**
+ * This always returns true because it is not currently supported.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean isSaveAsAllowed()
+ {
+ return true;
+ }
+
+ /**
+ * This also changes the editor's input.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void doSaveAs()
+ {
+ SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell());
+ saveAsDialog.open();
+ IPath path = saveAsDialog.getResult();
+ if (path != null)
+ {
+ IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
+ if (file != null)
+ {
+ doSaveAs(URI.createPlatformResourceURI(file.getFullPath().toString(), true), new FileEditorInput(file));
+ }
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void doSaveAs(URI uri, IEditorInput editorInput)
+ {
+ editingDomain.getResourceSet().getResources().get(0).setURI(uri);
+ setInputWithNotify(editorInput);
+ setPartName(editorInput.getName());
+ IProgressMonitor progressMonitor = getActionBars().getStatusLineManager() != null ? getActionBars()
+ .getStatusLineManager().getProgressMonitor() : new NullProgressMonitor();
+ doSave(progressMonitor);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void gotoMarker(IMarker marker)
+ {
+ List<?> targetObjects = markerHelper.getTargetObjects(editingDomain, marker);
+ if (!targetObjects.isEmpty())
+ {
+ setSelectionToViewer(targetObjects);
+ }
+ }
+
+ /**
+ * This is called during startup.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void init(IEditorSite site, IEditorInput editorInput)
+ {
+ setSite(site);
+ setInputWithNotify(editorInput);
+ setPartName(editorInput.getName());
+ site.setSelectionProvider(this);
+ site.getPage().addPartListener(partListener);
+ ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener, IResourceChangeEvent.POST_CHANGE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void setFocus()
+ {
+ getControl(getActivePage()).setFocus();
+ }
+
+ /**
+ * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void addSelectionChangedListener(ISelectionChangedListener listener)
+ {
+ selectionChangedListeners.add(listener);
+ }
+
+ /**
+ * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void removeSelectionChangedListener(ISelectionChangedListener listener)
+ {
+ selectionChangedListeners.remove(listener);
+ }
+
+ /**
+ * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ISelection getSelection()
+ {
+ return editorSelection;
+ }
+
+ /**
+ * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection.
+ * Calling this result will notify the listeners.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSelection(ISelection selection)
+ {
+ editorSelection = selection;
+
+ for (ISelectionChangedListener listener : selectionChangedListeners)
+ {
+ listener.selectionChanged(new SelectionChangedEvent(this, selection));
+ }
+ setStatusLineManager(selection);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setStatusLineManager(ISelection selection)
+ {
+ IStatusLineManager statusLineManager = currentViewer != null && currentViewer == contentOutlineViewer ? contentOutlineStatusLineManager
+ : getActionBars().getStatusLineManager();
+
+ if (statusLineManager != null)
+ {
+ if (selection instanceof IStructuredSelection)
+ {
+ Collection<?> collection = ((IStructuredSelection)selection).toList();
+ switch (collection.size())
+ {
+ case 0:
+ {
+ statusLineManager.setMessage(getString("_UI_NoObjectSelected"));
+ break;
+ }
+ case 1:
+ {
+ String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next());
+ statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text));
+ break;
+ }
+ default:
+ {
+ statusLineManager.setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size())));
+ break;
+ }
+ }
+ }
+ else
+ {
+ statusLineManager.setMessage("");
+ }
+ }
+ }
+
+ /**
+ * This looks up a string in the plugin's plugin.properties file.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static String getString(String key)
+ {
+ return WorkingSetsEditorPlugin.INSTANCE.getString(key);
+ }
+
+ /**
+ * This looks up a string in plugin.properties, making a substitution.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static String getString(String key, Object s1)
+ {
+ return WorkingSetsEditorPlugin.INSTANCE.getString(key, new Object[] { s1 });
+ }
+
+ /**
+ * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void menuAboutToShow(IMenuManager menuManager)
+ {
+ ((IMenuListener)getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EditingDomainActionBarContributor getActionBarContributor()
+ {
+ return (EditingDomainActionBarContributor)getEditorSite().getActionBarContributor();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IActionBars getActionBars()
+ {
+ return getActionBarContributor().getActionBars();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AdapterFactory getAdapterFactory()
+ {
+ return adapterFactory;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void dispose()
+ {
+ updateProblemIndication = false;
+
+ ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener);
+
+ getSite().getPage().removePartListener(partListener);
+
+ adapterFactory.dispose();
+
+ if (getActionBarContributor().getActiveEditor() == this)
+ {
+ getActionBarContributor().setActiveEditor(null);
+ }
+
+ for (PropertySheetPage propertySheetPage : propertySheetPages)
+ {
+ propertySheetPage.dispose();
+ }
+
+ if (contentOutlinePage != null)
+ {
+ contentOutlinePage.dispose();
+ }
+
+ super.dispose();
+ }
+
+ /**
+ * Returns whether the outline view should be presented to the user.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected boolean showOutlineView()
+ {
+ return false;
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/src/org/eclipse/emf/cdo/releng/workingsets/presentation/WorkingSetsEditorPlugin.java b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/src/org/eclipse/emf/cdo/releng/workingsets/presentation/WorkingSetsEditorPlugin.java
new file mode 100644
index 0000000000..b84f5a8165
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/src/org/eclipse/emf/cdo/releng/workingsets/presentation/WorkingSetsEditorPlugin.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright (c) 2013 Eike Stepper (Berlin, Germany) and others.
+ * 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
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.releng.workingsets.presentation;
+
+import org.eclipse.emf.common.EMFPlugin;
+import org.eclipse.emf.common.ui.EclipseUIPlugin;
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.osgi.framework.BundleContext;
+
+/**
+ * This is the central singleton for the Workingsets editor plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class WorkingSetsEditorPlugin extends EMFPlugin
+{
+ /**
+ * Keep track of the singleton.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final WorkingSetsEditorPlugin INSTANCE = new WorkingSetsEditorPlugin();
+
+ /**
+ * Keep track of the singleton.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static Implementation plugin;
+
+ /**
+ * Create the instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public WorkingSetsEditorPlugin()
+ {
+ super(new ResourceLocator[] {});
+ }
+
+ /**
+ * Returns the singleton instance of the Eclipse plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the singleton instance.
+ * @generated
+ */
+ @Override
+ public ResourceLocator getPluginResourceLocator()
+ {
+ return plugin;
+ }
+
+ /**
+ * Returns the singleton instance of the Eclipse plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the singleton instance.
+ * @generated
+ */
+ public static Implementation getPlugin()
+ {
+ return plugin;
+ }
+
+ /**
+ * The actual implementation of the Eclipse <b>Plugin</b>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static class Implementation extends EclipseUIPlugin
+ {
+ private WorkingSetManager workingSetManager;
+
+ /**
+ * Creates an instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Implementation()
+ {
+ super();
+
+ // Remember the static instance.
+ //
+ plugin = this;
+ }
+
+ @Override
+ public void start(BundleContext context) throws Exception
+ {
+ super.start(context);
+
+ workingSetManager = new WorkingSetManager();
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception
+ {
+ super.stop(context);
+
+ workingSetManager.dispose();
+ }
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/src/org/eclipse/emf/cdo/releng/workingsets/presentation/WorkingSetsModelWizard.java b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/src/org/eclipse/emf/cdo/releng/workingsets/presentation/WorkingSetsModelWizard.java
new file mode 100644
index 0000000000..a0f5e1f5e2
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/src/org/eclipse/emf/cdo/releng/workingsets/presentation/WorkingSetsModelWizard.java
@@ -0,0 +1,680 @@
+/*
+ * Copyright (c) 2013 Eike Stepper (Berlin, Germany) and others.
+ * 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
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.releng.workingsets.presentation;
+
+import org.eclipse.emf.cdo.releng.workingsets.WorkingSetsFactory;
+import org.eclipse.emf.cdo.releng.workingsets.WorkingSetsPackage;
+import org.eclipse.emf.cdo.releng.workingsets.provider.WorkingSetsEditPlugin;
+
+import org.eclipse.emf.common.CommonPlugin;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.xmi.XMLResource;
+import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.ISetSelectionTarget;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.StringTokenizer;
+
+/**
+ * This is a simple wizard for creating a new model file.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class WorkingSetsModelWizard extends Wizard implements INewWizard
+{
+ /**
+ * The supported extensions for created files.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<String> FILE_EXTENSIONS = Collections
+ .unmodifiableList(Arrays.asList(WorkingSetsEditorPlugin.INSTANCE.getString(
+ "_UI_WorkingSetsEditorFilenameExtensions").split("\\s*,\\s*")));
+
+ /**
+ * A formatted list of supported file extensions, suitable for display.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String FORMATTED_FILE_EXTENSIONS = WorkingSetsEditorPlugin.INSTANCE.getString(
+ "_UI_WorkingSetsEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", ");
+
+ /**
+ * This caches an instance of the model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected WorkingSetsPackage workingSetsPackage = WorkingSetsPackage.eINSTANCE;
+
+ /**
+ * This caches an instance of the model factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected WorkingSetsFactory workingSetsFactory = workingSetsPackage.getWorkingSetsFactory();
+
+ /**
+ * This is the file creation page.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected WorkingSetsModelWizardNewFileCreationPage newFileCreationPage;
+
+ /**
+ * This is the initial object creation page.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected WorkingSetsModelWizardInitialObjectCreationPage initialObjectCreationPage;
+
+ /**
+ * Remember the selection during initialization for populating the default container.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IStructuredSelection selection;
+
+ /**
+ * Remember the workbench during initialization.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IWorkbench workbench;
+
+ /**
+ * Caches the names of the types that can be created as the root object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected List<String> initialObjectNames;
+
+ /**
+ * This just records the information.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void init(IWorkbench workbench, IStructuredSelection selection)
+ {
+ this.workbench = workbench;
+ this.selection = selection;
+ setWindowTitle(WorkingSetsEditorPlugin.INSTANCE.getString("_UI_Wizard_label"));
+ setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(WorkingSetsEditorPlugin.INSTANCE
+ .getImage("full/wizban/NewWorkingSets")));
+ }
+
+ /**
+ * Returns the names of the types that can be created as the root object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<String> getInitialObjectNames()
+ {
+ if (initialObjectNames == null)
+ {
+ initialObjectNames = new ArrayList<String>();
+ for (EClassifier eClassifier : workingSetsPackage.getEClassifiers())
+ {
+ if (eClassifier instanceof EClass)
+ {
+ EClass eClass = (EClass)eClassifier;
+ if (!eClass.isAbstract())
+ {
+ initialObjectNames.add(eClass.getName());
+ }
+ }
+ }
+ Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator());
+ }
+ return initialObjectNames;
+ }
+
+ /**
+ * Create a new model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EObject createInitialModel()
+ {
+ EClass eClass = (EClass)workingSetsPackage.getEClassifier(initialObjectCreationPage.getInitialObjectName());
+ EObject rootObject = workingSetsFactory.create(eClass);
+ return rootObject;
+ }
+
+ /**
+ * Do the work after everything is specified.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean performFinish()
+ {
+ try
+ {
+ // Remember the file.
+ //
+ final IFile modelFile = getModelFile();
+
+ // Do the work within an operation.
+ //
+ WorkspaceModifyOperation operation = new WorkspaceModifyOperation()
+ {
+ @Override
+ protected void execute(IProgressMonitor progressMonitor)
+ {
+ try
+ {
+ // Create a resource set
+ //
+ ResourceSet resourceSet = new ResourceSetImpl();
+
+ // Get the URI of the model file.
+ //
+ URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true);
+
+ // Create a resource for this file.
+ //
+ Resource resource = resourceSet.createResource(fileURI);
+
+ // Add the initial model object to the contents.
+ //
+ EObject rootObject = createInitialModel();
+ if (rootObject != null)
+ {
+ resource.getContents().add(rootObject);
+ }
+
+ // Save the contents of the resource to the file system.
+ //
+ Map<Object, Object> options = new HashMap<Object, Object>();
+ options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding());
+ resource.save(options);
+ }
+ catch (Exception exception)
+ {
+ WorkingSetsEditorPlugin.INSTANCE.log(exception);
+ }
+ finally
+ {
+ progressMonitor.done();
+ }
+ }
+ };
+
+ getContainer().run(false, false, operation);
+
+ // Select the new file resource in the current view.
+ //
+ IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+ IWorkbenchPage page = workbenchWindow.getActivePage();
+ final IWorkbenchPart activePart = page.getActivePart();
+ if (activePart instanceof ISetSelectionTarget)
+ {
+ final ISelection targetSelection = new StructuredSelection(modelFile);
+ getShell().getDisplay().asyncExec(new Runnable()
+ {
+ public void run()
+ {
+ ((ISetSelectionTarget)activePart).selectReveal(targetSelection);
+ }
+ });
+ }
+
+ // Open an editor on the new file.
+ //
+ try
+ {
+ page.openEditor(new FileEditorInput(modelFile),
+ workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId());
+ }
+ catch (PartInitException exception)
+ {
+ MessageDialog.openError(workbenchWindow.getShell(),
+ WorkingSetsEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage());
+ return false;
+ }
+
+ return true;
+ }
+ catch (Exception exception)
+ {
+ WorkingSetsEditorPlugin.INSTANCE.log(exception);
+ return false;
+ }
+ }
+
+ /**
+ * This is the one page of the wizard.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public class WorkingSetsModelWizardNewFileCreationPage extends WizardNewFileCreationPage
+ {
+ /**
+ * Pass in the selection.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public WorkingSetsModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection)
+ {
+ super(pageId, selection);
+ }
+
+ /**
+ * The framework calls this to see if the file is correct.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected boolean validatePage()
+ {
+ if (super.validatePage())
+ {
+ String extension = new Path(getFileName()).getFileExtension();
+ if (extension == null || !FILE_EXTENSIONS.contains(extension))
+ {
+ String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension";
+ setErrorMessage(WorkingSetsEditorPlugin.INSTANCE.getString(key, new Object[] { FORMATTED_FILE_EXTENSIONS }));
+ return false;
+ }
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IFile getModelFile()
+ {
+ return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName()));
+ }
+ }
+
+ /**
+ * This is the page where the type of object to create is selected.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public class WorkingSetsModelWizardInitialObjectCreationPage extends WizardPage
+ {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Combo initialObjectField;
+
+ /**
+ * @generated
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ */
+ protected List<String> encodings;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Combo encodingField;
+
+ /**
+ * Pass in the selection.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public WorkingSetsModelWizardInitialObjectCreationPage(String pageId)
+ {
+ super(pageId);
+ }
+
+ public void createControl(Composite parent)
+ {
+ createControlGen(parent);
+
+ initialObjectField.setText("Working Set Group");
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createControlGen(Composite parent)
+ {
+ Composite composite = new Composite(parent, SWT.NONE);
+ {
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 1;
+ layout.verticalSpacing = 12;
+ composite.setLayout(layout);
+
+ GridData data = new GridData();
+ data.verticalAlignment = GridData.FILL;
+ data.grabExcessVerticalSpace = true;
+ data.horizontalAlignment = GridData.FILL;
+ composite.setLayoutData(data);
+ }
+
+ Label containerLabel = new Label(composite, SWT.LEFT);
+ {
+ containerLabel.setText(WorkingSetsEditorPlugin.INSTANCE.getString("_UI_ModelObject"));
+
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ containerLabel.setLayoutData(data);
+ }
+
+ initialObjectField = new Combo(composite, SWT.BORDER);
+ {
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ data.grabExcessHorizontalSpace = true;
+ initialObjectField.setLayoutData(data);
+ }
+
+ for (String objectName : getInitialObjectNames())
+ {
+ initialObjectField.add(getLabel(objectName));
+ }
+
+ if (initialObjectField.getItemCount() == 1)
+ {
+ initialObjectField.select(0);
+ }
+ initialObjectField.addModifyListener(validator);
+
+ Label encodingLabel = new Label(composite, SWT.LEFT);
+ {
+ encodingLabel.setText(WorkingSetsEditorPlugin.INSTANCE.getString("_UI_XMLEncoding"));
+
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ encodingLabel.setLayoutData(data);
+ }
+ encodingField = new Combo(composite, SWT.BORDER);
+ {
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ data.grabExcessHorizontalSpace = true;
+ encodingField.setLayoutData(data);
+ }
+
+ for (String encoding : getEncodings())
+ {
+ encodingField.add(encoding);
+ }
+
+ encodingField.select(0);
+ encodingField.addModifyListener(validator);
+
+ setPageComplete(validatePage());
+ setControl(composite);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ModifyListener validator = new ModifyListener()
+ {
+ public void modifyText(ModifyEvent e)
+ {
+ setPageComplete(validatePage());
+ }
+ };
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected boolean validatePage()
+ {
+ return getInitialObjectName() != null && getEncodings().contains(encodingField.getText());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void setVisible(boolean visible)
+ {
+ super.setVisible(visible);
+ if (visible)
+ {
+ if (initialObjectField.getItemCount() == 1)
+ {
+ initialObjectField.clearSelection();
+ encodingField.setFocus();
+ }
+ else
+ {
+ encodingField.clearSelection();
+ initialObjectField.setFocus();
+ }
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getInitialObjectName()
+ {
+ String label = initialObjectField.getText();
+
+ for (String name : getInitialObjectNames())
+ {
+ if (getLabel(name).equals(label))
+ {
+ return name;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getEncoding()
+ {
+ return encodingField.getText();
+ }
+
+ /**
+ * Returns the label for the specified type name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected String getLabel(String typeName)
+ {
+ try
+ {
+ return WorkingSetsEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type");
+ }
+ catch (MissingResourceException mre)
+ {
+ WorkingSetsEditorPlugin.INSTANCE.log(mre);
+ }
+ return typeName;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<String> getEncodings()
+ {
+ if (encodings == null)
+ {
+ encodings = new ArrayList<String>();
+ for (StringTokenizer stringTokenizer = new StringTokenizer(
+ WorkingSetsEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer.hasMoreTokens();)
+ {
+ encodings.add(stringTokenizer.nextToken());
+ }
+ }
+ return encodings;
+ }
+ }
+
+ /**
+ * The framework calls this to create the contents of the wizard.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void addPages()
+ {
+ // Create a page, set the title, and the initial model file name.
+ //
+ newFileCreationPage = new WorkingSetsModelWizardNewFileCreationPage("Whatever", selection);
+ newFileCreationPage.setTitle(WorkingSetsEditorPlugin.INSTANCE.getString("_UI_WorkingSetsModelWizard_label"));
+ newFileCreationPage.setDescription(WorkingSetsEditorPlugin.INSTANCE
+ .getString("_UI_WorkingSetsModelWizard_description"));
+ newFileCreationPage.setFileName(WorkingSetsEditorPlugin.INSTANCE
+ .getString("_UI_WorkingSetsEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0));
+ addPage(newFileCreationPage);
+
+ // Try and get the resource selection to determine a current directory for the file dialog.
+ //
+ if (selection != null && !selection.isEmpty())
+ {
+ // Get the resource...
+ //
+ Object selectedElement = selection.iterator().next();
+ if (selectedElement instanceof IResource)
+ {
+ // Get the resource parent, if its a file.
+ //
+ IResource selectedResource = (IResource)selectedElement;
+ if (selectedResource.getType() == IResource.FILE)
+ {
+ selectedResource = selectedResource.getParent();
+ }
+
+ // This gives us a directory...
+ //
+ if (selectedResource instanceof IFolder || selectedResource instanceof IProject)
+ {
+ // Set this for the container.
+ //
+ newFileCreationPage.setContainerFullPath(selectedResource.getFullPath());
+
+ // Make up a unique new name here.
+ //
+ String defaultModelBaseFilename = WorkingSetsEditorPlugin.INSTANCE
+ .getString("_UI_WorkingSetsEditorFilenameDefaultBase");
+ String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0);
+ String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension;
+ for (int i = 1; ((IContainer)selectedResource).findMember(modelFilename) != null; ++i)
+ {
+ modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension;
+ }
+ newFileCreationPage.setFileName(modelFilename);
+ }
+ }
+ }
+ initialObjectCreationPage = new WorkingSetsModelWizardInitialObjectCreationPage("Whatever2");
+ initialObjectCreationPage.setTitle(WorkingSetsEditorPlugin.INSTANCE.getString("_UI_WorkingSetsModelWizard_label"));
+ initialObjectCreationPage.setDescription(WorkingSetsEditorPlugin.INSTANCE
+ .getString("_UI_Wizard_initial_object_description"));
+ addPage(initialObjectCreationPage);
+ }
+
+ /**
+ * Get the file from the page.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IFile getModelFile()
+ {
+ return newFileCreationPage.getModelFile();
+ }
+
+}
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/src/org/eclipse/emf/cdo/releng/workingsets/presentation/WorkingSetsPreferencePage.java b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/src/org/eclipse/emf/cdo/releng/workingsets/presentation/WorkingSetsPreferencePage.java
new file mode 100644
index 0000000000..1e523c49ef
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets.editor/src/org/eclipse/emf/cdo/releng/workingsets/presentation/WorkingSetsPreferencePage.java
@@ -0,0 +1,151 @@
+/*
+ * Copyright (c) 2012 Eike Stepper (Berlin, Germany) and others.
+ * 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
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.releng.workingsets.presentation;
+
+import org.eclipse.emf.cdo.releng.workingsets.provider.WorkingSetsItemProviderAdapterFactory;
+import org.eclipse.emf.cdo.releng.workingsets.util.WorkingSetsAdapterFactory;
+import org.eclipse.emf.cdo.releng.workingsets.util.WorkingSetsUtil;
+
+import org.eclipse.emf.common.ui.URIEditorInput;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.preference.IPreferencePageContainer;
+import org.eclipse.jface.preference.PreferencePage;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Point;
+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.Display;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IPageLayout;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+import org.eclipse.ui.IWorkbenchWindow;
+
+import java.lang.reflect.Method;
+
+/**
+ * @author Eike Stepper
+ */
+public class WorkingSetsPreferencePage extends PreferencePage implements IWorkbenchPreferencePage
+{
+ private IWorkbench workbench;
+
+ public WorkingSetsPreferencePage()
+ {
+ super("<taken from plugin.xml>");
+ setDescription("Manage dynamic working sets:");
+ noDefaultAndApplyButton();
+ }
+
+ public void init(IWorkbench workbench)
+ {
+ this.workbench = workbench;
+ }
+
+ @Override
+ protected Control createContents(Composite parent)
+ {
+ GridLayout layout = new GridLayout();
+ layout.marginWidth = 0;
+ layout.marginHeight = 0;
+ layout.numColumns = 1;
+
+ Composite composite = new Composite(parent, SWT.NONE);
+ composite.setLayout(layout);
+
+ TreeViewer treeViewer = new TreeViewer(composite);
+ WorkingSetsAdapterFactory adapterFactory = new WorkingSetsItemProviderAdapterFactory();
+ treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+ treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+ treeViewer.setInput(WorkingSetsUtil.getWorkingSetGroup());
+ treeViewer.getControl().setLayoutData(
+ new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL));
+
+ return composite;
+ }
+
+ @Override
+ protected void contributeButtons(Composite parent)
+ {
+ super.contributeButtons(parent);
+
+ GridLayout gridLayout = (GridLayout)parent.getLayout();
+ gridLayout.numColumns = 1;
+
+ Button editButton = new Button(parent, SWT.PUSH);
+ editButton.setText("Edit...");
+
+ Dialog.applyDialogFont(editButton);
+ int widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
+ Point minButtonSize = editButton.computeSize(SWT.DEFAULT, SWT.DEFAULT, true);
+ GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
+ data.widthHint = Math.max(widthHint, minButtonSize.x);
+
+ editButton.setLayoutData(data);
+ editButton.addSelectionListener(new SelectionAdapter()
+ {
+ @Override
+ public void widgetSelected(SelectionEvent e)
+ {
+ // Invoke the close method on the preference dialog, but avoid using internal API, so do it reflectively.
+ IPreferencePageContainer container = getContainer();
+
+ try
+ {
+ Method method = container.getClass().getMethod("close");
+ method.invoke(container);
+ }
+ catch (Throwable ex)
+ {
+ WorkingSetsEditorPlugin.INSTANCE.log(ex);
+ }
+
+ openWorkingSetsEditor();
+ }
+ });
+
+ }
+
+ protected void openWorkingSetsEditor()
+ {
+ final IWorkbenchWindow activeWorkbenchWindow = workbench.getActiveWorkbenchWindow();
+ Display display = activeWorkbenchWindow.getShell().getDisplay();
+ display.asyncExec(new Runnable()
+ {
+ public void run()
+ {
+ try
+ {
+ IEditorInput editorInput = new URIEditorInput(WorkingSetsUtil.WORKING_SET_GROUP_PREFERENCE_RESOURCE_URI,
+ "Dynamic Working Set Preferences");
+ IWorkbenchPage activePage = activeWorkbenchWindow.getActivePage();
+ activePage.openEditor(editorInput, "org.eclipse.emf.cdo.releng.workingsets.presentation.WorkingSetsEditorID");
+ activePage.showView(IPageLayout.ID_PROP_SHEET);
+ }
+ catch (Exception ex)
+ {
+ WorkingSetsEditorPlugin.INSTANCE.log(ex);
+ }
+ }
+ });
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets/.settings/org.eclipse.core.resources.prefs b/plugins/org.eclipse.emf.cdo.releng.workingsets/.settings/org.eclipse.core.resources.prefs
index 703ca4a310..5fafe834c3 100644
--- a/plugins/org.eclipse.emf.cdo.releng.workingsets/.settings/org.eclipse.core.resources.prefs
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets/.settings/org.eclipse.core.resources.prefs
@@ -1,3 +1,2 @@
-#Mon Jul 11 16:02:45 CEST 2011
eclipse.preferences.version=1
-
+encoding//model/workingsets.ecorediag=UTF-8
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.releng.workingsets/META-INF/MANIFEST.MF
index bafcacfac0..b67d6138b0 100644
--- a/plugins/org.eclipse.emf.cdo.releng.workingsets/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets/META-INF/MANIFEST.MF
@@ -2,13 +2,15 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.emf.cdo.releng.workingsets;singleton:=true
Bundle-Version: 1.0.200.qualifier
+Bundle-ClassPath: .
Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-Localization: plugin
-Bundle-Activator: org.eclipse.emf.cdo.releng.workingsets.Activator
-Require-Bundle: org.eclipse.ui;bundle-version="[3.5.0,4.0.0)",
- org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)",
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)",
+ org.eclipse.emf.ecore;bundle-version="[2.9.0,3.0.0)";visibility:=reexport,
org.eclipse.core.resources;bundle-version="[3.5.0,4.0.0)"
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: J2SE-1.5
-Export-Package: org.eclipse.emf.cdo.releng.workingsets;version="1.0.200";x-internal:=true
+Export-Package: org.eclipse.emf.cdo.releng.workingsets;version="1.0.200",
+ org.eclipse.emf.cdo.releng.workingsets.impl;version="1.0.200",
+ org.eclipse.emf.cdo.releng.workingsets.util;version="1.0.200"
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets/build.properties b/plugins/org.eclipse.emf.cdo.releng.workingsets/build.properties
index e4de6e4029..eb09361899 100644
--- a/plugins/org.eclipse.emf.cdo.releng.workingsets/build.properties
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets/build.properties
@@ -20,7 +20,8 @@ bin.includes = META-INF/,\
about.properties,\
copyright.txt,\
modeling32.png,\
- plugin.properties
+ plugin.properties,\
+ model/
src.includes = about.html,\
copyright.txt
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets/model/workingsets.ecore b/plugins/org.eclipse.emf.cdo.releng.workingsets/model/workingsets.ecore
new file mode 100644
index 0000000000..92e795e6ce
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets/model/workingsets.ecore
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="workingsets" nsURI="http://www.eclipse.org/CDO/releng/workingsets/1.0"
+ nsPrefix="workingsets">
+ <eClassifiers xsi:type="ecore:EClass" name="WorkingSet">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="predicates" upperBound="-1"
+ eType="#//Predicate" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="WorkingSetGroup">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="workingSets" upperBound="-1"
+ eType="#//WorkingSet" containment="true" eKeys="#//WorkingSet/name"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Predicate" abstract="true" interface="true">
+ <eOperations name="matches" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eParameters name="project" eType="#//Project"/>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="Project" instanceClassName="org.eclipse.core.resources.IProject"
+ serializable="false"/>
+ <eClassifiers xsi:type="ecore:EClass" name="NamePredicate" eSuperTypes="#//Predicate">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="pattern" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets/model/workingsets.ecorediag b/plugins/org.eclipse.emf.cdo.releng.workingsets/model/workingsets.ecorediag
new file mode 100644
index 0000000000..1fadaeec92
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets/model/workingsets.ecorediag
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmi:id="_7Ik9wANJEeOzDrIpOa7NnA" type="EcoreTools" measurementUnit="Pixel">
+ <children xmi:type="notation:Node" xmi:id="_7JI-cANJEeOzDrIpOa7NnA" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_7JdukANJEeOzDrIpOa7NnA" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_7Je8sANJEeOzDrIpOa7NnA" type="5001">
+ <children xmi:type="notation:Node" xmi:id="_lY9kwANLEeOzDrIpOa7NnA" type="2001">
+ <element xmi:type="ecore:EAttribute" href="workingsets.ecore#//WorkingSet/name"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_lY9kwQNLEeOzDrIpOa7NnA"/>
+ </children>
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_7Je8sQNJEeOzDrIpOa7NnA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_7Je8sgNJEeOzDrIpOa7NnA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_7Je8swNJEeOzDrIpOa7NnA"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_7JfjwANJEeOzDrIpOa7NnA" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_7JfjwQNJEeOzDrIpOa7NnA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_7JfjwgNJEeOzDrIpOa7NnA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_7JfjwwNJEeOzDrIpOa7NnA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_7JI-cQNJEeOzDrIpOa7NnA" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="workingsets.ecore#//WorkingSet"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7JI-cgNJEeOzDrIpOa7NnA" x="110" y="155"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_8tuWoANJEeOzDrIpOa7NnA" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_8tvkwANJEeOzDrIpOa7NnA" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_8twL0ANJEeOzDrIpOa7NnA" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_8twL0QNJEeOzDrIpOa7NnA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_8twL0gNJEeOzDrIpOa7NnA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_8twL0wNJEeOzDrIpOa7NnA"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_8twy4ANJEeOzDrIpOa7NnA" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_8twy4QNJEeOzDrIpOa7NnA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_8twy4gNJEeOzDrIpOa7NnA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_8twy4wNJEeOzDrIpOa7NnA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_8tuWoQNJEeOzDrIpOa7NnA" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="workingsets.ecore#//WorkingSetGroup"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8tuWogNJEeOzDrIpOa7NnA" x="105" y="35"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_WOD9UANKEeOzDrIpOa7NnA" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_WOFygANKEeOzDrIpOa7NnA" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_WOFygQNKEeOzDrIpOa7NnA" type="5001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_WOFyggNKEeOzDrIpOa7NnA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_WOFygwNKEeOzDrIpOa7NnA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_WOFyhANKEeOzDrIpOa7NnA"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_WOGZkANKEeOzDrIpOa7NnA" type="5002">
+ <children xmi:type="notation:Node" xmi:id="_X4DZ8ANKEeOzDrIpOa7NnA" type="2002">
+ <element xmi:type="ecore:EOperation" href="workingsets.ecore#//Predicate/matches"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_X4DZ8QNKEeOzDrIpOa7NnA"/>
+ </children>
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_WOGZkQNKEeOzDrIpOa7NnA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_WOHAoANKEeOzDrIpOa7NnA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_WOHAoQNKEeOzDrIpOa7NnA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_WOD9UQNKEeOzDrIpOa7NnA" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="workingsets.ecore#//Predicate"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WOD9UgNKEeOzDrIpOa7NnA" x="71" y="260"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_bidPIANKEeOzDrIpOa7NnA" type="1004">
+ <children xmi:type="notation:Node" xmi:id="_bifrYANKEeOzDrIpOa7NnA" type="4008"/>
+ <children xmi:type="notation:Node" xmi:id="_big5gANKEeOzDrIpOa7NnA" type="4009"/>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_bidPIQNKEeOzDrIpOa7NnA" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EDataType" href="workingsets.ecore#//Project"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bidPIgNKEeOzDrIpOa7NnA" x="386" y="260"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_weXoYANKEeOzDrIpOa7NnA" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_weY2gANKEeOzDrIpOa7NnA" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_weZdkANKEeOzDrIpOa7NnA" type="5001">
+ <children xmi:type="notation:Node" xmi:id="_2DFOIANKEeOzDrIpOa7NnA" type="2001">
+ <element xmi:type="ecore:EAttribute" href="workingsets.ecore#//NamePredicate/pattern"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_2DFOIQNKEeOzDrIpOa7NnA"/>
+ </children>
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_weZdkQNKEeOzDrIpOa7NnA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_weZdkgNKEeOzDrIpOa7NnA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_weZdkwNKEeOzDrIpOa7NnA"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_weaEoANKEeOzDrIpOa7NnA" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_weaEoQNKEeOzDrIpOa7NnA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_weaEogNKEeOzDrIpOa7NnA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_weaEowNKEeOzDrIpOa7NnA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_weXoYQNKEeOzDrIpOa7NnA" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="workingsets.ecore#//NamePredicate"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_weXoYgNKEeOzDrIpOa7NnA" x="105" y="380"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_7Ik9wQNJEeOzDrIpOa7NnA"/>
+ <element xmi:type="ecore:EPackage" href="workingsets.ecore#/"/>
+ <edges xmi:type="notation:Edge" xmi:id="_RTJigANKEeOzDrIpOa7NnA" type="3002" source="_8tuWoANJEeOzDrIpOa7NnA" target="_7JI-cANJEeOzDrIpOa7NnA">
+ <children xmi:type="notation:Node" xmi:id="_RTJihANKEeOzDrIpOa7NnA" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_RTJihQNKEeOzDrIpOa7NnA" x="-23" y="-61"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_RTJihgNKEeOzDrIpOa7NnA" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_RTJihwNKEeOzDrIpOa7NnA" x="-23" y="35"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_RTJigQNKEeOzDrIpOa7NnA" routing="Rectilinear" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_RTJiggNKEeOzDrIpOa7NnA" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="workingsets.ecore#//WorkingSetGroup/workingSets"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_RTJigwNKEeOzDrIpOa7NnA" points="[-5, 24, 7, -96]$[-5, 97, 7, -23]"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_ogBRwANKEeOzDrIpOa7NnA" type="3002" source="_7JI-cANJEeOzDrIpOa7NnA" target="_WOD9UANKEeOzDrIpOa7NnA">
+ <children xmi:type="notation:Node" xmi:id="_ogBRxANKEeOzDrIpOa7NnA" type="4011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ogBRxQNKEeOzDrIpOa7NnA" x="-10" y="-54"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ogBRxgNKEeOzDrIpOa7NnA" type="4012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ogBRxwNKEeOzDrIpOa7NnA" x="-10" y="32"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_ogBRwQNKEeOzDrIpOa7NnA" routing="Rectilinear" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ogBRwgNKEeOzDrIpOa7NnA" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+ <element xmi:type="ecore:EReference" href="workingsets.ecore#//WorkingSet/predicates"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ogBRwwNKEeOzDrIpOa7NnA" points="[0, 25, 48, -64]$[0, 81, 48, -8]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ogDG8ANKEeOzDrIpOa7NnA" id="(0.25102880658436216,0.1746031746031746)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_0QkHoANKEeOzDrIpOa7NnA" type="3003" source="_weXoYANKEeOzDrIpOa7NnA" target="_WOD9UANKEeOzDrIpOa7NnA">
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_0QkHoQNKEeOzDrIpOa7NnA" routing="Rectilinear" lineColor="4210752"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_0QkHogNKEeOzDrIpOa7NnA" fontName="Segoe UI"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0QkHowNKEeOzDrIpOa7NnA" points="[0, -24, 39, 82]$[0, -95, 39, 11]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0QvGwANKEeOzDrIpOa7NnA" id="(0.2962962962962963,0.7936507936507936)"/>
+ </edges>
+</notation:Diagram>
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets/model/workingsets.genmodel b/plugins/org.eclipse.emf.cdo.releng.workingsets/model/workingsets.genmodel
new file mode 100644
index 0000000000..4a3e012652
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets/model/workingsets.genmodel
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.emf.cdo.releng.workingsets/src" creationIcons="false"
+ modelPluginID="org.eclipse.emf.cdo.releng.workingsets" modelName="Workingsets"
+ editPluginClass="org.eclipse.emf.cdo.releng.workingsets.provider.WorkingSetsEditPlugin"
+ editorPluginClass="org.eclipse.emf.cdo.releng.workingsets.presentation.WorkingSetsEditorPlugin"
+ rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container" codeFormatting="true"
+ testsDirectory="" importerID="org.eclipse.emf.importer.ecore" complianceLevel="5.0"
+ copyrightFields="false" operationReflection="true" importOrganizing="true" decoration="Live">
+ <foreignModel>workingsets.ecore</foreignModel>
+ <genPackages prefix="WorkingSets" basePackage="org.eclipse.emf.cdo.releng" disposableProviderFactory="true"
+ multipleEditorPages="false" ecorePackage="workingsets.ecore#/">
+ <genDataTypes ecoreDataType="workingsets.ecore#//Project"/>
+ <genClasses ecoreClass="workingsets.ecore#//WorkingSet">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference workingsets.ecore#//WorkingSet/predicates"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute workingsets.ecore#//WorkingSet/name"/>
+ </genClasses>
+ <genClasses ecoreClass="workingsets.ecore#//WorkingSetGroup">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference workingsets.ecore#//WorkingSetGroup/workingSets"/>
+ </genClasses>
+ <genClasses ecoreClass="workingsets.ecore#//Predicate">
+ <genOperations ecoreOperation="workingsets.ecore#//Predicate/matches">
+ <genParameters ecoreParameter="workingsets.ecore#//Predicate/matches/project"/>
+ </genOperations>
+ </genClasses>
+ <genClasses ecoreClass="workingsets.ecore#//NamePredicate">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute workingsets.ecore#//NamePredicate/pattern"/>
+ </genClasses>
+ </genPackages>
+</genmodel:GenModel>
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets/plugin.xml b/plugins/org.eclipse.emf.cdo.releng.workingsets/plugin.xml
index 0e44389355..0d32c6f676 100644
--- a/plugins/org.eclipse.emf.cdo.releng.workingsets/plugin.xml
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets/plugin.xml
@@ -13,11 +13,12 @@
<plugin>
- <extension
- point="org.eclipse.ui.startup">
- <startup
- class="org.eclipse.emf.cdo.releng.workingsets.EarlyStartup">
- </startup>
+ <extension point="org.eclipse.emf.ecore.generated_package">
+ <!-- @generated workingsets -->
+ <package
+ uri="http://www.eclipse.org/CDO/releng/workingsets/1.0"
+ class="org.eclipse.emf.cdo.releng.workingsets.WorkingSetsPackage"
+ genModel="model/workingsets.genmodel"/>
</extension>
</plugin>
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/Activator.java b/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/Activator.java
deleted file mode 100644
index c8205f0227..0000000000
--- a/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/Activator.java
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- * Copyright (c) 2011, 2012 Eike Stepper (Berlin, Germany) and others.
- * 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
- *
- * Contributors:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.releng.workingsets;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResourceChangeEvent;
-import org.eclipse.core.resources.IResourceChangeListener;
-import org.eclipse.core.resources.IResourceDelta;
-import org.eclipse.core.resources.IWorkspace;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.ui.IWorkingSet;
-import org.eclipse.ui.IWorkingSetManager;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-
-import org.osgi.framework.BundleContext;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-
-/**
- * @author Eike Stepper
- */
-public class Activator extends AbstractUIPlugin implements IResourceChangeListener
-{
- public static final String PLUGIN_ID = "org.eclipse.emf.cdo.releng.workingsets"; //$NON-NLS-1$
-
- private static final String WORKING_SET_PAGE = "org.eclipse.jdt.ui.JavaWorkingSetPage";
-
- private static final IWorkingSetManager MANAGER = PlatformUI.getWorkbench().getWorkingSetManager();
-
- private static final IWorkspace WORKSPACE = ResourcesPlugin.getWorkspace();
-
- private static Activator plugin;
-
- private List<WorkingSetDefinition> workingSetDefinitions = new ArrayList<WorkingSetDefinition>();
-
- private IWorkingSet featureWorkingSet;
-
- public Activator()
- {
- }
-
- public void resourceChanged(IResourceChangeEvent event)
- {
- IResourceDelta delta = event.getDelta();
- if (delta != null)
- {
- for (IResourceDelta resourceDelta : delta.getAffectedChildren())
- {
- int kind = resourceDelta.getKind();
- if (kind == IResourceDelta.ADDED || kind == IResourceDelta.REMOVED)
- {
- updateProjects();
- return;
- }
- }
- }
- }
-
- @Override
- public void start(BundleContext context) throws Exception
- {
- super.start(context);
- plugin = this;
-
- featureWorkingSet = createWorkingSet("Features");
- addWorkingSetDefinition("Infrastructure", "org.eclipse.emf.cdo.releng.promotion", "com.ibm.db2.jcc",
- "org.eclipse.emf.cdo.releng.doc.supplemental", "cdo.www", "org.eclipse.simrel.build");
- addWorkingSetDefinition("Releng", "org.eclipse.emf.cdo.releng");
- addWorkingSetDefinition("CDO Dawn", "org.eclipse.emf.cdo.dawn");
- addWorkingSetDefinition("CDO Tests", "org.eclipse.emf.cdo.tests");
- addWorkingSetDefinition("CDO Examples", "org.eclipse.emf.cdo.examples", "org.gastro");
- addWorkingSetDefinition("CDO", "org.eclipse.emf.cdo");
- addWorkingSetDefinition("Net4j DB", "org.eclipse.net4j.db");
- addWorkingSetDefinition("Net4j Examples", "org.eclipse.net4j.examples", "org.eclipse.net4j.buddies",
- "org.eclipse.net4j.jms");
- addWorkingSetDefinition("Net4j", "org.eclipse.net4j");
-
- updateProjects();
- WORKSPACE.addResourceChangeListener(this);
- }
-
- @Override
- public void stop(BundleContext context) throws Exception
- {
- WORKSPACE.removeResourceChangeListener(this);
- plugin = null;
- super.stop(context);
- }
-
- private IWorkingSet createWorkingSet(String name)
- {
- IWorkingSet workingSet = MANAGER.getWorkingSet(name);
- if (workingSet == null)
- {
- workingSet = MANAGER.createWorkingSet(name, new IAdaptable[0]);
- workingSet.setLabel(name);
- workingSet.setId(WORKING_SET_PAGE);
-
- MANAGER.addWorkingSet(workingSet);
- }
-
- return workingSet;
- }
-
- private void addWorkingSetDefinition(String name, String... prefixes)
- {
- WorkingSetDefinition workingSetDefinition = new WorkingSetDefinition(name, prefixes);
- workingSetDefinitions.add(workingSetDefinition);
-
- createWorkingSet(name);
- }
-
- private void updateProjects()
- {
- List<IProject> features = new ArrayList<IProject>();
- Map<String, List<IProject>> projects = new HashMap<String, List<IProject>>();
-
- for (IProject project : WORKSPACE.getRoot().getProjects())
- {
- if (project.getName().endsWith("-feature"))
- {
- features.add(project);
- }
- else
- {
- updateProject(projects, project);
- }
- }
-
- updateWorkingSet(featureWorkingSet, features);
-
- for (Entry<String, List<IProject>> entry : projects.entrySet())
- {
- IWorkingSet workingSet = MANAGER.getWorkingSet(entry.getKey());
- if (workingSet != null)
- {
- updateWorkingSet(workingSet, entry.getValue());
- }
- }
- }
-
- private void updateProject(Map<String, List<IProject>> projects, IProject project)
- {
- for (WorkingSetDefinition workingSetDefinition : workingSetDefinitions)
- {
- for (String prefix : workingSetDefinition.getPrefixes())
- {
- if (project.getName().startsWith(prefix))
- {
- String name = workingSetDefinition.getName();
- List<IProject> list = projects.get(name);
- if (list == null)
- {
- list = new ArrayList<IProject>();
- projects.put(name, list);
- }
-
- list.add(project);
- return;
- }
- }
- }
- }
-
- private void updateWorkingSet(IWorkingSet workingSet, List<IProject> projects)
- {
- workingSet.setElements(projects.toArray(new IProject[projects.size()]));
- }
-
- public static Activator getDefault()
- {
- return plugin;
- }
-
- /**
- * @author Eike Stepper
- */
- private static final class WorkingSetDefinition
- {
- private final String name;
-
- private final String[] prefixes;
-
- public WorkingSetDefinition(String name, String[] prefixes)
- {
- this.name = name;
- this.prefixes = prefixes;
- }
-
- public String getName()
- {
- return name;
- }
-
- public String[] getPrefixes()
- {
- return prefixes;
- }
- }
-}
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/NamePredicate.java b/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/NamePredicate.java
new file mode 100644
index 0000000000..daabac1170
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/NamePredicate.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2013 Eike Stepper (Berlin, Germany) and others.
+ * 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
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.releng.workingsets;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Name Predicate</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.emf.cdo.releng.workingsets.NamePredicate#getPattern <em>Pattern</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.emf.cdo.releng.workingsets.WorkingSetsPackage#getNamePredicate()
+ * @model
+ * @generated
+ */
+public interface NamePredicate extends Predicate
+{
+ /**
+ * Returns the value of the '<em><b>Pattern</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Pattern</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Pattern</em>' attribute.
+ * @see #setPattern(String)
+ * @see org.eclipse.emf.cdo.releng.workingsets.WorkingSetsPackage#getNamePredicate_Pattern()
+ * @model required="true"
+ * @generated
+ */
+ String getPattern();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.emf.cdo.releng.workingsets.NamePredicate#getPattern <em>Pattern</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Pattern</em>' attribute.
+ * @see #getPattern()
+ * @generated
+ */
+ void setPattern(String value);
+
+} // NamePredicate
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/Predicate.java b/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/Predicate.java
new file mode 100644
index 0000000000..a81f910094
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/Predicate.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2013 Eike Stepper (Berlin, Germany) and others.
+ * 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
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.releng.workingsets;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.core.resources.IProject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Predicate</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.emf.cdo.releng.workingsets.WorkingSetsPackage#getPredicate()
+ * @model interface="true" abstract="true"
+ * @generated
+ */
+public interface Predicate extends EObject
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model projectDataType="org.eclipse.emf.cdo.releng.workingsets.Project"
+ * @generated
+ */
+ boolean matches(IProject project);
+
+} // Predicate
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/WorkingSet.java b/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/WorkingSet.java
new file mode 100644
index 0000000000..615044bc6e
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/WorkingSet.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (c) 2013 Eike Stepper (Berlin, Germany) and others.
+ * 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
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.releng.workingsets;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Working Set</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.emf.cdo.releng.workingsets.WorkingSet#getPredicates <em>Predicates</em>}</li>
+ * <li>{@link org.eclipse.emf.cdo.releng.workingsets.WorkingSet#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.emf.cdo.releng.workingsets.WorkingSetsPackage#getWorkingSet()
+ * @model
+ * @generated
+ */
+public interface WorkingSet extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Predicates</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.emf.cdo.releng.workingsets.Predicate}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Predicates</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Predicates</em>' containment reference list.
+ * @see org.eclipse.emf.cdo.releng.workingsets.WorkingSetsPackage#getWorkingSet_Predicates()
+ * @model containment="true"
+ * @generated
+ */
+ EList<Predicate> getPredicates();
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.emf.cdo.releng.workingsets.WorkingSetsPackage#getWorkingSet_Name()
+ * @model required="true"
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.emf.cdo.releng.workingsets.WorkingSet#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+} // WorkingSet
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/WorkingSetGroup.java b/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/WorkingSetGroup.java
new file mode 100644
index 0000000000..715f2ce9ec
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/WorkingSetGroup.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2013 Eike Stepper (Berlin, Germany) and others.
+ * 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
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.releng.workingsets;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Working Set Group</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.emf.cdo.releng.workingsets.WorkingSetGroup#getWorkingSets <em>Working Sets</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.emf.cdo.releng.workingsets.WorkingSetsPackage#getWorkingSetGroup()
+ * @model
+ * @generated
+ */
+public interface WorkingSetGroup extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Working Sets</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.emf.cdo.releng.workingsets.WorkingSet}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Working Sets</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Working Sets</em>' containment reference list.
+ * @see org.eclipse.emf.cdo.releng.workingsets.WorkingSetsPackage#getWorkingSetGroup_WorkingSets()
+ * @model containment="true" keys="name"
+ * @generated
+ */
+ EList<WorkingSet> getWorkingSets();
+
+} // WorkingSetGroup
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/WorkingSetsFactory.java b/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/WorkingSetsFactory.java
new file mode 100644
index 0000000000..8bf4547757
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/WorkingSetsFactory.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) 2013 Eike Stepper (Berlin, Germany) and others.
+ * 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
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.releng.workingsets;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.cdo.releng.workingsets.WorkingSetsPackage
+ * @generated
+ */
+public interface WorkingSetsFactory extends EFactory
+{
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ WorkingSetsFactory eINSTANCE = org.eclipse.emf.cdo.releng.workingsets.impl.WorkingSetsFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Working Set</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Working Set</em>'.
+ * @generated
+ */
+ WorkingSet createWorkingSet();
+
+ /**
+ * Returns a new object of class '<em>Working Set Group</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Working Set Group</em>'.
+ * @generated
+ */
+ WorkingSetGroup createWorkingSetGroup();
+
+ /**
+ * Returns a new object of class '<em>Name Predicate</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Name Predicate</em>'.
+ * @generated
+ */
+ NamePredicate createNamePredicate();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ WorkingSetsPackage getWorkingSetsPackage();
+
+} // WorkingSetsFactory
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/WorkingSetsPackage.java b/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/WorkingSetsPackage.java
new file mode 100644
index 0000000000..4450bdf9d2
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/WorkingSetsPackage.java
@@ -0,0 +1,467 @@
+/*
+ * Copyright (c) 2013 Eike Stepper (Berlin, Germany) and others.
+ * 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
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.releng.workingsets;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.cdo.releng.workingsets.WorkingSetsFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface WorkingSetsPackage extends EPackage
+{
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "workingsets";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http://www.eclipse.org/CDO/releng/workingsets/1.0";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "workingsets";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ WorkingSetsPackage eINSTANCE = org.eclipse.emf.cdo.releng.workingsets.impl.WorkingSetsPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.emf.cdo.releng.workingsets.impl.WorkingSetImpl <em>Working Set</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.cdo.releng.workingsets.impl.WorkingSetImpl
+ * @see org.eclipse.emf.cdo.releng.workingsets.impl.WorkingSetsPackageImpl#getWorkingSet()
+ * @generated
+ */
+ int WORKING_SET = 0;
+
+ /**
+ * The feature id for the '<em><b>Predicates</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int WORKING_SET__PREDICATES = 0;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int WORKING_SET__NAME = 1;
+
+ /**
+ * The number of structural features of the '<em>Working Set</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int WORKING_SET_FEATURE_COUNT = 2;
+
+ /**
+ * The number of operations of the '<em>Working Set</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int WORKING_SET_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.emf.cdo.releng.workingsets.impl.WorkingSetGroupImpl <em>Working Set Group</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.cdo.releng.workingsets.impl.WorkingSetGroupImpl
+ * @see org.eclipse.emf.cdo.releng.workingsets.impl.WorkingSetsPackageImpl#getWorkingSetGroup()
+ * @generated
+ */
+ int WORKING_SET_GROUP = 1;
+
+ /**
+ * The feature id for the '<em><b>Working Sets</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int WORKING_SET_GROUP__WORKING_SETS = 0;
+
+ /**
+ * The number of structural features of the '<em>Working Set Group</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int WORKING_SET_GROUP_FEATURE_COUNT = 1;
+
+ /**
+ * The number of operations of the '<em>Working Set Group</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int WORKING_SET_GROUP_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.emf.cdo.releng.workingsets.Predicate <em>Predicate</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.cdo.releng.workingsets.Predicate
+ * @see org.eclipse.emf.cdo.releng.workingsets.impl.WorkingSetsPackageImpl#getPredicate()
+ * @generated
+ */
+ int PREDICATE = 2;
+
+ /**
+ * The number of structural features of the '<em>Predicate</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PREDICATE_FEATURE_COUNT = 0;
+
+ /**
+ * The operation id for the '<em>Matches</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PREDICATE___MATCHES__IPROJECT = 0;
+
+ /**
+ * The number of operations of the '<em>Predicate</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PREDICATE_OPERATION_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.emf.cdo.releng.workingsets.impl.NamePredicateImpl <em>Name Predicate</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.cdo.releng.workingsets.impl.NamePredicateImpl
+ * @see org.eclipse.emf.cdo.releng.workingsets.impl.WorkingSetsPackageImpl#getNamePredicate()
+ * @generated
+ */
+ int NAME_PREDICATE = 3;
+
+ /**
+ * The feature id for the '<em><b>Pattern</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NAME_PREDICATE__PATTERN = PREDICATE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Name Predicate</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NAME_PREDICATE_FEATURE_COUNT = PREDICATE_FEATURE_COUNT + 1;
+
+ /**
+ * The operation id for the '<em>Matches</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NAME_PREDICATE___MATCHES__IPROJECT = PREDICATE___MATCHES__IPROJECT;
+
+ /**
+ * The number of operations of the '<em>Name Predicate</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NAME_PREDICATE_OPERATION_COUNT = PREDICATE_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '<em>Project</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.core.resources.IProject
+ * @see org.eclipse.emf.cdo.releng.workingsets.impl.WorkingSetsPackageImpl#getProject()
+ * @generated
+ */
+ int PROJECT = 4;
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.emf.cdo.releng.workingsets.WorkingSet <em>Working Set</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Working Set</em>'.
+ * @see org.eclipse.emf.cdo.releng.workingsets.WorkingSet
+ * @generated
+ */
+ EClass getWorkingSet();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.emf.cdo.releng.workingsets.WorkingSet#getPredicates <em>Predicates</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Predicates</em>'.
+ * @see org.eclipse.emf.cdo.releng.workingsets.WorkingSet#getPredicates()
+ * @see #getWorkingSet()
+ * @generated
+ */
+ EReference getWorkingSet_Predicates();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.emf.cdo.releng.workingsets.WorkingSet#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.emf.cdo.releng.workingsets.WorkingSet#getName()
+ * @see #getWorkingSet()
+ * @generated
+ */
+ EAttribute getWorkingSet_Name();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.emf.cdo.releng.workingsets.WorkingSetGroup <em>Working Set Group</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Working Set Group</em>'.
+ * @see org.eclipse.emf.cdo.releng.workingsets.WorkingSetGroup
+ * @generated
+ */
+ EClass getWorkingSetGroup();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.emf.cdo.releng.workingsets.WorkingSetGroup#getWorkingSets <em>Working Sets</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Working Sets</em>'.
+ * @see org.eclipse.emf.cdo.releng.workingsets.WorkingSetGroup#getWorkingSets()
+ * @see #getWorkingSetGroup()
+ * @generated
+ */
+ EReference getWorkingSetGroup_WorkingSets();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.emf.cdo.releng.workingsets.Predicate <em>Predicate</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Predicate</em>'.
+ * @see org.eclipse.emf.cdo.releng.workingsets.Predicate
+ * @generated
+ */
+ EClass getPredicate();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.emf.cdo.releng.workingsets.Predicate#matches(org.eclipse.core.resources.IProject) <em>Matches</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Matches</em>' operation.
+ * @see org.eclipse.emf.cdo.releng.workingsets.Predicate#matches(org.eclipse.core.resources.IProject)
+ * @generated
+ */
+ EOperation getPredicate__Matches__IProject();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.emf.cdo.releng.workingsets.NamePredicate <em>Name Predicate</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Name Predicate</em>'.
+ * @see org.eclipse.emf.cdo.releng.workingsets.NamePredicate
+ * @generated
+ */
+ EClass getNamePredicate();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.emf.cdo.releng.workingsets.NamePredicate#getPattern <em>Pattern</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Pattern</em>'.
+ * @see org.eclipse.emf.cdo.releng.workingsets.NamePredicate#getPattern()
+ * @see #getNamePredicate()
+ * @generated
+ */
+ EAttribute getNamePredicate_Pattern();
+
+ /**
+ * Returns the meta object for data type '{@link org.eclipse.core.resources.IProject <em>Project</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Project</em>'.
+ * @see org.eclipse.core.resources.IProject
+ * @model instanceClass="org.eclipse.core.resources.IProject" serializeable="false"
+ * @generated
+ */
+ EDataType getProject();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ WorkingSetsFactory getWorkingSetsFactory();
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ interface Literals
+ {
+ /**
+ * The meta object literal for the '{@link org.eclipse.emf.cdo.releng.workingsets.impl.WorkingSetImpl <em>Working Set</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.cdo.releng.workingsets.impl.WorkingSetImpl
+ * @see org.eclipse.emf.cdo.releng.workingsets.impl.WorkingSetsPackageImpl#getWorkingSet()
+ * @generated
+ */
+ EClass WORKING_SET = eINSTANCE.getWorkingSet();
+
+ /**
+ * The meta object literal for the '<em><b>Predicates</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference WORKING_SET__PREDICATES = eINSTANCE.getWorkingSet_Predicates();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute WORKING_SET__NAME = eINSTANCE.getWorkingSet_Name();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.emf.cdo.releng.workingsets.impl.WorkingSetGroupImpl <em>Working Set Group</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.cdo.releng.workingsets.impl.WorkingSetGroupImpl
+ * @see org.eclipse.emf.cdo.releng.workingsets.impl.WorkingSetsPackageImpl#getWorkingSetGroup()
+ * @generated
+ */
+ EClass WORKING_SET_GROUP = eINSTANCE.getWorkingSetGroup();
+
+ /**
+ * The meta object literal for the '<em><b>Working Sets</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference WORKING_SET_GROUP__WORKING_SETS = eINSTANCE.getWorkingSetGroup_WorkingSets();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.emf.cdo.releng.workingsets.Predicate <em>Predicate</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.cdo.releng.workingsets.Predicate
+ * @see org.eclipse.emf.cdo.releng.workingsets.impl.WorkingSetsPackageImpl#getPredicate()
+ * @generated
+ */
+ EClass PREDICATE = eINSTANCE.getPredicate();
+
+ /**
+ * The meta object literal for the '<em><b>Matches</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation PREDICATE___MATCHES__IPROJECT = eINSTANCE.getPredicate__Matches__IProject();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.emf.cdo.releng.workingsets.impl.NamePredicateImpl <em>Name Predicate</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.cdo.releng.workingsets.impl.NamePredicateImpl
+ * @see org.eclipse.emf.cdo.releng.workingsets.impl.WorkingSetsPackageImpl#getNamePredicate()
+ * @generated
+ */
+ EClass NAME_PREDICATE = eINSTANCE.getNamePredicate();
+
+ /**
+ * The meta object literal for the '<em><b>Pattern</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute NAME_PREDICATE__PATTERN = eINSTANCE.getNamePredicate_Pattern();
+
+ /**
+ * The meta object literal for the '<em>Project</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.core.resources.IProject
+ * @see org.eclipse.emf.cdo.releng.workingsets.impl.WorkingSetsPackageImpl#getProject()
+ * @generated
+ */
+ EDataType PROJECT = eINSTANCE.getProject();
+
+ }
+
+} // WorkingSetsPackage
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/impl/NamePredicateImpl.java b/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/impl/NamePredicateImpl.java
new file mode 100644
index 0000000000..b0fe91c634
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/impl/NamePredicateImpl.java
@@ -0,0 +1,216 @@
+/*
+ * Copyright (c) 2013 Eike Stepper (Berlin, Germany) and others.
+ * 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
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.releng.workingsets.impl;
+
+import org.eclipse.emf.cdo.releng.workingsets.NamePredicate;
+import org.eclipse.emf.cdo.releng.workingsets.WorkingSetsPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.core.resources.IProject;
+
+import java.lang.reflect.InvocationTargetException;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Name Predicate</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.emf.cdo.releng.workingsets.impl.NamePredicateImpl#getPattern <em>Pattern</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class NamePredicateImpl extends MinimalEObjectImpl.Container implements NamePredicate
+{
+ /**
+ * The default value of the '{@link #getPattern() <em>Pattern</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPattern()
+ * @generated
+ * @ordered
+ */
+ protected static final String PATTERN_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getPattern() <em>Pattern</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPattern()
+ * @generated
+ * @ordered
+ */
+ protected String pattern = PATTERN_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected NamePredicateImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return WorkingSetsPackage.Literals.NAME_PREDICATE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getPattern()
+ {
+ return pattern;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setPattern(String newPattern)
+ {
+ String oldPattern = pattern;
+ pattern = newPattern;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, WorkingSetsPackage.NAME_PREDICATE__PATTERN, oldPattern,
+ pattern));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public boolean matches(IProject project)
+ {
+ return pattern != null && project != null && project.getName().matches(pattern);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case WorkingSetsPackage.NAME_PREDICATE__PATTERN:
+ return getPattern();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case WorkingSetsPackage.NAME_PREDICATE__PATTERN:
+ setPattern((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case WorkingSetsPackage.NAME_PREDICATE__PATTERN:
+ setPattern(PATTERN_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case WorkingSetsPackage.NAME_PREDICATE__PATTERN:
+ return PATTERN_EDEFAULT == null ? pattern != null : !PATTERN_EDEFAULT.equals(pattern);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException
+ {
+ switch (operationID)
+ {
+ case WorkingSetsPackage.NAME_PREDICATE___MATCHES__IPROJECT:
+ return matches((IProject)arguments.get(0));
+ }
+ return super.eInvoke(operationID, arguments);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy())
+ return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (pattern: ");
+ result.append(pattern);
+ result.append(')');
+ return result.toString();
+ }
+
+} // NamePredicateImpl
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/impl/PreferencesURIHandlerImpl.java b/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/impl/PreferencesURIHandlerImpl.java
new file mode 100644
index 0000000000..2b6c795691
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/impl/PreferencesURIHandlerImpl.java
@@ -0,0 +1,140 @@
+/*
+ * Copyright (c) 2013 Eike Stepper (Berlin, Germany) and others.
+ * 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
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.releng.workingsets.impl;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.URIConverter;
+import org.eclipse.emf.ecore.resource.impl.URIHandlerImpl;
+
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+
+import org.osgi.service.prefs.BackingStoreException;
+import org.osgi.service.prefs.Preferences;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.Collections;
+import java.util.Map;
+
+/**
+ * @author Eike Stepper
+ */
+public class PreferencesURIHandlerImpl extends URIHandlerImpl
+{
+ private static final IEclipsePreferences ROOT = Platform.getPreferencesService().getRootNode();
+
+ @Override
+ public boolean canHandle(URI uri)
+ {
+ return "preference".equals(uri.scheme());
+ }
+
+ protected static class PreferenceAccessor
+ {
+ private final Preferences preferences;
+
+ private final String key;
+
+ public PreferenceAccessor(URI uri)
+ {
+ Preferences node = ROOT;
+ for (String name : uri.trimSegments(1).segments())
+ {
+ node = node.node(name);
+ }
+ key = uri.lastSegment();
+ preferences = node;
+ }
+
+ public String get()
+ {
+ return preferences.get(key, null);
+
+ }
+
+ public void put(String value) throws IOException
+ {
+ preferences.put(key, value);
+ flush();
+ }
+
+ public void remove() throws IOException
+ {
+ preferences.remove(key);
+ flush();
+ }
+
+ private void flush() throws IOException
+ {
+ try
+ {
+ preferences.flush();
+ }
+ catch (BackingStoreException ex)
+ {
+ throw new IOException(ex);
+ }
+ }
+ }
+
+ @Override
+ public OutputStream createOutputStream(URI uri, Map<?, ?> options) throws IOException
+ {
+ final PreferenceAccessor accessor = new PreferenceAccessor(uri.trimSegments(1));
+ return new ByteArrayOutputStream()
+ {
+ @Override
+ public void close() throws IOException
+ {
+ accessor.put(new String(toByteArray(), "UTF-8"));
+ }
+ };
+ }
+
+ @Override
+ public InputStream createInputStream(URI uri, Map<?, ?> options) throws IOException
+ {
+ URI preferencePath = uri.trimSegments(1);
+ String value = new PreferenceAccessor(preferencePath).get();
+ if (value == null)
+ {
+ throw new IOException("No preference value available for " + preferencePath);
+ }
+ return new URIConverter.ReadableInputStream(value);
+ }
+
+ @Override
+ public void delete(URI uri, Map<?, ?> options) throws IOException
+ {
+ new PreferenceAccessor(uri.trimSegments(1)).remove();
+ }
+
+ @Override
+ public boolean exists(URI uri, Map<?, ?> options)
+ {
+ return new PreferenceAccessor(uri.trimSegments(1)).get() != null;
+ }
+
+ @Override
+ public Map<String, ?> getAttributes(URI uri, Map<?, ?> options)
+ {
+ return Collections.emptyMap();
+ }
+
+ @Override
+ public void setAttributes(URI uri, Map<String, ?> attributes, Map<?, ?> options) throws IOException
+ {
+ // Do nothing.
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/impl/WorkingSetGroupImpl.java b/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/impl/WorkingSetGroupImpl.java
new file mode 100644
index 0000000000..2558a5ffa6
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/impl/WorkingSetGroupImpl.java
@@ -0,0 +1,172 @@
+/*
+ * Copyright (c) 2013 Eike Stepper (Berlin, Germany) and others.
+ * 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
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.releng.workingsets.impl;
+
+import org.eclipse.emf.cdo.releng.workingsets.WorkingSet;
+import org.eclipse.emf.cdo.releng.workingsets.WorkingSetGroup;
+import org.eclipse.emf.cdo.releng.workingsets.WorkingSetsPackage;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import java.util.Collection;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Working Set Group</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.emf.cdo.releng.workingsets.impl.WorkingSetGroupImpl#getWorkingSets <em>Working Sets</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class WorkingSetGroupImpl extends MinimalEObjectImpl.Container implements WorkingSetGroup
+{
+ /**
+ * The cached value of the '{@link #getWorkingSets() <em>Working Sets</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getWorkingSets()
+ * @generated
+ * @ordered
+ */
+ protected EList<WorkingSet> workingSets;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected WorkingSetGroupImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return WorkingSetsPackage.Literals.WORKING_SET_GROUP;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<WorkingSet> getWorkingSets()
+ {
+ if (workingSets == null)
+ {
+ workingSets = new EObjectContainmentEList<WorkingSet>(WorkingSet.class, this,
+ WorkingSetsPackage.WORKING_SET_GROUP__WORKING_SETS);
+ }
+ return workingSets;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case WorkingSetsPackage.WORKING_SET_GROUP__WORKING_SETS:
+ return ((InternalEList<?>)getWorkingSets()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case WorkingSetsPackage.WORKING_SET_GROUP__WORKING_SETS:
+ return getWorkingSets();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case WorkingSetsPackage.WORKING_SET_GROUP__WORKING_SETS:
+ getWorkingSets().clear();
+ getWorkingSets().addAll((Collection<? extends WorkingSet>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case WorkingSetsPackage.WORKING_SET_GROUP__WORKING_SETS:
+ getWorkingSets().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case WorkingSetsPackage.WORKING_SET_GROUP__WORKING_SETS:
+ return workingSets != null && !workingSets.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} // WorkingSetGroupImpl
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/impl/WorkingSetImpl.java b/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/impl/WorkingSetImpl.java
new file mode 100644
index 0000000000..2a489abc72
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/impl/WorkingSetImpl.java
@@ -0,0 +1,246 @@
+/*
+ * Copyright (c) 2013 Eike Stepper (Berlin, Germany) and others.
+ * 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
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.releng.workingsets.impl;
+
+import org.eclipse.emf.cdo.releng.workingsets.Predicate;
+import org.eclipse.emf.cdo.releng.workingsets.WorkingSet;
+import org.eclipse.emf.cdo.releng.workingsets.WorkingSetsPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import java.util.Collection;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Working Set</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.emf.cdo.releng.workingsets.impl.WorkingSetImpl#getPredicates <em>Predicates</em>}</li>
+ * <li>{@link org.eclipse.emf.cdo.releng.workingsets.impl.WorkingSetImpl#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class WorkingSetImpl extends MinimalEObjectImpl.Container implements WorkingSet
+{
+ /**
+ * The cached value of the '{@link #getPredicates() <em>Predicates</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPredicates()
+ * @generated
+ * @ordered
+ */
+ protected EList<Predicate> predicates;
+
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected WorkingSetImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return WorkingSetsPackage.Literals.WORKING_SET;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Predicate> getPredicates()
+ {
+ if (predicates == null)
+ {
+ predicates = new EObjectContainmentEList<Predicate>(Predicate.class, this,
+ WorkingSetsPackage.WORKING_SET__PREDICATES);
+ }
+ return predicates;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName)
+ {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, WorkingSetsPackage.WORKING_SET__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case WorkingSetsPackage.WORKING_SET__PREDICATES:
+ return ((InternalEList<?>)getPredicates()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case WorkingSetsPackage.WORKING_SET__PREDICATES:
+ return getPredicates();
+ case WorkingSetsPackage.WORKING_SET__NAME:
+ return getName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case WorkingSetsPackage.WORKING_SET__PREDICATES:
+ getPredicates().clear();
+ getPredicates().addAll((Collection<? extends Predicate>)newValue);
+ return;
+ case WorkingSetsPackage.WORKING_SET__NAME:
+ setName((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case WorkingSetsPackage.WORKING_SET__PREDICATES:
+ getPredicates().clear();
+ return;
+ case WorkingSetsPackage.WORKING_SET__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case WorkingSetsPackage.WORKING_SET__PREDICATES:
+ return predicates != null && !predicates.isEmpty();
+ case WorkingSetsPackage.WORKING_SET__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy())
+ return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} // WorkingSetImpl
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/impl/WorkingSetsFactoryImpl.java b/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/impl/WorkingSetsFactoryImpl.java
new file mode 100644
index 0000000000..eaa1411f84
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/impl/WorkingSetsFactoryImpl.java
@@ -0,0 +1,174 @@
+/*
+ * Copyright (c) 2013 Eike Stepper (Berlin, Germany) and others.
+ * 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
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.releng.workingsets.impl;
+
+import org.eclipse.emf.cdo.releng.workingsets.NamePredicate;
+import org.eclipse.emf.cdo.releng.workingsets.WorkingSet;
+import org.eclipse.emf.cdo.releng.workingsets.WorkingSetGroup;
+import org.eclipse.emf.cdo.releng.workingsets.WorkingSetsFactory;
+import org.eclipse.emf.cdo.releng.workingsets.WorkingSetsPackage;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class WorkingSetsFactoryImpl extends EFactoryImpl implements WorkingSetsFactory
+{
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static WorkingSetsFactory init()
+ {
+ try
+ {
+ WorkingSetsFactory theWorkingSetsFactory = (WorkingSetsFactory)EPackage.Registry.INSTANCE
+ .getEFactory(WorkingSetsPackage.eNS_URI);
+ if (theWorkingSetsFactory != null)
+ {
+ return theWorkingSetsFactory;
+ }
+ }
+ catch (Exception exception)
+ {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new WorkingSetsFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public WorkingSetsFactoryImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass)
+ {
+ switch (eClass.getClassifierID())
+ {
+ case WorkingSetsPackage.WORKING_SET:
+ return createWorkingSet();
+ case WorkingSetsPackage.WORKING_SET_GROUP:
+ return createWorkingSetGroup();
+ case WorkingSetsPackage.NAME_PREDICATE:
+ return createNamePredicate();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object createFromString(EDataType eDataType, String initialValue)
+ {
+ switch (eDataType.getClassifierID())
+ {
+ default:
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String convertToString(EDataType eDataType, Object instanceValue)
+ {
+ switch (eDataType.getClassifierID())
+ {
+ default:
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public WorkingSet createWorkingSet()
+ {
+ WorkingSetImpl workingSet = new WorkingSetImpl();
+ return workingSet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public WorkingSetGroup createWorkingSetGroup()
+ {
+ WorkingSetGroupImpl workingSetGroup = new WorkingSetGroupImpl();
+ return workingSetGroup;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NamePredicate createNamePredicate()
+ {
+ NamePredicateImpl namePredicate = new NamePredicateImpl();
+ return namePredicate;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public WorkingSetsPackage getWorkingSetsPackage()
+ {
+ return (WorkingSetsPackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static WorkingSetsPackage getPackage()
+ {
+ return WorkingSetsPackage.eINSTANCE;
+ }
+
+} // WorkingSetsFactoryImpl
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/impl/WorkingSetsPackageImpl.java b/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/impl/WorkingSetsPackageImpl.java
new file mode 100644
index 0000000000..1fbf3786bf
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/impl/WorkingSetsPackageImpl.java
@@ -0,0 +1,351 @@
+/*
+ * Copyright (c) 2013 Eike Stepper (Berlin, Germany) and others.
+ * 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
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.releng.workingsets.impl;
+
+import org.eclipse.emf.cdo.releng.workingsets.NamePredicate;
+import org.eclipse.emf.cdo.releng.workingsets.Predicate;
+import org.eclipse.emf.cdo.releng.workingsets.WorkingSet;
+import org.eclipse.emf.cdo.releng.workingsets.WorkingSetGroup;
+import org.eclipse.emf.cdo.releng.workingsets.WorkingSetsFactory;
+import org.eclipse.emf.cdo.releng.workingsets.WorkingSetsPackage;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.core.resources.IProject;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class WorkingSetsPackageImpl extends EPackageImpl implements WorkingSetsPackage
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass workingSetEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass workingSetGroupEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass predicateEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass namePredicateEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType projectEDataType = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.eclipse.emf.cdo.releng.workingsets.WorkingSetsPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private WorkingSetsPackageImpl()
+ {
+ super(eNS_URI, WorkingSetsFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+ *
+ * <p>This method is used to initialize {@link WorkingSetsPackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static WorkingSetsPackage init()
+ {
+ if (isInited)
+ return (WorkingSetsPackage)EPackage.Registry.INSTANCE.getEPackage(WorkingSetsPackage.eNS_URI);
+
+ // Obtain or create and register package
+ WorkingSetsPackageImpl theWorkingSetsPackage = (WorkingSetsPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof WorkingSetsPackageImpl ? EPackage.Registry.INSTANCE
+ .get(eNS_URI) : new WorkingSetsPackageImpl());
+
+ isInited = true;
+
+ // Create package meta-data objects
+ theWorkingSetsPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theWorkingSetsPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theWorkingSetsPackage.freeze();
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(WorkingSetsPackage.eNS_URI, theWorkingSetsPackage);
+ return theWorkingSetsPackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getWorkingSet()
+ {
+ return workingSetEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getWorkingSet_Predicates()
+ {
+ return (EReference)workingSetEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getWorkingSet_Name()
+ {
+ return (EAttribute)workingSetEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getWorkingSetGroup()
+ {
+ return workingSetGroupEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getWorkingSetGroup_WorkingSets()
+ {
+ return (EReference)workingSetGroupEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getPredicate()
+ {
+ return predicateEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getPredicate__Matches__IProject()
+ {
+ return predicateEClass.getEOperations().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getNamePredicate()
+ {
+ return namePredicateEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getNamePredicate_Pattern()
+ {
+ return (EAttribute)namePredicateEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EDataType getProject()
+ {
+ return projectEDataType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public WorkingSetsFactory getWorkingSetsFactory()
+ {
+ return (WorkingSetsFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents()
+ {
+ if (isCreated)
+ return;
+ isCreated = true;
+
+ // Create classes and their features
+ workingSetEClass = createEClass(WORKING_SET);
+ createEReference(workingSetEClass, WORKING_SET__PREDICATES);
+ createEAttribute(workingSetEClass, WORKING_SET__NAME);
+
+ workingSetGroupEClass = createEClass(WORKING_SET_GROUP);
+ createEReference(workingSetGroupEClass, WORKING_SET_GROUP__WORKING_SETS);
+
+ predicateEClass = createEClass(PREDICATE);
+ createEOperation(predicateEClass, PREDICATE___MATCHES__IPROJECT);
+
+ namePredicateEClass = createEClass(NAME_PREDICATE);
+ createEAttribute(namePredicateEClass, NAME_PREDICATE__PATTERN);
+
+ // Create data types
+ projectEDataType = createEDataType(PROJECT);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents()
+ {
+ if (isInitialized)
+ return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ namePredicateEClass.getESuperTypes().add(this.getPredicate());
+
+ // Initialize classes, features, and operations; add parameters
+ initEClass(workingSetEClass, WorkingSet.class, "WorkingSet", !IS_ABSTRACT, !IS_INTERFACE,
+ IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getWorkingSet_Predicates(), this.getPredicate(), null, "predicates", null, 0, -1, WorkingSet.class,
+ !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE,
+ !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getWorkingSet_Name(), ecorePackage.getEString(), "name", null, 1, 1, WorkingSet.class,
+ !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(workingSetGroupEClass, WorkingSetGroup.class, "WorkingSetGroup", !IS_ABSTRACT, !IS_INTERFACE,
+ IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getWorkingSetGroup_WorkingSets(), this.getWorkingSet(), null, "workingSets", null, 0, -1,
+ WorkingSetGroup.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+ !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ getWorkingSetGroup_WorkingSets().getEKeys().add(this.getWorkingSet_Name());
+
+ initEClass(predicateEClass, Predicate.class, "Predicate", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ EOperation op = initEOperation(getPredicate__Matches__IProject(), ecorePackage.getEBoolean(), "matches", 0, 1,
+ IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, this.getProject(), "project", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(namePredicateEClass, NamePredicate.class, "NamePredicate", !IS_ABSTRACT, !IS_INTERFACE,
+ IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getNamePredicate_Pattern(), ecorePackage.getEString(), "pattern", null, 1, 1, NamePredicate.class,
+ !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ // Initialize data types
+ initEDataType(projectEDataType, IProject.class, "Project", !IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+} // WorkingSetsPackageImpl
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/util/WorkingSetsAdapterFactory.java b/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/util/WorkingSetsAdapterFactory.java
new file mode 100644
index 0000000000..3a82879a1c
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/util/WorkingSetsAdapterFactory.java
@@ -0,0 +1,203 @@
+/*
+ * Copyright (c) 2013 Eike Stepper (Berlin, Germany) and others.
+ * 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
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.releng.workingsets.util;
+
+import org.eclipse.emf.cdo.releng.workingsets.NamePredicate;
+import org.eclipse.emf.cdo.releng.workingsets.Predicate;
+import org.eclipse.emf.cdo.releng.workingsets.WorkingSet;
+import org.eclipse.emf.cdo.releng.workingsets.WorkingSetGroup;
+import org.eclipse.emf.cdo.releng.workingsets.WorkingSetsPackage;
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.cdo.releng.workingsets.WorkingSetsPackage
+ * @generated
+ */
+public class WorkingSetsAdapterFactory extends AdapterFactoryImpl
+{
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static WorkingSetsPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public WorkingSetsAdapterFactory()
+ {
+ if (modelPackage == null)
+ {
+ modelPackage = WorkingSetsPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ * <!-- begin-user-doc -->
+ * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+ * <!-- end-user-doc -->
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object)
+ {
+ if (object == modelPackage)
+ {
+ return true;
+ }
+ if (object instanceof EObject)
+ {
+ return ((EObject)object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the <code>createXXX</code> methods.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected WorkingSetsSwitch<Adapter> modelSwitch = new WorkingSetsSwitch<Adapter>()
+ {
+ @Override
+ public Adapter caseWorkingSet(WorkingSet object)
+ {
+ return createWorkingSetAdapter();
+ }
+
+ @Override
+ public Adapter caseWorkingSetGroup(WorkingSetGroup object)
+ {
+ return createWorkingSetGroupAdapter();
+ }
+
+ @Override
+ public Adapter casePredicate(Predicate object)
+ {
+ return createPredicateAdapter();
+ }
+
+ @Override
+ public Adapter caseNamePredicate(NamePredicate object)
+ {
+ return createNamePredicateAdapter();
+ }
+
+ @Override
+ public Adapter defaultCase(EObject object)
+ {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the <code>target</code>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param target the object to adapt.
+ * @return the adapter for the <code>target</code>.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target)
+ {
+ return modelSwitch.doSwitch((EObject)target);
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.emf.cdo.releng.workingsets.WorkingSet <em>Working Set</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.emf.cdo.releng.workingsets.WorkingSet
+ * @generated
+ */
+ public Adapter createWorkingSetAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.emf.cdo.releng.workingsets.WorkingSetGroup <em>Working Set Group</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.emf.cdo.releng.workingsets.WorkingSetGroup
+ * @generated
+ */
+ public Adapter createWorkingSetGroupAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.emf.cdo.releng.workingsets.Predicate <em>Predicate</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.emf.cdo.releng.workingsets.Predicate
+ * @generated
+ */
+ public Adapter createPredicateAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.emf.cdo.releng.workingsets.NamePredicate <em>Name Predicate</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.emf.cdo.releng.workingsets.NamePredicate
+ * @generated
+ */
+ public Adapter createNamePredicateAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter()
+ {
+ return null;
+ }
+
+} // WorkingSetsAdapterFactory
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/util/WorkingSetsSwitch.java b/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/util/WorkingSetsSwitch.java
new file mode 100644
index 0000000000..0001938b45
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/util/WorkingSetsSwitch.java
@@ -0,0 +1,205 @@
+/*
+ * Copyright (c) 2013 Eike Stepper (Berlin, Germany) and others.
+ * 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
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.releng.workingsets.util;
+
+import org.eclipse.emf.cdo.releng.workingsets.NamePredicate;
+import org.eclipse.emf.cdo.releng.workingsets.Predicate;
+import org.eclipse.emf.cdo.releng.workingsets.WorkingSet;
+import org.eclipse.emf.cdo.releng.workingsets.WorkingSetGroup;
+import org.eclipse.emf.cdo.releng.workingsets.WorkingSetsPackage;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.util.Switch;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.cdo.releng.workingsets.WorkingSetsPackage
+ * @generated
+ */
+public class WorkingSetsSwitch<T> extends Switch<T>
+{
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static WorkingSetsPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public WorkingSetsSwitch()
+ {
+ if (modelPackage == null)
+ {
+ modelPackage = WorkingSetsPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Checks whether this is a switch for the given package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @parameter ePackage the package in question.
+ * @return whether this is a switch for the given package.
+ * @generated
+ */
+ @Override
+ protected boolean isSwitchFor(EPackage ePackage)
+ {
+ return ePackage == modelPackage;
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ @Override
+ protected T doSwitch(int classifierID, EObject theEObject)
+ {
+ switch (classifierID)
+ {
+ case WorkingSetsPackage.WORKING_SET:
+ {
+ WorkingSet workingSet = (WorkingSet)theEObject;
+ T result = caseWorkingSet(workingSet);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case WorkingSetsPackage.WORKING_SET_GROUP:
+ {
+ WorkingSetGroup workingSetGroup = (WorkingSetGroup)theEObject;
+ T result = caseWorkingSetGroup(workingSetGroup);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case WorkingSetsPackage.PREDICATE:
+ {
+ Predicate predicate = (Predicate)theEObject;
+ T result = casePredicate(predicate);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case WorkingSetsPackage.NAME_PREDICATE:
+ {
+ NamePredicate namePredicate = (NamePredicate)theEObject;
+ T result = caseNamePredicate(namePredicate);
+ if (result == null)
+ result = casePredicate(namePredicate);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ default:
+ return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Working Set</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Working Set</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseWorkingSet(WorkingSet object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Working Set Group</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Working Set Group</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseWorkingSetGroup(WorkingSetGroup object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Predicate</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Predicate</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T casePredicate(Predicate object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Name Predicate</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Name Predicate</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseNamePredicate(NamePredicate object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch, but this is the last case anyway.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ @Override
+ public T defaultCase(EObject object)
+ {
+ return null;
+ }
+
+} // WorkingSetsSwitch
diff --git a/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/util/WorkingSetsUtil.java b/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/util/WorkingSetsUtil.java
new file mode 100644
index 0000000000..273dbcdec8
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.releng.workingsets/src/org/eclipse/emf/cdo/releng/workingsets/util/WorkingSetsUtil.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2013 Eike Stepper (Berlin, Germany) and others.
+ * 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
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.releng.workingsets.util;
+
+import org.eclipse.emf.cdo.releng.workingsets.WorkingSetGroup;
+import org.eclipse.emf.cdo.releng.workingsets.impl.PreferencesURIHandlerImpl;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+
+/**
+ * @author Eike Stepper
+ */
+public final class WorkingSetsUtil
+{
+ private static final String DEFAULT_WORKING_SET_GROUP_PREFERENCE_CONTENT = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<workingsets:WorkingSetGroup xmi:version=\"2.0\" xmlns:xmi=\"http://www.omg.org/XMI\" xmlns:workingsets=\"http://www.eclipse.org/CDO/releng/workingsets/1.0\"/>\n";
+
+ public static final String WORKING_SET_GROUP_PREFERENCE_KEY = "working.set.group";
+
+ public static final URI WORKING_SET_GROUP_PREFERENCE_URI = URI
+ .createURI("preference:/instance/org.eclipse.emf.cdo.releng.workingsets/" + WORKING_SET_GROUP_PREFERENCE_KEY
+ + "/");
+
+ public static final URI WORKING_SET_GROUP_PREFERENCE_RESOURCE_URI = WORKING_SET_GROUP_PREFERENCE_URI.trimSegments(1)
+ .appendSegment("Preferences.workingsets");
+
+ public static final IEclipsePreferences WORKING_SET_GROUP_PREFERENCES;
+
+ public static WorkingSetGroup getWorkingSetGroup()
+ {
+ ResourceSet resourceSet = new ResourceSetImpl();
+ resourceSet.getURIConverter().getURIHandlers().add(0, new PreferencesURIHandlerImpl());
+
+ Resource resource = resourceSet.getResource(WORKING_SET_GROUP_PREFERENCE_RESOURCE_URI, true);
+ return (WorkingSetGroup)resource.getContents().get(0);
+ }
+
+ static
+ {
+ WORKING_SET_GROUP_PREFERENCES = (IEclipsePreferences)Platform.getPreferencesService().getRootNode()
+ .node(WORKING_SET_GROUP_PREFERENCE_URI.segment(0)).node(WORKING_SET_GROUP_PREFERENCE_URI.segment(1));
+
+ String value = WORKING_SET_GROUP_PREFERENCES.get(WorkingSetsUtil.WORKING_SET_GROUP_PREFERENCE_KEY, null);
+ if (value == null)
+ {
+ WORKING_SET_GROUP_PREFERENCES.put(WorkingSetsUtil.WORKING_SET_GROUP_PREFERENCE_KEY,
+ WorkingSetsUtil.DEFAULT_WORKING_SET_GROUP_PREFERENCE_CONTENT);
+ }
+ }
+}

Back to the top