Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui')
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/.classpath7
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/.options3
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/.project44
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/.settings/org.eclipse.core.resources.prefs3
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/.settings/org.eclipse.jdt.core.prefs382
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/.settings/org.eclipse.jdt.ui.prefs119
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/.settings/org.eclipse.ltk.core.refactoring.prefs3
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/.settings/org.eclipse.mylyn.tasks.ui.prefs4
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/.settings/org.eclipse.mylyn.team.ui.prefs3
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/.settings/org.eclipse.pde.api.tools.prefs94
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/.settings/org.eclipse.pde.prefs31
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/BuddiesClient1.launch471
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/BuddiesClient2.launch470
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/BuddiesClient3.launch470
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/META-INF/MANIFEST.MF27
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/about.html28
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/build.properties25
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/copyright.txt8
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/plugin.properties17
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/plugin.xml59
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/schema/facilityPaneCreators.exsd128
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/AbstractItemProvider.java237
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/BuddiesContentProvider.java41
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/BuddiesItemProvider.java49
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/ChatInstaller.java29
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/CollaborationsContentProvider.java41
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/CollaborationsItemProvider.java141
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/MembershipItemProvider.java49
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/actions/ConnectAction.java32
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/actions/DisconnectAction.java32
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/actions/FlashAction.java32
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/actions/ReconnectAction.java33
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/actions/StateAction.java190
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/bundle/OM.java59
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/dnd/BuddiesTransfer.java79
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/messages/Messages.java41
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/messages/messages.properties37
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/preferences/BuddiesPreferencePage.java87
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/BuddiesDragListener.java64
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/BuddiesDropAdapter.java56
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/BuddiesView.java63
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/CollaborationsPane.java334
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/CollaborationsView.java221
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/FacilityPane.java242
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/SessionManagerView.java153
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/ui/IFacilityPaneCreator.java28
46 files changed, 4766 insertions, 0 deletions
diff --git a/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/.classpath b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/.classpath
new file mode 100644
index 0000000000..64c5e31b7a
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/.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.net4j.examples.installer/examples/buddies.ui/.options b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/.options
new file mode 100644
index 0000000000..0210f13b23
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/.options
@@ -0,0 +1,3 @@
+# Debugging and tracing options
+
+org.eclipse.net4j.buddies.ui/debug = true
diff --git a/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/.project b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/.project
new file mode 100644
index 0000000000..08da25a3b5
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/.project
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.net4j.buddies.ui</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.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</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.xml</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ <nature>org.eclipse.emf.cdo.releng.version.VersionNature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/.settings/org.eclipse.core.resources.prefs b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000000..4b2f26f957
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,3 @@
+#Mon Jul 04 13:02:30 CEST 2011
+eclipse.preferences.version=1
+encoding//model/org.eclipse.emf.cdo.defs.ecorediag=UTF-8
diff --git a/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000000..b28293508e
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,382 @@
+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_member=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.net4j.examples.installer/examples/buddies.ui/.settings/org.eclipse.jdt.ui.prefs b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000000..4343e2f963
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/.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 - 2012 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.net4j.examples.installer/examples/buddies.ui/.settings/org.eclipse.ltk.core.refactoring.prefs b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/.settings/org.eclipse.ltk.core.refactoring.prefs
new file mode 100644
index 0000000000..864e30fe5d
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/.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.net4j.examples.installer/examples/buddies.ui/.settings/org.eclipse.mylyn.tasks.ui.prefs b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/.settings/org.eclipse.mylyn.tasks.ui.prefs
new file mode 100644
index 0000000000..b050639a54
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/.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.net4j.examples.installer/examples/buddies.ui/.settings/org.eclipse.mylyn.team.ui.prefs b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/.settings/org.eclipse.mylyn.team.ui.prefs
new file mode 100644
index 0000000000..2f50f36c0c
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/.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.net4j.examples.installer/examples/buddies.ui/.settings/org.eclipse.pde.api.tools.prefs b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 0000000000..f8d0a0660e
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,94 @@
+#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=Ignore
+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.net4j.examples.installer/examples/buddies.ui/.settings/org.eclipse.pde.prefs b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/.settings/org.eclipse.pde.prefs
new file mode 100644
index 0000000000..c6b96bb45e
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,31 @@
+#Thu Feb 04 09:44:24 CET 2010
+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.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=1
+compilers.p.discouraged-class=1
+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=1
+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.net4j.examples.installer/examples/buddies.ui/BuddiesClient1.launch b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/BuddiesClient1.launch
new file mode 100644
index 0000000000..abbe02696b
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/BuddiesClient1.launch
@@ -0,0 +1,471 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.pde.ui.RuntimeWorkbench">
+<booleanAttribute key="askclear" value="true"/>
+<booleanAttribute key="automaticAdd" value="false"/>
+<booleanAttribute key="automaticValidate" value="false"/>
+<stringAttribute key="bootstrap" value=""/>
+<stringAttribute key="checked" value="org.eclipse.net4j,org.eclipse.net4j.buddies,org.eclipse.net4j.buddies.common,org.eclipse.net4j.buddies.ui,org.eclipse.net4j.tcp,org.eclipse.net4j.ui,org.eclipse.net4j.util,org.eclipse.net4j.util.ui"/>
+<booleanAttribute key="clearConfig" value="true"/>
+<booleanAttribute key="clearws" value="false"/>
+<booleanAttribute key="clearwslog" value="false"/>
+<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/BuddiesClient1"/>
+<booleanAttribute key="default" value="false"/>
+<booleanAttribute key="includeOptional" value="false"/>
+<stringAttribute key="location" value="${workspace_loc}/../buddies.client1"/>
+<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-nosplash&#13;&#10;-console"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dorg.aspectj.tracing.debug=false&#13;&#10;-Xms40m&#13;&#10;-Xmx512m"/>
+<stringAttribute key="pde.version" value="3.3"/>
+<stringAttribute key="product" value="org.eclipse.sdk.ide"/>
+<stringAttribute key="selectedPlugin" value="org.eclipse.net4j.buddies.common"/>
+<stringAttribute key="selected_target_plugins" value="org.eclipse.emf.exporter,org.eclipse.ui.navigator.resources,org.eclipse.emf.ecore.editor,org.eclipse.equinox.launcher,org.eclipse.emf.mapping.ui,org.eclipse.jface.text,javax.servlet.jsp,org.eclipse.core.filesystem,org.eclipse.equinox.jsp.jasper.registry,org.eclipse.xsd.cheatsheets,org.eclipse.pde,org.eclipse.emf.ecore,org.eclipse.jdt.compiler.apt,org.eclipse.ui.forms,org.eclipse.emf.converter,org.eclipse.jface.databinding,org.eclipse.jdt.junit,org.eclipse.jdt.launching,org.apache.lucene.analysis,org.eclipse.emf.source,org.eclipse.jdt,org.eclipse.xsd.edit,org.eclipse.ui.win32,org.eclipse.core.commands,org.eclipse.ui.intro,org.eclipse.core.runtime,org.junit4,org.eclipse.help.base,org.eclipse.core.expressions,org.eclipse.pde.doc.user,org.eclipse.emf.mapping.ecore2xml.ui,org.eclipse.xsd.ecore.importer,org.eclipse.ui.editors,org.eclipse.emf.codegen.ecore.ui,org.eclipse.jdt.doc.isv,org.eclipse.emf.common.ui,org.eclipse.equinox.preferences,org.eclipse.platform.doc.isv,org.eclipse.core.boot,org.apache.ant,org.eclipse.emf.cheatsheets,org.eclipse.update.scheduler,org.eclipse.core.filebuffers,org.eclipse.debug.ui,org.eclipse.emf.mapping.ecore2ecore.editor,org.eclipse.help.ui,org.eclipse.core.net,org.eclipse.emf.codegen.ui,org.eclipse.equinox.http.registry,org.eclipse.team.cvs.ssh2,org.eclipse.emf.common,javax.servlet,org.eclipse.ui.views,org.eclipse.emf.mapping,org.eclipse.xsd.source,org.eclipse.cvs,org.eclipse.equinox.registry,com.ibm.icu,org.eclipse.text,org.eclipse.swt.win32.win32.x86,org.eclipse.ant.ui,org.apache.commons.logging,org.eclipse.cvs.source,org.eclipse.ant.core,org.eclipse.swt,org.eclipse.jdt.junit4.runtime,org.eclipse.pde.build,org.eclipse.team.cvs.ui,org.eclipse.emf.codegen,org.eclipse.ui.presentations.r21,org.eclipse.emf.ecore.xmi,org.eclipse.ui.externaltools,org.eclipse.sdk,org.eclipse.debug.core,org.eclipse.rcp,org.eclipse.core.jobs,org.eclipse.pde.ui,org.eclipse.emf.mapping.xsd2ecore,org.eclipse.core.resources.compatibility,org.apache.lucene,org.eclipse.emf.edit.ui,org.eclipse.ui.browser,org.eclipse.xsd.ecore.exporter,org.eclipse.equinox.common,org.eclipse.ui.intro.universal,org.eclipse.search,org.eclipse.equinox.http.servlet,org.eclipse.compare,org.eclipse.emf.mapping.ecore2xml,org.eclipse.pde.junit.runtime,org.eclipse.core.contenttype,org.eclipse.emf.ecore.sdo.source,org.eclipse.core.variables,org.eclipse.platform.source,org.eclipse.pde.runtime,org.eclipse.ui.workbench.compatibility,org.eclipse.emf.ant,org.eclipse.emf.ecore.sdo,org.eclipse.help,org.eclipse.jdt.junit.runtime,org.eclipse.jdt.doc.user,org.mortbay.jetty,org.eclipse.ltk.core.refactoring,org.eclipse.equinox.app,org.eclipse.update.configurator,org.eclipse.jdt.compiler.tool,org.apache.jasper,org.eclipse.team.cvs.ssh,org.eclipse.emf.mapping.ecore2ecore,org.eclipse.team.core,org.eclipse.emf,org.eclipse.emf.ecore.change,org.eclipse.help.webapp,org.eclipse.emf.edit,org.eclipse.osgi.services,org.eclipse.emf.ecore.edit,org.eclipse.ui.ide.application,org.eclipse.core.runtime.compatibility.registry,org.eclipse.jdt.core.manipulation,org.eclipse.ui.workbench.texteditor,org.eclipse.xsd.doc,org.eclipse.ui.ide,org.eclipse.team.cvs.core,org.eclipse.emf.mapping.xsd2ecore.editor,org.eclipse.pde.ui.templates,org.eclipse.ui.cheatsheets,org.eclipse.jdt.core,org.eclipse.ui.console,org.eclipse.osgi,org.eclipse.emf.codegen.ecore,org.eclipse.core.runtime.compatibility.auth,org.eclipse.pde.core,org.eclipse.update.core.win32,org.eclipse.emf.importer.ecore,org.eclipse.emf.commonj.sdo,org.eclipse.jdt.debug.ui,org.eclipse.emf.importer,org.eclipse.core.databinding,org.eclipse.emf.importer.rose,org.eclipse.update.core,org.eclipse.emf.ecore.sdo.doc,org.apache.commons.el,org.eclipse.team.ui,org.eclipse.jdt.ui,org.eclipse.ui.navigator,org.eclipse.equinox.launcher.win32.win32.x86,org.eclipse.equinox.http.jetty,org.eclipse.ui.views.properties.tabbed,org.eclipse.ltk.ui.refactoring,org.eclipse.jdt.debug,org.eclipse.emf.ecore.sdo.editor,org.eclipse.core.filesystem.win32.x86,org.eclipse.osgi.util,org.eclipse.platform,org.eclipse.xsd.editor,org.eclipse.core.resources,org.eclipse.update.ui,com.jcraft.jsch,org.eclipse.core.databinding.beans,org.eclipse.jface,org.eclipse.emf.importer.java,org.eclipse.xsd,org.eclipse.core.runtime.compatibility,org.eclipse.pde.source,org.eclipse.jsch.core,org.junit,org.eclipse.jdt.source,org.eclipse.emf.ecore.sdo.edit,org.eclipse.emf.doc,org.eclipse.equinox.jsp.jasper,org.eclipse.help.appserver,org.eclipse.ui,org.eclipse.emf.ecore.change.edit,org.eclipse.rcp.source,org.eclipse.ui.workbench"/>
+<stringAttribute key="selected_workspace_plugins" value="org.eclipse.net4j.buddies,org.eclipse.net4j.util.ui,org.eclipse.net4j.buddies.chat.ui,org.eclipse.net4j.tcp,org.eclipse.net4j.ui,org.eclipse.net4j.buddies.ui,org.eclipse.ant.optional.junit,org.eclipse.net4j.util,org.eclipse.net4j.buddies.chat,org.eclipse.net4j.buddies.common,org.eclipse.net4j"/>
+<booleanAttribute key="show_selected_only" value="false"/>
+<stringAttribute key="templateConfig" value="${target_home}\configuration\config.ini"/>
+<booleanAttribute key="tracing" value="true"/>
+<mapAttribute key="tracingOptions">
+<mapEntry key="org.eclipse.core.runtime/debug/context" value="false"/>
+<mapEntry key="org.eclipse.core.jobs/jobs/beginend" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/completion" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/sources" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/indexmanager" value="false"/>
+<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/checkConditions" value="300"/>
+<mapEntry key="org.eclipse.emf.query.ocl/debug/exceptions/catching" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/extendededitoractionbuilder/debugtoolbar" value="false"/>
+<mapEntry key="org.eclipse.emf.transaction/debug/exceptions/catching" value="false"/>
+<mapEntry key="org.eclipse.jface.text.source/debug/RevisionRulerColumn" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/contexts" value="false"/>
+<mapEntry key="org.eclipse.wst.common.environment/trace/error" value="true"/>
+<mapEntry key="org.eclipse.debug.ui/debug/viewers/updateSequence" value="false"/>
+<mapEntry key="org.eclipse.wst.common.environment/trace/warning" value="true"/>
+<mapEntry key="org.eclipse.emf.validation/debug/exceptions/throwing" value="false"/>
+<mapEntry key="org.eclipse.osgi/trace/filename" value="runtime.traces"/>
+<mapEntry key="org.eclipse.wst.sse.ui/extendededitoractionbuilder" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies/debug.repository" value="true"/>
+<mapEntry key="org.eclipse.jdt.core/debug" value="true"/>
+<mapEntry key="org.eclipse.wst.sse.ui/actioncontributor/debugstatusfields" value="true"/>
+<mapEntry key="org.eclipse.debug.ui/debug/contextlaunching" value="false"/>
+<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug" value="false"/>
+<mapEntry key="org.eclipse.net4j.tcp/debug" value="true"/>
+<mapEntry key="org.eclipse.team.cvs.core/dirtycaching" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/javamodel" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/contentOutline" value="false"/>
+<mapEntry key="org.eclipse.emf.ocl/debug/exceptions/throwing" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/preferences-properties" value="false"/>
+<mapEntry key="org.eclipse.wtp.common/debug/logtrace" value="false"/>
+<mapEntry key="org.eclipse.ui.intro/trace/printHTML" value="false"/>
+<mapEntry key="org.eclipse.emf.query.ocl/debug" value="true"/>
+<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/createChanges" value="300"/>
+<mapEntry key="org.eclipse.wst.sse.core/tasks/detection" value="false"/>
+<mapEntry key="org.eclipse.net4j.util/debug.lifecycle.dump" value="true"/>
+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPerspectiveListener" value="false"/>
+<mapEntry key="org.eclipse.osgi/resolver/debug" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/propertySheet" value="false"/>
+<mapEntry key="org.eclipse.team.core/refreshjob" value="false"/>
+<mapEntry key="org.eclipse.ui/debug" value="false"/>
+<mapEntry key="org.eclipse.update.core/debug/installhandler" value="false"/>
+<mapEntry key="org.eclipse.wtp.common/debug/loglevel" value="WARNING"/>
+<mapEntry key="org.eclipse.help.ui/debug/infopop" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies/debug.session" value="true"/>
+<mapEntry key="org.eclipse.pde.core/classpath" value="false"/>
+<mapEntry key="org.eclipse.team.cvs.core/threading" value="false"/>
+<mapEntry key="org.eclipse.equinox.preferences/general" value="false"/>
+<mapEntry key="org.eclipse.net4j.jms.server/debug.store" value="true"/>
+<mapEntry key="org.eclipse.ui/trace/handlers.performance" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/format" value="false"/>
+<mapEntry key="org.eclipse.ocl/debug/evaluation" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/operations.verbose" value="false"/>
+<mapEntry key="org.eclipse.emf.validation/debug/constraints" value="false"/>
+<mapEntry key="org.eclipse.osgi/trace/activation" value="false"/>
+<mapEntry key="org.eclipse.ocl/debug/exceptions/catching" value="false"/>
+<mapEntry key="com.ibm.datatools.core.ui/modelExplorer/trace" value="true"/>
+<mapEntry key="org.eclipse.debug.core/debug/commands" value="false"/>
+<mapEntry key="org.eclipse.ui/perf/workbench.restore" value="30000"/>
+<mapEntry key="org.eclipse.team.core/threading" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/structureddocument" value="false"/>
+<mapEntry key="org.eclipse.emf.transaction/debug/methods/exiting" value="false"/>
+<mapEntry key="org.eclipse.update.core/debug/parsing" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/postaction" value="false"/>
+<mapEntry key="org.eclipse.ocl/debug" value="true"/>
+<mapEntry key="org.eclipse.ui/trace/graphics" value="false"/>
+<mapEntry key="org.eclipse.osgi/defaultprofile/logsynchronously" value="false"/>
+<mapEntry key="org.eclipse.net4j.db/debug" value="true"/>
+<mapEntry key="org.eclipse.emf.query/debug/exceptions/throwing" value="false"/>
+<mapEntry key="org.eclipse.wst.common.environment/trace/ws_dt_cmd_engine" value="true"/>
+<mapEntry key="org.eclipse.osgi/monitor/activation" value="false"/>
+<mapEntry key="org.eclipse.net4j.jms/debug.protocol" value="true"/>
+<mapEntry key="org.eclipse.wst.sse.ui/gotoNextAnnotation" value="false"/>
+<mapEntry key="org.eclipse.wst.common.project.facet.core/delegate/calls" value="false"/>
+<mapEntry key="org.eclipse.debug.ui/debug" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies.server/debug.types" value="true"/>
+<mapEntry key="org.eclipse.net4j.buddies/debug.protocol" value="true"/>
+<mapEntry key="org.eclipse.jdt.core/debug/buffermanager" value="false"/>
+<mapEntry key="org.eclipse.help.base/debug/search" value="false"/>
+<mapEntry key="org.eclipse.jface.text/debug/ContentAssistSubjectAdapters" value="false"/>
+<mapEntry key="org.eclipse.pde.build/debug" value="false"/>
+<mapEntry key="org.eclipse.wst.common.environment/trace/ws_ant" value="true"/>
+<mapEntry key="org.eclipse.jdt.ui/perf/search/participants" value="300"/>
+<mapEntry key="org.eclipse.emf.validation/debug/parsers" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/tasks/overalltime" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/structuredmodel/state" value="false"/>
+<mapEntry key="org.eclipse.ui/perf/perspective.create" value="800"/>
+<mapEntry key="org.eclipse.update.core/debug/type" value="false"/>
+<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin" value="false"/>
+<mapEntry key="org.eclipse.emf.workspace/debug/methods/exiting" value="false"/>
+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPropertyChangeListener" value="false"/>
+<mapEntry key="org.eclipse.osgi/resolver/generics" value="false"/>
+<mapEntry key="org.eclipse.wst.common.project.facet.core/actionSorting" value="false"/>
+<mapEntry key="com.ibm.datatools.core.ui/modelExplorerDecoration/trace" value="true"/>
+<mapEntry key="org.eclipse.osgi/resolver/requires" value="false"/>
+<mapEntry key="org.eclipse.emf.workspace/debug/exceptions/throwing" value="false"/>
+<mapEntry key="org.eclipse.core.resources/refresh" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/perf/containerinitializer" value="5000"/>
+<mapEntry key="org.eclipse.osgi/profile/benchmark" value="false"/>
+<mapEntry key="org.eclipse.jet/debug/builder" value="false"/>
+<mapEntry key="org.eclipse.help.webapp/debug" value="true"/>
+<mapEntry key="org.eclipse.jdt.ui/debug/ASTProvider" value="false"/>
+<mapEntry key="org.eclipse.osgi/debug" value="false"/>
+<mapEntry key="org.eclipse.emf.validation/debug/constraints/disabled" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/extendededitoractionbuilder/debugpopup" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/handlers" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/contexts.performance" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies/debug" value="true"/>
+<mapEntry key="org.eclipse.jem.util/debug/logtrace" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies.server/debug.resource" value="true"/>
+<mapEntry key="org.eclipse.team.cvs.core/metafiles" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/perf/completion" value="300"/>
+<mapEntry key="org.eclipse.osgi/profile/startup" value="false"/>
+<mapEntry key="org.eclipse.core.jobs/jobs" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/debug" value="true"/>
+<mapEntry key="org.eclipse.core.resources/perf/save.participants" value="500"/>
+<mapEntry key="org.eclipse.emf.query.ocl/debug/exceptions/throwing" value="false"/>
+<mapEntry key="org.eclipse.wst.common.environment/trace/info" value="true"/>
+<mapEntry key="org.eclipse.net4j/perf" value="false"/>
+<mapEntry key="org.eclipse.help.base/debug" value="true"/>
+<mapEntry key="org.eclipse.jet/debug/projectBundleLoading" value="false"/>
+<mapEntry key="org.eclipse.net4j/debug" value="true"/>
+<mapEntry key="org.eclipse.net4j/debug.signal" value="true"/>
+<mapEntry key="org.eclipse.emf.query/debug/methods/entering" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/structuredmodel/modelmanager" value="false"/>
+<mapEntry key="org.eclipse.core.jobs/jobs/timing" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/perf/reconcile" value="1000"/>
+<mapEntry key="com.ibm.datatools.core.ui/modelExplorer/log" value="true"/>
+<mapEntry key="org.eclipse.wst.sse.ui/extendededitoractionbuilder/debugmenu" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/filemodelprovider/modelstatelistener" value="false"/>
+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPageListener" value="false"/>
+<mapEntry key="org.eclipse.datatools.connectivity.sqm.core/debug" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/structuredmodel/lifecycle" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/tasks/job" value="false"/>
+<mapEntry key="org.eclipse.net4j/debug.buffer" value="false"/>
+<mapEntry key="org.eclipse.core.resources/contenttype/cache" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/extendedconfigurationbuilder" value="false"/>
+<mapEntry key="org.eclipse.update.core/debug/configuration" value="false"/>
+<mapEntry key="org.eclipse.core.jobs/jobs/locks" value="false"/>
+<mapEntry key="org.eclipse.wst.xml.core/debug/cmdocumentmanager" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/handlers.verbose.commandId" value=""/>
+<mapEntry key="org.eclipse.core.runtime/url/debug/connect" value="false"/>
+<mapEntry key="org.eclipse.ui.ide/debug" value="false"/>
+<mapEntry key="org.eclipse.osgi/profile/debug" value="false"/>
+<mapEntry key="org.eclipse.pde.core/debug" value="true"/>
+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPartReference" value="false"/>
+<mapEntry key="org.eclipse.jet/debug/traceTagExecution" value="false"/>
+<mapEntry key="org.eclipse.ui/debug/job.stale" value="false"/>
+<mapEntry key="org.eclipse.net4j.util/debug.registry" value="true"/>
+<mapEntry key="org.eclipse.jdt.ui/perf/explorer/createPartControl" value="1300"/>
+<mapEntry key="org.eclipse.jdt.core/debug/hierarchy" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/perf/variableinitializer" value="5000"/>
+<mapEntry key="org.eclipse.ui.ide/debug/internalerror/openDialog" value="false"/>
+<mapEntry key="org.eclipse.core.resources/strings" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/sourcemapper" value="false"/>
+<mapEntry key="org.eclipse.core.resources/save/mastertable" value="false"/>
+<mapEntry key="org.eclipse.core.expressions/tracePropertyResolving" value="false"/>
+<mapEntry key="org.eclipse.core.resources/preferences" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/javadelta" value="false"/>
+<mapEntry key="org.eclipse.ui/perf/showHeapStatus" value="true"/>
+<mapEntry key="org.eclipse.jdt.core/debug/selection" value="false"/>
+<mapEntry key="org.eclipse.emf.workspace/debug" value="true"/>
+<mapEntry key="org.eclipse.jdt.ui/perf/content_assist_sorters/extensions" value=""/>
+<mapEntry key="org.eclipse.jdt.core/debug/javamodel/cache" value="false"/>
+<mapEntry key="org.eclipse.wst.common.environment/trace/emitter" value="true"/>
+<mapEntry key="org.eclipse.net4j.buddies/debug.transaction" value="true"/>
+<mapEntry key="org.eclipse.osgi/defaultprofile/logfilename" value=""/>
+<mapEntry key="org.eclipse.team.core/backgroundevents" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/keyBindings" value="false"/>
+<mapEntry key="org.eclipse.ui/perf/part.activate" value="200"/>
+<mapEntry key="org.eclipse.emf.transaction/debug/transactions" value="false"/>
+<mapEntry key="org.eclipse.ocl/debug/parsing" value="false"/>
+<mapEntry key="org.eclipse.update.core/debug" value="true"/>
+<mapEntry key="org.eclipse.osgi/debug/security" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/tasks/preferences" value="false"/>
+<mapEntry key="org.eclipse.core.resources/restore/metainfo" value="false"/>
+<mapEntry key="org.eclipse.core.resources/build/needbuild" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies.server/debug.store" value="true"/>
+<mapEntry key="org.eclipse.core.resources/perf/builders" value="10000"/>
+<mapEntry key="org.eclipse.ui/perf/perspective.listeners" value="200"/>
+<mapEntry key="org.eclipse.net4j.jms.admin/debug.protocol" value="true"/>
+<mapEntry key="com.ibm.datatools.core.ui/debug" value="true"/>
+<mapEntry key="org.eclipse.ui/debug/showAllJobs" value="false"/>
+<mapEntry key="org.eclipse.core.resources/history" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/propertyChangeUpdateActionContributionItem" value="false"/>
+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/search" value="false"/>
+<mapEntry key="org.eclipse.team.cvs.core/cvsprotocol" value="true"/>
+<mapEntry key="org.eclipse.pde.core/validation" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/extendededitoractionbuilder/readtime" value="false"/>
+<mapEntry key="org.eclipse.jface.text/debug/AnnotationPainter" value="false"/>
+<mapEntry key="org.eclipse.core.resources/restore/mastertable" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/tasks" value="false"/>
+<mapEntry key="org.eclipse.core.runtime/debug" value="false"/>
+<mapEntry key="org.eclipse.equinox.preferences/set" value="false"/>
+<mapEntry key="org.eclipse.core.resources/restore/snapshots" value="false"/>
+<mapEntry key="org.eclipse.ui/perf/perspective.switch" value="800"/>
+<mapEntry key="org.eclipse.jet/debug/pluginBundleLoading" value="false"/>
+<mapEntry key="org.eclipse.wst.xml.core/debug/tracefilter" value=""/>
+<mapEntry key="org.eclipse.help.webapp/debug/workingsets" value="false"/>
+<mapEntry key="org.eclipse.osgi/debug/bundleTime" value="false"/>
+<mapEntry key="org.eclipse.core.resources/restore/markers" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies/debug.model" value="false"/>
+<mapEntry key="org.eclipse.emf.validation/debug/listeners" value="false"/>
+<mapEntry key="org.eclipse.ui/perf/workbench.start" value="45000"/>
+<mapEntry key="org.eclipse.core.runtime/url/debug/cachecopy" value="false"/>
+<mapEntry key="org.eclipse.core.runtime/perf/success" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies.server/debug.protocol" value="true"/>
+<mapEntry key="org.eclipse.net4j/debug.connector" value="true"/>
+<mapEntry key="org.eclipse.net4j.buddies/debug.util" value="true"/>
+<mapEntry key="org.eclipse.wst.dtd.ui/projectionperf" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/perf/selection" value="300"/>
+<mapEntry key="org.eclipse.osgi/debug/startlevel" value="false"/>
+<mapEntry key="org.eclipse.ocl/debug/methods/entering" value="false"/>
+<mapEntry key="org.eclipse.core.resources/restore" value="false"/>
+<mapEntry key="org.eclipse.jet/debug/additionalBundleLoading" value="false"/>
+<mapEntry key="org.eclipse.osgi/resolver/wiring" value="false"/>
+<mapEntry key="org.eclipse.core.resources/perf/snapshot" value="1000"/>
+<mapEntry key="org.eclipse.net4j.buddies.server/debug" value="true"/>
+<mapEntry key="org.eclipse.ui.intro/trace/logPerformance" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/contexts.verbose" value="false"/>
+<mapEntry key="org.eclipse.osgi/debug/loader" value="false"/>
+<mapEntry key="org.eclipse.osgi/resolver/grouping" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/debug/reconcilerjob" value="false"/>
+<mapEntry key="org.eclipse.jdt.ui/perf/explorer/makeActions" value="1000"/>
+<mapEntry key="org.eclipse.net4j/debug.acceptor" value="true"/>
+<mapEntry key="org.eclipse.net4j.buddies.ui/debug" value="true"/>
+<mapEntry key="org.eclipse.wst.sse.ui/debug/reconcilerSpelling/showProblems" value="false"/>
+<mapEntry key="org.eclipse.core.resources/save/markers" value="false"/>
+<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin/resolver" value="false"/>
+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener2" value="false"/>
+<mapEntry key="org.eclipse.net4j.jvm/debug" value="true"/>
+<mapEntry key="org.eclipse.wst.xml.core/debug/cmdocumentcache" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/operations" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/transferbuilder/time" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies.server/debug.session" value="true"/>
+<mapEntry key="org.eclipse.emf.validation/debug/cache" value="false"/>
+<mapEntry key="org.eclipse.update.core/debug/install" value="false"/>
+<mapEntry key="org.eclipse.equinox.registry/debug/events" value="false"/>
+<mapEntry key="org.eclipse.help/debug/protocols" value="false"/>
+<mapEntry key="org.eclipse.core.resources/save/metainfo" value="false"/>
+<mapEntry key="org.eclipse.net4j.util/debug.lifecycle" value="true"/>
+<mapEntry key="org.eclipse.emf.validation/debug/methods/entering" value="false"/>
+<mapEntry key="org.eclipse.ui/perf/contentTypes" value="200"/>
+<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser/inprocess" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/perf/javadeltalistener" value="500"/>
+<mapEntry key="org.eclipse.core.resources/perf/listeners" value="500"/>
+<mapEntry key="org.eclipse.jet/debug/savedState" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/tasks/registry" value="false"/>
+<mapEntry key="org.eclipse.ui/perf/part.init" value="800"/>
+<mapEntry key="org.eclipse.core.contenttype/debug" value="false"/>
+<mapEntry key="org.eclipse.osgi/resolver/imports" value="false"/>
+<mapEntry key="org.eclipse.core.resources/restore/tree" value="false"/>
+<mapEntry key="org.eclipse.ui.intro.universal/trace/logPerformance" value="false"/>
+<mapEntry key="org.eclipse.help/debug/context" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies/debug.object" value="true"/>
+<mapEntry key="org.eclipse.wst.sse.ui/debug/reconcilerValidators" value="false"/>
+<mapEntry key="org.eclipse.emf.validation/debug/xml" value="false"/>
+<mapEntry key="org.eclipse.osgi/debug/manifest" value="false"/>
+<mapEntry key="org.eclipse.jet/debug/bundleLoading" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/multipageeditor" value="false"/>
+<mapEntry key="org.eclipse.net4j.examples/debug" value="true"/>
+<mapEntry key="org.eclipse.emf.workspace/debug/exceptions/catching" value="false"/>
+<mapEntry key="org.eclipse.core.resources/build/needbuildstack" value="false"/>
+<mapEntry key="org.eclipse.ui/debug/swtdebug" value="false"/>
+<mapEntry key="org.eclipse.emf.query/debug/exceptions/catching" value="false"/>
+<mapEntry key="org.eclipse.core.resources/save/syncinfo" value="false"/>
+<mapEntry key="org.eclipse.wst.xml.core/debug" value="true"/>
+<mapEntry key="org.eclipse.emf.ocl/debug/methods/exiting" value="false"/>
+<mapEntry key="org.eclipse.team.cvs.ssh/debug" value="false"/>
+<mapEntry key="org.eclipse.core.resources/build/failure" value="false"/>
+<mapEntry key="org.eclipse.team.core/debug" value="false"/>
+<mapEntry key="org.eclipse.jet/debug" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/builder" value="false"/>
+<mapEntry key="org.eclipse.osgi/trace/classLoading" value="false"/>
+<mapEntry key="org.eclipse.net4j.jms.server.jdbc/debug" value="true"/>
+<mapEntry key="org.eclipse.wst.xml.ui/projectionperf" value="false"/>
+<mapEntry key="org.eclipse.core.jobs/jobs/errorondeadlock" value="false"/>
+<mapEntry key="org.eclipse.core.resources/save" value="false"/>
+<mapEntry key="org.eclipse.emf.transaction/debug/exceptions/throwing" value="false"/>
+<mapEntry key="org.eclipse.core.resources/contenttype" value="false"/>
+<mapEntry key="org.eclipse.jem.util/debug/loglevel" value="WARNING"/>
+<mapEntry key="org.eclipse.jface.text/debug/FastPartitioner/PositionCache" value="false"/>
+<mapEntry key="org.eclipse.emf.validation/debug/exceptions/catching" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/compiler" value="false"/>
+<mapEntry key="org.eclipse.osgi/debug/events" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/commands" value="false"/>
+<mapEntry key="org.eclipse.equinox.preferences/get" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/filemodelprovider/operations" value="false"/>
+<mapEntry key="org.eclipse.jdt.ui/debug/ResultCollector" value="false"/>
+<mapEntry key="org.eclipse.debug.ui/debug/launchhistory" value="false"/>
+<mapEntry key="org.eclipse.net4j.util/debug.om" value="true"/>
+<mapEntry key="org.eclipse.wst.sse.ui/extendededitoractionbuilder/contributetime" value="false"/>
+<mapEntry key="org.eclipse.net4j.jms.server/debug" value="true"/>
+<mapEntry key="org.eclipse.emf.workspace/debug/methods/entering" value="false"/>
+<mapEntry key="org.eclipse.emf.query.ocl/debug/methods/entering" value="false"/>
+<mapEntry key="org.eclipse.net4j.db.mysql/debug" value="true"/>
+<mapEntry key="org.eclipse.debug.ui/debug/viewers/model" value="false"/>
+<mapEntry key="org.eclipse.net4j.util/debug" value="true"/>
+<mapEntry key="org.eclipse.equinox.registry/debug" value="false"/>
+<mapEntry key="org.eclipse.wst.common.environment/trace/command" value="true"/>
+<mapEntry key="org.eclipse.ui.intro/debug" value="true"/>
+<mapEntry key="org.eclipse.emf.transaction/debug/locking" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/cpresolution/advanced" value="false"/>
+<mapEntry key="org.eclipse.net4j.jms/debug" value="true"/>
+<mapEntry key="org.eclipse.emf.validation/debug/providers" value="false"/>
+<mapEntry key="org.eclipse.osgi/eclipseadaptor/converter/debug" value="false"/>
+<mapEntry key="com.ibm.datatools.core.ui/plugin/log" value="true"/>
+<mapEntry key="org.eclipse.pde.core/cache" value="false"/>
+<mapEntry key="org.eclipse.emf.ocl/debug/exceptions/catching" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/extendedconfigurationbuilder/time" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/tasks/time" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/filemodelprovider/lifecyclelistener" value="false"/>
+<mapEntry key="org.eclipse.emf.query/debug/methods/exiting" value="false"/>
+<mapEntry key="org.eclipse.debug.core/debug/events" value="false"/>
+<mapEntry key="org.eclipse.net4j/debug.selector" value="true"/>
+<mapEntry key="org.eclipse.jdt.ui/debug" value="true"/>
+<mapEntry key="org.eclipse.net4j.db/debug.sql" value="true"/>
+<mapEntry key="org.eclipse.wst.sse.core/filebuffers/modelmanagement" value="false"/>
+<mapEntry key="org.eclipse.osgi/monitor/classes" value="false"/>
+<mapEntry key="org.eclipse.ui/perf/part.input" value="200"/>
+<mapEntry key="org.eclipse.wst.sse.ui/debug/tracefilter" value=""/>
+<mapEntry key="org.eclipse.wtp.common/debug/logtracefile" value="false"/>
+<mapEntry key="org.eclipse.jet/debug/ext/xpathFunctions" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies.server.db/debug" value="true"/>
+<mapEntry key="org.eclipse.emf.query/debug" value="true"/>
+<mapEntry key="org.eclipse.ui.intro.universal/debug" value="true"/>
+<mapEntry key="org.eclipse.jdt.ui/debug/TypeConstraints" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies/debug.adapter" value="true"/>
+<mapEntry key="org.eclipse.osgi/debug/messageBundles" value="false"/>
+<mapEntry key="org.eclipse.core.resources/build/invoking" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/javadelta/verbose" value="false"/>
+<mapEntry key="org.eclipse.net4j.util/debug.concurrency" value="true"/>
+<mapEntry key="org.eclipse.core.resources/save/tree" value="false"/>
+<mapEntry key="org.eclipse.ui/debug/contributions" value="false"/>
+<mapEntry key="org.eclipse.update.core/debug/warning" value="false"/>
+<mapEntry key="org.eclipse.core.resources/natures" value="false"/>
+<mapEntry key="org.eclipse.jdt.core.manipulation/debug" value="true"/>
+<mapEntry key="org.eclipse.net4j.jms.admin/debug" value="true"/>
+<mapEntry key="org.eclipse.jdt.core/debug/cpresolution" value="false"/>
+<mapEntry key="org.eclipse.wst.common.project.facet.core/activation" value="false"/>
+<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser" value="false"/>
+<mapEntry key="org.eclipse.team.cvs.ssh/ssh_protocol" value="false"/>
+<mapEntry key="org.eclipse.core.resources/build/stacktrace" value="false"/>
+<mapEntry key="org.eclipse.ui/perf/part.create" value="800"/>
+<mapEntry key="org.eclipse.ui.intro/trace/logInfo" value="true"/>
+<mapEntry key="org.eclipse.team.core/streams" value="false"/>
+<mapEntry key="org.eclipse.ui.ide/debug/undomonitor" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies/debug.view" value="true"/>
+<mapEntry key="org.eclipse.jdt.ui/perf/explorer/RefactorActionGroup" value="150"/>
+<mapEntry key="org.eclipse.net4j.ui/debug" value="true"/>
+<mapEntry key="org.eclipse.ui/experimental/menus" value="false"/>
+<mapEntry key="org.eclipse.core.jobs/jobs/shutdown" value="false"/>
+<mapEntry key="org.eclipse.osgi/debug/packageadmin" value="false"/>
+<mapEntry key="org.eclipse.core.runtime/compatibility/debug" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/storagemodelprovider/operations" value="false"/>
+<mapEntry key="org.eclipse.ui/debug/declaredImages" value="false"/>
+<mapEntry key="org.eclipse.update.core/debug/reconciler" value="false"/>
+<mapEntry key="org.eclipse.ui.ide/debug/gc" value="false"/>
+<mapEntry key="org.eclipse.debug.ui/debug/viewers/contentProvider" value="false"/>
+<mapEntry key="org.eclipse.emf.transaction/debug" value="true"/>
+<mapEntry key="org.eclipse.osgi/debug/services" value="false"/>
+<mapEntry key="org.eclipse.net4j.db.mysql/debug.sql" value="true"/>
+<mapEntry key="org.eclipse.datatools.connectivity/connectionprofileextension" value="false"/>
+<mapEntry key="org.eclipse.net4j.util.ui/debug" value="true"/>
+<mapEntry key="org.eclipse.net4j.buddies/debug.resource" value="true"/>
+<mapEntry key="org.eclipse.ui.workbench/debug" value="false"/>
+<mapEntry key="org.eclipse.jdt.ui/perf/content_assist/extensions" value="1000"/>
+<mapEntry key="org.eclipse.osgi/debug/filter" value="false"/>
+<mapEntry key="org.eclipse.debug.core/debug" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies.common/debug" value="true"/>
+<mapEntry key="org.eclipse.core.resources/debug" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/zipaccess" value="false"/>
+<mapEntry key="org.eclipse.jem.util/debug/logtracefile" value="false"/>
+<mapEntry key="org.eclipse.ui.browser/debug" value="false"/>
+<mapEntry key="org.eclipse.osgi/profile/impl" value="org.eclipse.osgi.internal.profile.DefaultProfileLogger"/>
+<mapEntry key="org.eclipse.net4j.jms.server/debug.protocol" value="true"/>
+<mapEntry key="org.eclipse.update.core/debug/web" value="false"/>
+<mapEntry key="org.eclipse.team.cvs.core/debug" value="false"/>
+<mapEntry key="org.eclipse.help/debug" value="true"/>
+<mapEntry key="org.eclipse.core.runtime/perf" value="false"/>
+<mapEntry key="org.eclipse.osgi/trace/filters" value="trace.properties"/>
+<mapEntry key="org.eclipse.emf.ocl/debug/methods/entering" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/dom/adapter/notification/time" value="false"/>
+<mapEntry key="org.eclipse.net4j/debug.channel" value="true"/>
+<mapEntry key="org.eclipse.ui/perf/part.listeners" value="200"/>
+<mapEntry key="org.eclipse.debug.ui/debug/viewers/viewer" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/dom/adapter/notification/time/criteria" value="10"/>
+<mapEntry key="org.eclipse.ui/trace/keyBindings.verbose" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies/debug.revision" value="true"/>
+<mapEntry key="org.eclipse.wst.common.environment/trace/data" value="true"/>
+<mapEntry key="org.eclipse.osgi/defaultprofile/buffersize" value="256"/>
+<mapEntry key="org.eclipse.core.resources/restore/syncinfo" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies.examples/debug" value="true"/>
+<mapEntry key="org.eclipse.team.cvs.core/syncchangeevents" value="false"/>
+<mapEntry key="org.eclipse.ui/perf/page.listeners" value="200"/>
+<mapEntry key="org.eclipse.ocl/debug/exceptions/throwing" value="false"/>
+<mapEntry key="org.eclipse.datatools.connectivity/debug" value="true"/>
+<mapEntry key="org.eclipse.jet/debug/modelLoaderExtensions" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/debug" value="true"/>
+<mapEntry key="org.eclipse.net4j.buddies.common/debug.protocol" value="true"/>
+<mapEntry key="org.eclipse.ui/trace/handlers.verbose" value="false"/>
+<mapEntry key="org.eclipse.emf.validation/debug" value="true"/>
+<mapEntry key="org.eclipse.wst.sse.ui/storagemodelprovider/elementstatelistener" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies.common/debug.revision" value="true"/>
+<mapEntry key="org.eclipse.net4j.buddies.server/debug.revision" value="false"/>
+<mapEntry key="org.eclipse.osgi/monitor/resources" value="false"/>
+<mapEntry key="com.ibm.datatools.core.ui/editor/log" value="true"/>
+<mapEntry key="org.eclipse.emf.validation/debug/constraints/evaluation" value="false"/>
+<mapEntry key="org.eclipse.jet/debug/xpath/compilations" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies.common/debug.model" value="false"/>
+<mapEntry key="org.eclipse.ui/perf/part.control" value="800"/>
+<mapEntry key="org.eclipse.net4j/debug.buffer.stream" value="false"/>
+<mapEntry key="org.eclipse.ui/perf/uijob" value="200"/>
+<mapEntry key="org.eclipse.core.runtime/url/debug/cachelookup" value="false"/>
+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener2" value="false"/>
+<mapEntry key="org.eclipse.core.resources/build/delta" value="false"/>
+<mapEntry key="org.eclipse.core.resources/build/interrupt" value="false"/>
+<mapEntry key="org.eclipse.jet/debug/pluginProjectMonitor" value="false"/>
+<mapEntry key="org.eclipse.emf.validation/debug/methods/exiting" value="false"/>
+<mapEntry key="org.eclipse.core.runtime/preferences/plugin" value="false"/>
+<mapEntry key="org.eclipse.core.runtime/url/debug" value="false"/>
+<mapEntry key="org.eclipse.osgi/resolver/cycles" value="false"/>
+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/filebuffers/lifecycle" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/structuredmodel/locks" value="true"/>
+<mapEntry key="org.eclipse.jdt.core/debug/resolution" value="false"/>
+<mapEntry key="org.eclipse.wst.common.environment/debug" value="true"/>
+<mapEntry key="org.eclipse.update.configurator/debug" value="false"/>
+<mapEntry key="org.eclipse.help.ui/debug" value="true"/>
+<mapEntry key="org.eclipse.debug.ui/debug/viewers/deltas" value="false"/>
+<mapEntry key="org.eclipse.emf.query.ocl/debug/methods/exiting" value="false"/>
+<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/location" value="false"/>
+<mapEntry key="org.eclipse.ocl/debug/methods/exiting" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/debug/reconcilerSpelling" value="false"/>
+<mapEntry key="org.eclipse.emf.transaction/debug/methods/entering" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies.server/debug.repository" value="true"/>
+<mapEntry key="org.eclipse.ui.intro.universal/trace/logInfo" value="true"/>
+<mapEntry key="org.eclipse.emf.ocl/debug" value="true"/>
+</mapAttribute>
+<booleanAttribute key="useDefaultConfig" value="true"/>
+<booleanAttribute key="useDefaultConfigArea" value="true"/>
+<booleanAttribute key="useNamedJRE" value="true"/>
+<booleanAttribute key="useProduct" value="true"/>
+<booleanAttribute key="usefeatures" value="false"/>
+</launchConfiguration>
diff --git a/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/BuddiesClient2.launch b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/BuddiesClient2.launch
new file mode 100644
index 0000000000..20c8b69e60
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/BuddiesClient2.launch
@@ -0,0 +1,470 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.pde.ui.RuntimeWorkbench">
+<booleanAttribute key="askclear" value="true"/>
+<booleanAttribute key="automaticAdd" value="false"/>
+<booleanAttribute key="automaticValidate" value="false"/>
+<stringAttribute key="bootstrap" value=""/>
+<stringAttribute key="checked" value="org.eclipse.net4j,org.eclipse.net4j.buddies,org.eclipse.net4j.buddies.common,org.eclipse.net4j.buddies.ui,org.eclipse.net4j.tcp,org.eclipse.net4j.ui,org.eclipse.net4j.util,org.eclipse.net4j.util.ui"/>
+<booleanAttribute key="clearConfig" value="true"/>
+<booleanAttribute key="clearws" value="false"/>
+<booleanAttribute key="clearwslog" value="false"/>
+<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/BuddiesClient2"/>
+<booleanAttribute key="default" value="false"/>
+<booleanAttribute key="includeOptional" value="false"/>
+<stringAttribute key="location" value="${workspace_loc}/../buddies.client2"/>
+<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-nosplash&#13;&#10;-console"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dorg.aspectj.tracing.debug=false&#13;&#10;-Xms40m&#13;&#10;-Xmx512m"/>
+<stringAttribute key="pde.version" value="3.3"/>
+<stringAttribute key="product" value="org.eclipse.sdk.ide"/>
+<stringAttribute key="selectedPlugin" value="org.eclipse.net4j.buddies.common"/>
+<stringAttribute key="selected_target_plugins" value="com.ibm.icu,com.jcraft.jsch,javax.servlet,javax.servlet.jsp,org.apache.ant,org.apache.commons.el,org.apache.commons.logging,org.apache.jasper,org.apache.lucene,org.apache.lucene.analysis,org.eclipse.ant.core,org.eclipse.ant.ui,org.eclipse.compare,org.eclipse.core.boot,org.eclipse.core.commands,org.eclipse.core.contenttype,org.eclipse.core.databinding,org.eclipse.core.databinding.beans,org.eclipse.core.expressions,org.eclipse.core.filebuffers,org.eclipse.core.filesystem,org.eclipse.core.filesystem.win32.x86,org.eclipse.core.jobs,org.eclipse.core.net,org.eclipse.core.resources,org.eclipse.core.resources.compatibility,org.eclipse.core.resources.win32,org.eclipse.core.runtime,org.eclipse.core.runtime.compatibility,org.eclipse.core.runtime.compatibility.auth,org.eclipse.core.runtime.compatibility.registry,org.eclipse.core.variables,org.eclipse.cvs,org.eclipse.cvs.source,org.eclipse.debug.core,org.eclipse.debug.ui,org.eclipse.emf,org.eclipse.emf.ant,org.eclipse.emf.cheatsheets,org.eclipse.emf.codegen,org.eclipse.emf.codegen.ecore,org.eclipse.emf.codegen.ecore.ui,org.eclipse.emf.codegen.ui,org.eclipse.emf.common,org.eclipse.emf.common.ui,org.eclipse.emf.commonj.sdo,org.eclipse.emf.converter,org.eclipse.emf.doc,org.eclipse.emf.ecore,org.eclipse.emf.ecore.change,org.eclipse.emf.ecore.change.edit,org.eclipse.emf.ecore.edit,org.eclipse.emf.ecore.editor,org.eclipse.emf.ecore.sdo,org.eclipse.emf.ecore.sdo.doc,org.eclipse.emf.ecore.sdo.edit,org.eclipse.emf.ecore.sdo.editor,org.eclipse.emf.ecore.sdo.source,org.eclipse.emf.ecore.xmi,org.eclipse.emf.edit,org.eclipse.emf.edit.ui,org.eclipse.emf.exporter,org.eclipse.emf.importer,org.eclipse.emf.importer.ecore,org.eclipse.emf.importer.java,org.eclipse.emf.importer.rose,org.eclipse.emf.mapping,org.eclipse.emf.mapping.ecore2ecore,org.eclipse.emf.mapping.ecore2ecore.editor,org.eclipse.emf.mapping.ecore2xml,org.eclipse.emf.mapping.ecore2xml.ui,org.eclipse.emf.mapping.ui,org.eclipse.emf.mapping.xsd2ecore,org.eclipse.emf.mapping.xsd2ecore.editor,org.eclipse.emf.source,org.eclipse.equinox.app,org.eclipse.equinox.common,org.eclipse.equinox.http.jetty,org.eclipse.equinox.http.registry,org.eclipse.equinox.http.servlet,org.eclipse.equinox.jsp.jasper,org.eclipse.equinox.jsp.jasper.registry,org.eclipse.equinox.launcher,org.eclipse.equinox.launcher.win32.win32.x86,org.eclipse.equinox.preferences,org.eclipse.equinox.registry,org.eclipse.help,org.eclipse.help.appserver,org.eclipse.help.base,org.eclipse.help.ui,org.eclipse.help.webapp,org.eclipse.jdt,org.eclipse.jdt.compiler.apt,org.eclipse.jdt.compiler.tool,org.eclipse.jdt.core,org.eclipse.jdt.core.manipulation,org.eclipse.jdt.debug,org.eclipse.jdt.debug.ui,org.eclipse.jdt.doc.isv,org.eclipse.jdt.doc.user,org.eclipse.jdt.junit,org.eclipse.jdt.junit.runtime,org.eclipse.jdt.junit4.runtime,org.eclipse.jdt.launching,org.eclipse.jdt.source,org.eclipse.jdt.ui,org.eclipse.jface,org.eclipse.jface.databinding,org.eclipse.jface.text,org.eclipse.jsch.core,org.eclipse.ltk.core.refactoring,org.eclipse.ltk.ui.refactoring,org.eclipse.osgi,org.eclipse.osgi.services,org.eclipse.osgi.util,org.eclipse.pde,org.eclipse.pde.build,org.eclipse.pde.core,org.eclipse.pde.doc.user,org.eclipse.pde.junit.runtime,org.eclipse.pde.runtime,org.eclipse.pde.source,org.eclipse.pde.ui,org.eclipse.pde.ui.templates,org.eclipse.platform,org.eclipse.platform.doc.isv,org.eclipse.platform.source,org.eclipse.platform.source.win32.win32.x86,org.eclipse.rcp,org.eclipse.rcp.source,org.eclipse.rcp.source.win32.win32.x86,org.eclipse.sdk,org.eclipse.search,org.eclipse.swt,org.eclipse.swt.win32.win32.x86,org.eclipse.team.core,org.eclipse.team.cvs.core,org.eclipse.team.cvs.ssh,org.eclipse.team.cvs.ssh2,org.eclipse.team.cvs.ui,org.eclipse.team.ui,org.eclipse.text,org.eclipse.ui,org.eclipse.ui.browser,org.eclipse.ui.cheatsheets,org.eclipse.ui.console,org.eclipse.ui.editors,org.eclipse.ui.externaltools,org.eclipse.ui.forms,org.eclipse.ui.ide,org.eclipse.ui.ide.application,org.eclipse.ui.intro,org.eclipse.ui.intro.universal,org.eclipse.ui.navigator,org.eclipse.ui.navigator.resources,org.eclipse.ui.presentations.r21,org.eclipse.ui.views,org.eclipse.ui.views.properties.tabbed,org.eclipse.ui.win32,org.eclipse.ui.workbench,org.eclipse.ui.workbench.compatibility,org.eclipse.ui.workbench.texteditor,org.eclipse.update.configurator,org.eclipse.update.core,org.eclipse.update.core.win32,org.eclipse.update.scheduler,org.eclipse.update.ui,org.eclipse.xsd,org.eclipse.xsd.cheatsheets,org.eclipse.xsd.doc,org.eclipse.xsd.ecore.exporter,org.eclipse.xsd.ecore.importer,org.eclipse.xsd.edit,org.eclipse.xsd.editor,org.eclipse.xsd.source,org.junit,org.junit4,org.mortbay.jetty"/>
+<stringAttribute key="selected_workspace_plugins" value="org.eclipse.net4j.buddies.ui,org.eclipse.net4j.fileshare.ui,org.eclipse.ant.optional.junit,org.eclipse.net4j.buddies.chat,org.eclipse.net4j.util,org.eclipse.net4j.buddies.common,org.eclipse.net4j.buddies,org.eclipse.net4j.fileshare,org.eclipse.net4j.util.ui,org.eclipse.net4j.buddies.chat.ui,org.eclipse.net4j,org.eclipse.net4j.tcp,org.eclipse.net4j.ui"/>
+<stringAttribute key="templateConfig" value="${target_home}\configuration\config.ini"/>
+<booleanAttribute key="tracing" value="true"/>
+<mapAttribute key="tracingOptions">
+<mapEntry key="org.eclipse.core.runtime/debug/context" value="false"/>
+<mapEntry key="org.eclipse.core.jobs/jobs/beginend" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/completion" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/sources" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/indexmanager" value="false"/>
+<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/checkConditions" value="300"/>
+<mapEntry key="org.eclipse.emf.query.ocl/debug/exceptions/catching" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/extendededitoractionbuilder/debugtoolbar" value="false"/>
+<mapEntry key="org.eclipse.emf.transaction/debug/exceptions/catching" value="false"/>
+<mapEntry key="org.eclipse.jface.text.source/debug/RevisionRulerColumn" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/contexts" value="false"/>
+<mapEntry key="org.eclipse.wst.common.environment/trace/error" value="true"/>
+<mapEntry key="org.eclipse.debug.ui/debug/viewers/updateSequence" value="false"/>
+<mapEntry key="org.eclipse.wst.common.environment/trace/warning" value="true"/>
+<mapEntry key="org.eclipse.emf.validation/debug/exceptions/throwing" value="false"/>
+<mapEntry key="org.eclipse.osgi/trace/filename" value="runtime.traces"/>
+<mapEntry key="org.eclipse.wst.sse.ui/extendededitoractionbuilder" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies/debug.repository" value="true"/>
+<mapEntry key="org.eclipse.jdt.core/debug" value="true"/>
+<mapEntry key="org.eclipse.wst.sse.ui/actioncontributor/debugstatusfields" value="true"/>
+<mapEntry key="org.eclipse.debug.ui/debug/contextlaunching" value="false"/>
+<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug" value="false"/>
+<mapEntry key="org.eclipse.net4j.tcp/debug" value="true"/>
+<mapEntry key="org.eclipse.team.cvs.core/dirtycaching" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/javamodel" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/contentOutline" value="false"/>
+<mapEntry key="org.eclipse.emf.ocl/debug/exceptions/throwing" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/preferences-properties" value="false"/>
+<mapEntry key="org.eclipse.wtp.common/debug/logtrace" value="false"/>
+<mapEntry key="org.eclipse.ui.intro/trace/printHTML" value="false"/>
+<mapEntry key="org.eclipse.emf.query.ocl/debug" value="true"/>
+<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/createChanges" value="300"/>
+<mapEntry key="org.eclipse.wst.sse.core/tasks/detection" value="false"/>
+<mapEntry key="org.eclipse.net4j.util/debug.lifecycle.dump" value="true"/>
+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPerspectiveListener" value="false"/>
+<mapEntry key="org.eclipse.osgi/resolver/debug" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/propertySheet" value="false"/>
+<mapEntry key="org.eclipse.team.core/refreshjob" value="false"/>
+<mapEntry key="org.eclipse.ui/debug" value="false"/>
+<mapEntry key="org.eclipse.update.core/debug/installhandler" value="false"/>
+<mapEntry key="org.eclipse.wtp.common/debug/loglevel" value="WARNING"/>
+<mapEntry key="org.eclipse.help.ui/debug/infopop" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies/debug.session" value="true"/>
+<mapEntry key="org.eclipse.pde.core/classpath" value="false"/>
+<mapEntry key="org.eclipse.team.cvs.core/threading" value="false"/>
+<mapEntry key="org.eclipse.equinox.preferences/general" value="false"/>
+<mapEntry key="org.eclipse.net4j.jms.server/debug.store" value="true"/>
+<mapEntry key="org.eclipse.ui/trace/handlers.performance" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/format" value="false"/>
+<mapEntry key="org.eclipse.ocl/debug/evaluation" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/operations.verbose" value="false"/>
+<mapEntry key="org.eclipse.emf.validation/debug/constraints" value="false"/>
+<mapEntry key="org.eclipse.osgi/trace/activation" value="false"/>
+<mapEntry key="org.eclipse.ocl/debug/exceptions/catching" value="false"/>
+<mapEntry key="com.ibm.datatools.core.ui/modelExplorer/trace" value="true"/>
+<mapEntry key="org.eclipse.debug.core/debug/commands" value="false"/>
+<mapEntry key="org.eclipse.ui/perf/workbench.restore" value="30000"/>
+<mapEntry key="org.eclipse.team.core/threading" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/structureddocument" value="false"/>
+<mapEntry key="org.eclipse.emf.transaction/debug/methods/exiting" value="false"/>
+<mapEntry key="org.eclipse.update.core/debug/parsing" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/postaction" value="false"/>
+<mapEntry key="org.eclipse.ocl/debug" value="true"/>
+<mapEntry key="org.eclipse.ui/trace/graphics" value="false"/>
+<mapEntry key="org.eclipse.osgi/defaultprofile/logsynchronously" value="false"/>
+<mapEntry key="org.eclipse.net4j.db/debug" value="true"/>
+<mapEntry key="org.eclipse.emf.query/debug/exceptions/throwing" value="false"/>
+<mapEntry key="org.eclipse.wst.common.environment/trace/ws_dt_cmd_engine" value="true"/>
+<mapEntry key="org.eclipse.osgi/monitor/activation" value="false"/>
+<mapEntry key="org.eclipse.net4j.jms/debug.protocol" value="true"/>
+<mapEntry key="org.eclipse.wst.sse.ui/gotoNextAnnotation" value="false"/>
+<mapEntry key="org.eclipse.wst.common.project.facet.core/delegate/calls" value="false"/>
+<mapEntry key="org.eclipse.debug.ui/debug" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies.server/debug.types" value="true"/>
+<mapEntry key="org.eclipse.net4j.buddies/debug.protocol" value="true"/>
+<mapEntry key="org.eclipse.jdt.core/debug/buffermanager" value="false"/>
+<mapEntry key="org.eclipse.help.base/debug/search" value="false"/>
+<mapEntry key="org.eclipse.jface.text/debug/ContentAssistSubjectAdapters" value="false"/>
+<mapEntry key="org.eclipse.pde.build/debug" value="false"/>
+<mapEntry key="org.eclipse.wst.common.environment/trace/ws_ant" value="true"/>
+<mapEntry key="org.eclipse.jdt.ui/perf/search/participants" value="300"/>
+<mapEntry key="org.eclipse.emf.validation/debug/parsers" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/tasks/overalltime" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/structuredmodel/state" value="false"/>
+<mapEntry key="org.eclipse.ui/perf/perspective.create" value="800"/>
+<mapEntry key="org.eclipse.update.core/debug/type" value="false"/>
+<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin" value="false"/>
+<mapEntry key="org.eclipse.emf.workspace/debug/methods/exiting" value="false"/>
+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPropertyChangeListener" value="false"/>
+<mapEntry key="org.eclipse.osgi/resolver/generics" value="false"/>
+<mapEntry key="org.eclipse.wst.common.project.facet.core/actionSorting" value="false"/>
+<mapEntry key="com.ibm.datatools.core.ui/modelExplorerDecoration/trace" value="true"/>
+<mapEntry key="org.eclipse.osgi/resolver/requires" value="false"/>
+<mapEntry key="org.eclipse.emf.workspace/debug/exceptions/throwing" value="false"/>
+<mapEntry key="org.eclipse.core.resources/refresh" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/perf/containerinitializer" value="5000"/>
+<mapEntry key="org.eclipse.osgi/profile/benchmark" value="false"/>
+<mapEntry key="org.eclipse.jet/debug/builder" value="false"/>
+<mapEntry key="org.eclipse.help.webapp/debug" value="true"/>
+<mapEntry key="org.eclipse.jdt.ui/debug/ASTProvider" value="false"/>
+<mapEntry key="org.eclipse.osgi/debug" value="false"/>
+<mapEntry key="org.eclipse.emf.validation/debug/constraints/disabled" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/extendededitoractionbuilder/debugpopup" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/handlers" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/contexts.performance" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies/debug" value="true"/>
+<mapEntry key="org.eclipse.jem.util/debug/logtrace" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies.server/debug.resource" value="true"/>
+<mapEntry key="org.eclipse.team.cvs.core/metafiles" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/perf/completion" value="300"/>
+<mapEntry key="org.eclipse.osgi/profile/startup" value="false"/>
+<mapEntry key="org.eclipse.core.jobs/jobs" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/debug" value="true"/>
+<mapEntry key="org.eclipse.core.resources/perf/save.participants" value="500"/>
+<mapEntry key="org.eclipse.emf.query.ocl/debug/exceptions/throwing" value="false"/>
+<mapEntry key="org.eclipse.wst.common.environment/trace/info" value="true"/>
+<mapEntry key="org.eclipse.net4j/perf" value="false"/>
+<mapEntry key="org.eclipse.help.base/debug" value="true"/>
+<mapEntry key="org.eclipse.jet/debug/projectBundleLoading" value="false"/>
+<mapEntry key="org.eclipse.net4j/debug" value="true"/>
+<mapEntry key="org.eclipse.net4j/debug.signal" value="true"/>
+<mapEntry key="org.eclipse.emf.query/debug/methods/entering" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/structuredmodel/modelmanager" value="false"/>
+<mapEntry key="org.eclipse.core.jobs/jobs/timing" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/perf/reconcile" value="1000"/>
+<mapEntry key="com.ibm.datatools.core.ui/modelExplorer/log" value="true"/>
+<mapEntry key="org.eclipse.wst.sse.ui/extendededitoractionbuilder/debugmenu" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/filemodelprovider/modelstatelistener" value="false"/>
+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPageListener" value="false"/>
+<mapEntry key="org.eclipse.datatools.connectivity.sqm.core/debug" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/structuredmodel/lifecycle" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/tasks/job" value="false"/>
+<mapEntry key="org.eclipse.net4j/debug.buffer" value="false"/>
+<mapEntry key="org.eclipse.core.resources/contenttype/cache" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/extendedconfigurationbuilder" value="false"/>
+<mapEntry key="org.eclipse.update.core/debug/configuration" value="false"/>
+<mapEntry key="org.eclipse.core.jobs/jobs/locks" value="false"/>
+<mapEntry key="org.eclipse.wst.xml.core/debug/cmdocumentmanager" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/handlers.verbose.commandId" value=""/>
+<mapEntry key="org.eclipse.core.runtime/url/debug/connect" value="false"/>
+<mapEntry key="org.eclipse.ui.ide/debug" value="false"/>
+<mapEntry key="org.eclipse.osgi/profile/debug" value="false"/>
+<mapEntry key="org.eclipse.pde.core/debug" value="true"/>
+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPartReference" value="false"/>
+<mapEntry key="org.eclipse.jet/debug/traceTagExecution" value="false"/>
+<mapEntry key="org.eclipse.ui/debug/job.stale" value="false"/>
+<mapEntry key="org.eclipse.net4j.util/debug.registry" value="true"/>
+<mapEntry key="org.eclipse.jdt.ui/perf/explorer/createPartControl" value="1300"/>
+<mapEntry key="org.eclipse.jdt.core/debug/hierarchy" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/perf/variableinitializer" value="5000"/>
+<mapEntry key="org.eclipse.ui.ide/debug/internalerror/openDialog" value="false"/>
+<mapEntry key="org.eclipse.core.resources/strings" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/sourcemapper" value="false"/>
+<mapEntry key="org.eclipse.core.resources/save/mastertable" value="false"/>
+<mapEntry key="org.eclipse.core.expressions/tracePropertyResolving" value="false"/>
+<mapEntry key="org.eclipse.core.resources/preferences" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/javadelta" value="false"/>
+<mapEntry key="org.eclipse.ui/perf/showHeapStatus" value="true"/>
+<mapEntry key="org.eclipse.jdt.core/debug/selection" value="false"/>
+<mapEntry key="org.eclipse.emf.workspace/debug" value="true"/>
+<mapEntry key="org.eclipse.jdt.ui/perf/content_assist_sorters/extensions" value=""/>
+<mapEntry key="org.eclipse.jdt.core/debug/javamodel/cache" value="false"/>
+<mapEntry key="org.eclipse.wst.common.environment/trace/emitter" value="true"/>
+<mapEntry key="org.eclipse.net4j.buddies/debug.transaction" value="true"/>
+<mapEntry key="org.eclipse.osgi/defaultprofile/logfilename" value=""/>
+<mapEntry key="org.eclipse.team.core/backgroundevents" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/keyBindings" value="false"/>
+<mapEntry key="org.eclipse.ui/perf/part.activate" value="200"/>
+<mapEntry key="org.eclipse.emf.transaction/debug/transactions" value="false"/>
+<mapEntry key="org.eclipse.ocl/debug/parsing" value="false"/>
+<mapEntry key="org.eclipse.update.core/debug" value="true"/>
+<mapEntry key="org.eclipse.osgi/debug/security" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/tasks/preferences" value="false"/>
+<mapEntry key="org.eclipse.core.resources/restore/metainfo" value="false"/>
+<mapEntry key="org.eclipse.core.resources/build/needbuild" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies.server/debug.store" value="true"/>
+<mapEntry key="org.eclipse.core.resources/perf/builders" value="10000"/>
+<mapEntry key="org.eclipse.ui/perf/perspective.listeners" value="200"/>
+<mapEntry key="org.eclipse.net4j.jms.admin/debug.protocol" value="true"/>
+<mapEntry key="com.ibm.datatools.core.ui/debug" value="true"/>
+<mapEntry key="org.eclipse.ui/debug/showAllJobs" value="false"/>
+<mapEntry key="org.eclipse.core.resources/history" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/propertyChangeUpdateActionContributionItem" value="false"/>
+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/search" value="false"/>
+<mapEntry key="org.eclipse.team.cvs.core/cvsprotocol" value="true"/>
+<mapEntry key="org.eclipse.pde.core/validation" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/extendededitoractionbuilder/readtime" value="false"/>
+<mapEntry key="org.eclipse.jface.text/debug/AnnotationPainter" value="false"/>
+<mapEntry key="org.eclipse.core.resources/restore/mastertable" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/tasks" value="false"/>
+<mapEntry key="org.eclipse.core.runtime/debug" value="false"/>
+<mapEntry key="org.eclipse.equinox.preferences/set" value="false"/>
+<mapEntry key="org.eclipse.core.resources/restore/snapshots" value="false"/>
+<mapEntry key="org.eclipse.ui/perf/perspective.switch" value="800"/>
+<mapEntry key="org.eclipse.jet/debug/pluginBundleLoading" value="false"/>
+<mapEntry key="org.eclipse.wst.xml.core/debug/tracefilter" value=""/>
+<mapEntry key="org.eclipse.help.webapp/debug/workingsets" value="false"/>
+<mapEntry key="org.eclipse.osgi/debug/bundleTime" value="false"/>
+<mapEntry key="org.eclipse.core.resources/restore/markers" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies/debug.model" value="false"/>
+<mapEntry key="org.eclipse.emf.validation/debug/listeners" value="false"/>
+<mapEntry key="org.eclipse.ui/perf/workbench.start" value="45000"/>
+<mapEntry key="org.eclipse.core.runtime/url/debug/cachecopy" value="false"/>
+<mapEntry key="org.eclipse.core.runtime/perf/success" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies.server/debug.protocol" value="true"/>
+<mapEntry key="org.eclipse.net4j/debug.connector" value="true"/>
+<mapEntry key="org.eclipse.net4j.buddies/debug.util" value="true"/>
+<mapEntry key="org.eclipse.wst.dtd.ui/projectionperf" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/perf/selection" value="300"/>
+<mapEntry key="org.eclipse.osgi/debug/startlevel" value="false"/>
+<mapEntry key="org.eclipse.ocl/debug/methods/entering" value="false"/>
+<mapEntry key="org.eclipse.core.resources/restore" value="false"/>
+<mapEntry key="org.eclipse.jet/debug/additionalBundleLoading" value="false"/>
+<mapEntry key="org.eclipse.osgi/resolver/wiring" value="false"/>
+<mapEntry key="org.eclipse.core.resources/perf/snapshot" value="1000"/>
+<mapEntry key="org.eclipse.net4j.buddies.server/debug" value="true"/>
+<mapEntry key="org.eclipse.ui.intro/trace/logPerformance" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/contexts.verbose" value="false"/>
+<mapEntry key="org.eclipse.osgi/debug/loader" value="false"/>
+<mapEntry key="org.eclipse.osgi/resolver/grouping" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/debug/reconcilerjob" value="false"/>
+<mapEntry key="org.eclipse.jdt.ui/perf/explorer/makeActions" value="1000"/>
+<mapEntry key="org.eclipse.net4j/debug.acceptor" value="true"/>
+<mapEntry key="org.eclipse.net4j.buddies.ui/debug" value="true"/>
+<mapEntry key="org.eclipse.wst.sse.ui/debug/reconcilerSpelling/showProblems" value="false"/>
+<mapEntry key="org.eclipse.core.resources/save/markers" value="false"/>
+<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin/resolver" value="false"/>
+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener2" value="false"/>
+<mapEntry key="org.eclipse.net4j.jvm/debug" value="true"/>
+<mapEntry key="org.eclipse.wst.xml.core/debug/cmdocumentcache" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/operations" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/transferbuilder/time" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies.server/debug.session" value="true"/>
+<mapEntry key="org.eclipse.emf.validation/debug/cache" value="false"/>
+<mapEntry key="org.eclipse.update.core/debug/install" value="false"/>
+<mapEntry key="org.eclipse.equinox.registry/debug/events" value="false"/>
+<mapEntry key="org.eclipse.help/debug/protocols" value="false"/>
+<mapEntry key="org.eclipse.core.resources/save/metainfo" value="false"/>
+<mapEntry key="org.eclipse.net4j.util/debug.lifecycle" value="true"/>
+<mapEntry key="org.eclipse.emf.validation/debug/methods/entering" value="false"/>
+<mapEntry key="org.eclipse.ui/perf/contentTypes" value="200"/>
+<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser/inprocess" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/perf/javadeltalistener" value="500"/>
+<mapEntry key="org.eclipse.core.resources/perf/listeners" value="500"/>
+<mapEntry key="org.eclipse.jet/debug/savedState" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/tasks/registry" value="false"/>
+<mapEntry key="org.eclipse.ui/perf/part.init" value="800"/>
+<mapEntry key="org.eclipse.core.contenttype/debug" value="false"/>
+<mapEntry key="org.eclipse.osgi/resolver/imports" value="false"/>
+<mapEntry key="org.eclipse.core.resources/restore/tree" value="false"/>
+<mapEntry key="org.eclipse.ui.intro.universal/trace/logPerformance" value="false"/>
+<mapEntry key="org.eclipse.help/debug/context" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies/debug.object" value="true"/>
+<mapEntry key="org.eclipse.wst.sse.ui/debug/reconcilerValidators" value="false"/>
+<mapEntry key="org.eclipse.emf.validation/debug/xml" value="false"/>
+<mapEntry key="org.eclipse.osgi/debug/manifest" value="false"/>
+<mapEntry key="org.eclipse.jet/debug/bundleLoading" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/multipageeditor" value="false"/>
+<mapEntry key="org.eclipse.net4j.examples/debug" value="true"/>
+<mapEntry key="org.eclipse.emf.workspace/debug/exceptions/catching" value="false"/>
+<mapEntry key="org.eclipse.core.resources/build/needbuildstack" value="false"/>
+<mapEntry key="org.eclipse.ui/debug/swtdebug" value="false"/>
+<mapEntry key="org.eclipse.emf.query/debug/exceptions/catching" value="false"/>
+<mapEntry key="org.eclipse.core.resources/save/syncinfo" value="false"/>
+<mapEntry key="org.eclipse.wst.xml.core/debug" value="true"/>
+<mapEntry key="org.eclipse.emf.ocl/debug/methods/exiting" value="false"/>
+<mapEntry key="org.eclipse.team.cvs.ssh/debug" value="false"/>
+<mapEntry key="org.eclipse.core.resources/build/failure" value="false"/>
+<mapEntry key="org.eclipse.team.core/debug" value="false"/>
+<mapEntry key="org.eclipse.jet/debug" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/builder" value="false"/>
+<mapEntry key="org.eclipse.osgi/trace/classLoading" value="false"/>
+<mapEntry key="org.eclipse.net4j.jms.server.jdbc/debug" value="true"/>
+<mapEntry key="org.eclipse.wst.xml.ui/projectionperf" value="false"/>
+<mapEntry key="org.eclipse.core.jobs/jobs/errorondeadlock" value="false"/>
+<mapEntry key="org.eclipse.core.resources/save" value="false"/>
+<mapEntry key="org.eclipse.emf.transaction/debug/exceptions/throwing" value="false"/>
+<mapEntry key="org.eclipse.core.resources/contenttype" value="false"/>
+<mapEntry key="org.eclipse.jem.util/debug/loglevel" value="WARNING"/>
+<mapEntry key="org.eclipse.jface.text/debug/FastPartitioner/PositionCache" value="false"/>
+<mapEntry key="org.eclipse.emf.validation/debug/exceptions/catching" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/compiler" value="false"/>
+<mapEntry key="org.eclipse.osgi/debug/events" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/commands" value="false"/>
+<mapEntry key="org.eclipse.equinox.preferences/get" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/filemodelprovider/operations" value="false"/>
+<mapEntry key="org.eclipse.jdt.ui/debug/ResultCollector" value="false"/>
+<mapEntry key="org.eclipse.debug.ui/debug/launchhistory" value="false"/>
+<mapEntry key="org.eclipse.net4j.util/debug.om" value="true"/>
+<mapEntry key="org.eclipse.wst.sse.ui/extendededitoractionbuilder/contributetime" value="false"/>
+<mapEntry key="org.eclipse.net4j.jms.server/debug" value="true"/>
+<mapEntry key="org.eclipse.emf.workspace/debug/methods/entering" value="false"/>
+<mapEntry key="org.eclipse.emf.query.ocl/debug/methods/entering" value="false"/>
+<mapEntry key="org.eclipse.net4j.db.mysql/debug" value="true"/>
+<mapEntry key="org.eclipse.debug.ui/debug/viewers/model" value="false"/>
+<mapEntry key="org.eclipse.net4j.util/debug" value="true"/>
+<mapEntry key="org.eclipse.equinox.registry/debug" value="false"/>
+<mapEntry key="org.eclipse.wst.common.environment/trace/command" value="true"/>
+<mapEntry key="org.eclipse.ui.intro/debug" value="true"/>
+<mapEntry key="org.eclipse.emf.transaction/debug/locking" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/cpresolution/advanced" value="false"/>
+<mapEntry key="org.eclipse.net4j.jms/debug" value="true"/>
+<mapEntry key="org.eclipse.emf.validation/debug/providers" value="false"/>
+<mapEntry key="org.eclipse.osgi/eclipseadaptor/converter/debug" value="false"/>
+<mapEntry key="com.ibm.datatools.core.ui/plugin/log" value="true"/>
+<mapEntry key="org.eclipse.pde.core/cache" value="false"/>
+<mapEntry key="org.eclipse.emf.ocl/debug/exceptions/catching" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/extendedconfigurationbuilder/time" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/tasks/time" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/filemodelprovider/lifecyclelistener" value="false"/>
+<mapEntry key="org.eclipse.emf.query/debug/methods/exiting" value="false"/>
+<mapEntry key="org.eclipse.debug.core/debug/events" value="false"/>
+<mapEntry key="org.eclipse.net4j/debug.selector" value="true"/>
+<mapEntry key="org.eclipse.jdt.ui/debug" value="true"/>
+<mapEntry key="org.eclipse.net4j.db/debug.sql" value="true"/>
+<mapEntry key="org.eclipse.wst.sse.core/filebuffers/modelmanagement" value="false"/>
+<mapEntry key="org.eclipse.osgi/monitor/classes" value="false"/>
+<mapEntry key="org.eclipse.ui/perf/part.input" value="200"/>
+<mapEntry key="org.eclipse.wst.sse.ui/debug/tracefilter" value=""/>
+<mapEntry key="org.eclipse.wtp.common/debug/logtracefile" value="false"/>
+<mapEntry key="org.eclipse.jet/debug/ext/xpathFunctions" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies.server.db/debug" value="true"/>
+<mapEntry key="org.eclipse.emf.query/debug" value="true"/>
+<mapEntry key="org.eclipse.ui.intro.universal/debug" value="true"/>
+<mapEntry key="org.eclipse.jdt.ui/debug/TypeConstraints" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies/debug.adapter" value="true"/>
+<mapEntry key="org.eclipse.osgi/debug/messageBundles" value="false"/>
+<mapEntry key="org.eclipse.core.resources/build/invoking" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/javadelta/verbose" value="false"/>
+<mapEntry key="org.eclipse.net4j.util/debug.concurrency" value="true"/>
+<mapEntry key="org.eclipse.core.resources/save/tree" value="false"/>
+<mapEntry key="org.eclipse.ui/debug/contributions" value="false"/>
+<mapEntry key="org.eclipse.update.core/debug/warning" value="false"/>
+<mapEntry key="org.eclipse.core.resources/natures" value="false"/>
+<mapEntry key="org.eclipse.jdt.core.manipulation/debug" value="true"/>
+<mapEntry key="org.eclipse.net4j.jms.admin/debug" value="true"/>
+<mapEntry key="org.eclipse.jdt.core/debug/cpresolution" value="false"/>
+<mapEntry key="org.eclipse.wst.common.project.facet.core/activation" value="false"/>
+<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser" value="false"/>
+<mapEntry key="org.eclipse.team.cvs.ssh/ssh_protocol" value="false"/>
+<mapEntry key="org.eclipse.core.resources/build/stacktrace" value="false"/>
+<mapEntry key="org.eclipse.ui/perf/part.create" value="800"/>
+<mapEntry key="org.eclipse.ui.intro/trace/logInfo" value="true"/>
+<mapEntry key="org.eclipse.team.core/streams" value="false"/>
+<mapEntry key="org.eclipse.ui.ide/debug/undomonitor" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies/debug.view" value="true"/>
+<mapEntry key="org.eclipse.jdt.ui/perf/explorer/RefactorActionGroup" value="150"/>
+<mapEntry key="org.eclipse.net4j.ui/debug" value="true"/>
+<mapEntry key="org.eclipse.ui/experimental/menus" value="false"/>
+<mapEntry key="org.eclipse.core.jobs/jobs/shutdown" value="false"/>
+<mapEntry key="org.eclipse.osgi/debug/packageadmin" value="false"/>
+<mapEntry key="org.eclipse.core.runtime/compatibility/debug" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/storagemodelprovider/operations" value="false"/>
+<mapEntry key="org.eclipse.ui/debug/declaredImages" value="false"/>
+<mapEntry key="org.eclipse.update.core/debug/reconciler" value="false"/>
+<mapEntry key="org.eclipse.ui.ide/debug/gc" value="false"/>
+<mapEntry key="org.eclipse.debug.ui/debug/viewers/contentProvider" value="false"/>
+<mapEntry key="org.eclipse.emf.transaction/debug" value="true"/>
+<mapEntry key="org.eclipse.osgi/debug/services" value="false"/>
+<mapEntry key="org.eclipse.net4j.db.mysql/debug.sql" value="true"/>
+<mapEntry key="org.eclipse.datatools.connectivity/connectionprofileextension" value="false"/>
+<mapEntry key="org.eclipse.net4j.util.ui/debug" value="true"/>
+<mapEntry key="org.eclipse.net4j.buddies/debug.resource" value="true"/>
+<mapEntry key="org.eclipse.ui.workbench/debug" value="false"/>
+<mapEntry key="org.eclipse.jdt.ui/perf/content_assist/extensions" value="1000"/>
+<mapEntry key="org.eclipse.osgi/debug/filter" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies.common/debug" value="true"/>
+<mapEntry key="org.eclipse.debug.core/debug" value="false"/>
+<mapEntry key="org.eclipse.core.resources/debug" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/zipaccess" value="false"/>
+<mapEntry key="org.eclipse.jem.util/debug/logtracefile" value="false"/>
+<mapEntry key="org.eclipse.ui.browser/debug" value="false"/>
+<mapEntry key="org.eclipse.osgi/profile/impl" value="org.eclipse.osgi.internal.profile.DefaultProfileLogger"/>
+<mapEntry key="org.eclipse.net4j.jms.server/debug.protocol" value="true"/>
+<mapEntry key="org.eclipse.update.core/debug/web" value="false"/>
+<mapEntry key="org.eclipse.team.cvs.core/debug" value="false"/>
+<mapEntry key="org.eclipse.help/debug" value="true"/>
+<mapEntry key="org.eclipse.core.runtime/perf" value="false"/>
+<mapEntry key="org.eclipse.osgi/trace/filters" value="trace.properties"/>
+<mapEntry key="org.eclipse.emf.ocl/debug/methods/entering" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/dom/adapter/notification/time" value="false"/>
+<mapEntry key="org.eclipse.net4j/debug.channel" value="true"/>
+<mapEntry key="org.eclipse.ui/perf/part.listeners" value="200"/>
+<mapEntry key="org.eclipse.debug.ui/debug/viewers/viewer" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/dom/adapter/notification/time/criteria" value="10"/>
+<mapEntry key="org.eclipse.ui/trace/keyBindings.verbose" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies/debug.revision" value="true"/>
+<mapEntry key="org.eclipse.wst.common.environment/trace/data" value="true"/>
+<mapEntry key="org.eclipse.osgi/defaultprofile/buffersize" value="256"/>
+<mapEntry key="org.eclipse.core.resources/restore/syncinfo" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies.examples/debug" value="true"/>
+<mapEntry key="org.eclipse.team.cvs.core/syncchangeevents" value="false"/>
+<mapEntry key="org.eclipse.ui/perf/page.listeners" value="200"/>
+<mapEntry key="org.eclipse.ocl/debug/exceptions/throwing" value="false"/>
+<mapEntry key="org.eclipse.datatools.connectivity/debug" value="true"/>
+<mapEntry key="org.eclipse.jet/debug/modelLoaderExtensions" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/debug" value="true"/>
+<mapEntry key="org.eclipse.net4j.buddies.common/debug.protocol" value="true"/>
+<mapEntry key="org.eclipse.ui/trace/handlers.verbose" value="false"/>
+<mapEntry key="org.eclipse.emf.validation/debug" value="true"/>
+<mapEntry key="org.eclipse.wst.sse.ui/storagemodelprovider/elementstatelistener" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies.common/debug.revision" value="true"/>
+<mapEntry key="org.eclipse.net4j.buddies.server/debug.revision" value="false"/>
+<mapEntry key="org.eclipse.osgi/monitor/resources" value="false"/>
+<mapEntry key="com.ibm.datatools.core.ui/editor/log" value="true"/>
+<mapEntry key="org.eclipse.emf.validation/debug/constraints/evaluation" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies.common/debug.model" value="false"/>
+<mapEntry key="org.eclipse.jet/debug/xpath/compilations" value="false"/>
+<mapEntry key="org.eclipse.ui/perf/part.control" value="800"/>
+<mapEntry key="org.eclipse.net4j/debug.buffer.stream" value="false"/>
+<mapEntry key="org.eclipse.ui/perf/uijob" value="200"/>
+<mapEntry key="org.eclipse.core.runtime/url/debug/cachelookup" value="false"/>
+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener2" value="false"/>
+<mapEntry key="org.eclipse.core.resources/build/delta" value="false"/>
+<mapEntry key="org.eclipse.core.resources/build/interrupt" value="false"/>
+<mapEntry key="org.eclipse.jet/debug/pluginProjectMonitor" value="false"/>
+<mapEntry key="org.eclipse.emf.validation/debug/methods/exiting" value="false"/>
+<mapEntry key="org.eclipse.core.runtime/preferences/plugin" value="false"/>
+<mapEntry key="org.eclipse.core.runtime/url/debug" value="false"/>
+<mapEntry key="org.eclipse.osgi/resolver/cycles" value="false"/>
+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/filebuffers/lifecycle" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/structuredmodel/locks" value="true"/>
+<mapEntry key="org.eclipse.jdt.core/debug/resolution" value="false"/>
+<mapEntry key="org.eclipse.wst.common.environment/debug" value="true"/>
+<mapEntry key="org.eclipse.update.configurator/debug" value="false"/>
+<mapEntry key="org.eclipse.help.ui/debug" value="true"/>
+<mapEntry key="org.eclipse.debug.ui/debug/viewers/deltas" value="false"/>
+<mapEntry key="org.eclipse.emf.query.ocl/debug/methods/exiting" value="false"/>
+<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/location" value="false"/>
+<mapEntry key="org.eclipse.ocl/debug/methods/exiting" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/debug/reconcilerSpelling" value="false"/>
+<mapEntry key="org.eclipse.emf.transaction/debug/methods/entering" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies.server/debug.repository" value="true"/>
+<mapEntry key="org.eclipse.ui.intro.universal/trace/logInfo" value="true"/>
+<mapEntry key="org.eclipse.emf.ocl/debug" value="true"/>
+</mapAttribute>
+<booleanAttribute key="useDefaultConfig" value="true"/>
+<booleanAttribute key="useDefaultConfigArea" value="true"/>
+<booleanAttribute key="useNamedJRE" value="true"/>
+<booleanAttribute key="useProduct" value="true"/>
+<booleanAttribute key="usefeatures" value="false"/>
+</launchConfiguration>
diff --git a/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/BuddiesClient3.launch b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/BuddiesClient3.launch
new file mode 100644
index 0000000000..a1d4541ca1
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/BuddiesClient3.launch
@@ -0,0 +1,470 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.pde.ui.RuntimeWorkbench">
+<booleanAttribute key="askclear" value="true"/>
+<booleanAttribute key="automaticAdd" value="false"/>
+<booleanAttribute key="automaticValidate" value="false"/>
+<stringAttribute key="bootstrap" value=""/>
+<stringAttribute key="checked" value="org.eclipse.net4j,org.eclipse.net4j.buddies,org.eclipse.net4j.buddies.common,org.eclipse.net4j.buddies.ui,org.eclipse.net4j.tcp,org.eclipse.net4j.ui,org.eclipse.net4j.util,org.eclipse.net4j.util.ui"/>
+<booleanAttribute key="clearConfig" value="true"/>
+<booleanAttribute key="clearws" value="false"/>
+<booleanAttribute key="clearwslog" value="false"/>
+<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/BuddiesClient3"/>
+<booleanAttribute key="default" value="false"/>
+<booleanAttribute key="includeOptional" value="false"/>
+<stringAttribute key="location" value="${workspace_loc}/../buddies.client3"/>
+<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-nosplash&#13;&#10;-console"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dorg.aspectj.tracing.debug=false&#13;&#10;-Xms40m&#13;&#10;-Xmx512m"/>
+<stringAttribute key="pde.version" value="3.3"/>
+<stringAttribute key="product" value="org.eclipse.sdk.ide"/>
+<stringAttribute key="selectedPlugin" value="org.eclipse.net4j.buddies.common"/>
+<stringAttribute key="selected_target_plugins" value="com.ibm.icu,com.jcraft.jsch,javax.servlet,javax.servlet.jsp,org.apache.ant,org.apache.commons.el,org.apache.commons.logging,org.apache.jasper,org.apache.lucene,org.apache.lucene.analysis,org.eclipse.ant.core,org.eclipse.ant.ui,org.eclipse.compare,org.eclipse.core.boot,org.eclipse.core.commands,org.eclipse.core.contenttype,org.eclipse.core.databinding,org.eclipse.core.databinding.beans,org.eclipse.core.expressions,org.eclipse.core.filebuffers,org.eclipse.core.filesystem,org.eclipse.core.filesystem.win32.x86,org.eclipse.core.jobs,org.eclipse.core.net,org.eclipse.core.resources,org.eclipse.core.resources.compatibility,org.eclipse.core.resources.win32,org.eclipse.core.runtime,org.eclipse.core.runtime.compatibility,org.eclipse.core.runtime.compatibility.auth,org.eclipse.core.runtime.compatibility.registry,org.eclipse.core.variables,org.eclipse.cvs,org.eclipse.cvs.source,org.eclipse.debug.core,org.eclipse.debug.ui,org.eclipse.emf,org.eclipse.emf.ant,org.eclipse.emf.cheatsheets,org.eclipse.emf.codegen,org.eclipse.emf.codegen.ecore,org.eclipse.emf.codegen.ecore.ui,org.eclipse.emf.codegen.ui,org.eclipse.emf.common,org.eclipse.emf.common.ui,org.eclipse.emf.commonj.sdo,org.eclipse.emf.converter,org.eclipse.emf.doc,org.eclipse.emf.ecore,org.eclipse.emf.ecore.change,org.eclipse.emf.ecore.change.edit,org.eclipse.emf.ecore.edit,org.eclipse.emf.ecore.editor,org.eclipse.emf.ecore.sdo,org.eclipse.emf.ecore.sdo.doc,org.eclipse.emf.ecore.sdo.edit,org.eclipse.emf.ecore.sdo.editor,org.eclipse.emf.ecore.sdo.source,org.eclipse.emf.ecore.xmi,org.eclipse.emf.edit,org.eclipse.emf.edit.ui,org.eclipse.emf.exporter,org.eclipse.emf.importer,org.eclipse.emf.importer.ecore,org.eclipse.emf.importer.java,org.eclipse.emf.importer.rose,org.eclipse.emf.mapping,org.eclipse.emf.mapping.ecore2ecore,org.eclipse.emf.mapping.ecore2ecore.editor,org.eclipse.emf.mapping.ecore2xml,org.eclipse.emf.mapping.ecore2xml.ui,org.eclipse.emf.mapping.ui,org.eclipse.emf.mapping.xsd2ecore,org.eclipse.emf.mapping.xsd2ecore.editor,org.eclipse.emf.source,org.eclipse.equinox.app,org.eclipse.equinox.common,org.eclipse.equinox.http.jetty,org.eclipse.equinox.http.registry,org.eclipse.equinox.http.servlet,org.eclipse.equinox.jsp.jasper,org.eclipse.equinox.jsp.jasper.registry,org.eclipse.equinox.launcher,org.eclipse.equinox.launcher.win32.win32.x86,org.eclipse.equinox.preferences,org.eclipse.equinox.registry,org.eclipse.help,org.eclipse.help.appserver,org.eclipse.help.base,org.eclipse.help.ui,org.eclipse.help.webapp,org.eclipse.jdt,org.eclipse.jdt.compiler.apt,org.eclipse.jdt.compiler.tool,org.eclipse.jdt.core,org.eclipse.jdt.core.manipulation,org.eclipse.jdt.debug,org.eclipse.jdt.debug.ui,org.eclipse.jdt.doc.isv,org.eclipse.jdt.doc.user,org.eclipse.jdt.junit,org.eclipse.jdt.junit.runtime,org.eclipse.jdt.junit4.runtime,org.eclipse.jdt.launching,org.eclipse.jdt.source,org.eclipse.jdt.ui,org.eclipse.jface,org.eclipse.jface.databinding,org.eclipse.jface.text,org.eclipse.jsch.core,org.eclipse.ltk.core.refactoring,org.eclipse.ltk.ui.refactoring,org.eclipse.osgi,org.eclipse.osgi.services,org.eclipse.osgi.util,org.eclipse.pde,org.eclipse.pde.build,org.eclipse.pde.core,org.eclipse.pde.doc.user,org.eclipse.pde.junit.runtime,org.eclipse.pde.runtime,org.eclipse.pde.source,org.eclipse.pde.ui,org.eclipse.pde.ui.templates,org.eclipse.platform,org.eclipse.platform.doc.isv,org.eclipse.platform.source,org.eclipse.platform.source.win32.win32.x86,org.eclipse.rcp,org.eclipse.rcp.source,org.eclipse.rcp.source.win32.win32.x86,org.eclipse.sdk,org.eclipse.search,org.eclipse.swt,org.eclipse.swt.win32.win32.x86,org.eclipse.team.core,org.eclipse.team.cvs.core,org.eclipse.team.cvs.ssh,org.eclipse.team.cvs.ssh2,org.eclipse.team.cvs.ui,org.eclipse.team.ui,org.eclipse.text,org.eclipse.ui,org.eclipse.ui.browser,org.eclipse.ui.cheatsheets,org.eclipse.ui.console,org.eclipse.ui.editors,org.eclipse.ui.externaltools,org.eclipse.ui.forms,org.eclipse.ui.ide,org.eclipse.ui.ide.application,org.eclipse.ui.intro,org.eclipse.ui.intro.universal,org.eclipse.ui.navigator,org.eclipse.ui.navigator.resources,org.eclipse.ui.presentations.r21,org.eclipse.ui.views,org.eclipse.ui.views.properties.tabbed,org.eclipse.ui.win32,org.eclipse.ui.workbench,org.eclipse.ui.workbench.compatibility,org.eclipse.ui.workbench.texteditor,org.eclipse.update.configurator,org.eclipse.update.core,org.eclipse.update.core.win32,org.eclipse.update.scheduler,org.eclipse.update.ui,org.eclipse.xsd,org.eclipse.xsd.cheatsheets,org.eclipse.xsd.doc,org.eclipse.xsd.ecore.exporter,org.eclipse.xsd.ecore.importer,org.eclipse.xsd.edit,org.eclipse.xsd.editor,org.eclipse.xsd.source,org.junit,org.junit4,org.mortbay.jetty"/>
+<stringAttribute key="selected_workspace_plugins" value="org.eclipse.net4j.buddies.ui,org.eclipse.net4j.fileshare.ui,org.eclipse.ant.optional.junit,org.eclipse.net4j.buddies.chat,org.eclipse.net4j.util,org.eclipse.net4j.buddies.common,org.eclipse.net4j.buddies,org.eclipse.net4j.fileshare,org.eclipse.net4j.util.ui,org.eclipse.net4j.buddies.chat.ui,org.eclipse.net4j,org.eclipse.net4j.tcp,org.eclipse.net4j.ui"/>
+<stringAttribute key="templateConfig" value="${target_home}\configuration\config.ini"/>
+<booleanAttribute key="tracing" value="true"/>
+<mapAttribute key="tracingOptions">
+<mapEntry key="org.eclipse.core.runtime/debug/context" value="false"/>
+<mapEntry key="org.eclipse.core.jobs/jobs/beginend" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/completion" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/sources" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/indexmanager" value="false"/>
+<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/checkConditions" value="300"/>
+<mapEntry key="org.eclipse.emf.query.ocl/debug/exceptions/catching" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/extendededitoractionbuilder/debugtoolbar" value="false"/>
+<mapEntry key="org.eclipse.emf.transaction/debug/exceptions/catching" value="false"/>
+<mapEntry key="org.eclipse.jface.text.source/debug/RevisionRulerColumn" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/contexts" value="false"/>
+<mapEntry key="org.eclipse.wst.common.environment/trace/error" value="true"/>
+<mapEntry key="org.eclipse.debug.ui/debug/viewers/updateSequence" value="false"/>
+<mapEntry key="org.eclipse.wst.common.environment/trace/warning" value="true"/>
+<mapEntry key="org.eclipse.emf.validation/debug/exceptions/throwing" value="false"/>
+<mapEntry key="org.eclipse.osgi/trace/filename" value="runtime.traces"/>
+<mapEntry key="org.eclipse.wst.sse.ui/extendededitoractionbuilder" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies/debug.repository" value="true"/>
+<mapEntry key="org.eclipse.jdt.core/debug" value="true"/>
+<mapEntry key="org.eclipse.wst.sse.ui/actioncontributor/debugstatusfields" value="true"/>
+<mapEntry key="org.eclipse.debug.ui/debug/contextlaunching" value="false"/>
+<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug" value="false"/>
+<mapEntry key="org.eclipse.net4j.tcp/debug" value="true"/>
+<mapEntry key="org.eclipse.team.cvs.core/dirtycaching" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/javamodel" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/contentOutline" value="false"/>
+<mapEntry key="org.eclipse.emf.ocl/debug/exceptions/throwing" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/preferences-properties" value="false"/>
+<mapEntry key="org.eclipse.wtp.common/debug/logtrace" value="false"/>
+<mapEntry key="org.eclipse.ui.intro/trace/printHTML" value="false"/>
+<mapEntry key="org.eclipse.emf.query.ocl/debug" value="true"/>
+<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/createChanges" value="300"/>
+<mapEntry key="org.eclipse.wst.sse.core/tasks/detection" value="false"/>
+<mapEntry key="org.eclipse.net4j.util/debug.lifecycle.dump" value="true"/>
+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPerspectiveListener" value="false"/>
+<mapEntry key="org.eclipse.osgi/resolver/debug" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/propertySheet" value="false"/>
+<mapEntry key="org.eclipse.team.core/refreshjob" value="false"/>
+<mapEntry key="org.eclipse.ui/debug" value="false"/>
+<mapEntry key="org.eclipse.update.core/debug/installhandler" value="false"/>
+<mapEntry key="org.eclipse.wtp.common/debug/loglevel" value="WARNING"/>
+<mapEntry key="org.eclipse.help.ui/debug/infopop" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies/debug.session" value="true"/>
+<mapEntry key="org.eclipse.pde.core/classpath" value="false"/>
+<mapEntry key="org.eclipse.team.cvs.core/threading" value="false"/>
+<mapEntry key="org.eclipse.equinox.preferences/general" value="false"/>
+<mapEntry key="org.eclipse.net4j.jms.server/debug.store" value="true"/>
+<mapEntry key="org.eclipse.ui/trace/handlers.performance" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/format" value="false"/>
+<mapEntry key="org.eclipse.ocl/debug/evaluation" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/operations.verbose" value="false"/>
+<mapEntry key="org.eclipse.emf.validation/debug/constraints" value="false"/>
+<mapEntry key="org.eclipse.osgi/trace/activation" value="false"/>
+<mapEntry key="org.eclipse.ocl/debug/exceptions/catching" value="false"/>
+<mapEntry key="com.ibm.datatools.core.ui/modelExplorer/trace" value="true"/>
+<mapEntry key="org.eclipse.debug.core/debug/commands" value="false"/>
+<mapEntry key="org.eclipse.ui/perf/workbench.restore" value="30000"/>
+<mapEntry key="org.eclipse.team.core/threading" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/structureddocument" value="false"/>
+<mapEntry key="org.eclipse.emf.transaction/debug/methods/exiting" value="false"/>
+<mapEntry key="org.eclipse.update.core/debug/parsing" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/postaction" value="false"/>
+<mapEntry key="org.eclipse.ocl/debug" value="true"/>
+<mapEntry key="org.eclipse.ui/trace/graphics" value="false"/>
+<mapEntry key="org.eclipse.osgi/defaultprofile/logsynchronously" value="false"/>
+<mapEntry key="org.eclipse.net4j.db/debug" value="true"/>
+<mapEntry key="org.eclipse.emf.query/debug/exceptions/throwing" value="false"/>
+<mapEntry key="org.eclipse.wst.common.environment/trace/ws_dt_cmd_engine" value="true"/>
+<mapEntry key="org.eclipse.osgi/monitor/activation" value="false"/>
+<mapEntry key="org.eclipse.net4j.jms/debug.protocol" value="true"/>
+<mapEntry key="org.eclipse.wst.sse.ui/gotoNextAnnotation" value="false"/>
+<mapEntry key="org.eclipse.wst.common.project.facet.core/delegate/calls" value="false"/>
+<mapEntry key="org.eclipse.debug.ui/debug" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies.server/debug.types" value="true"/>
+<mapEntry key="org.eclipse.net4j.buddies/debug.protocol" value="true"/>
+<mapEntry key="org.eclipse.jdt.core/debug/buffermanager" value="false"/>
+<mapEntry key="org.eclipse.help.base/debug/search" value="false"/>
+<mapEntry key="org.eclipse.jface.text/debug/ContentAssistSubjectAdapters" value="false"/>
+<mapEntry key="org.eclipse.pde.build/debug" value="false"/>
+<mapEntry key="org.eclipse.wst.common.environment/trace/ws_ant" value="true"/>
+<mapEntry key="org.eclipse.jdt.ui/perf/search/participants" value="300"/>
+<mapEntry key="org.eclipse.emf.validation/debug/parsers" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/tasks/overalltime" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/structuredmodel/state" value="false"/>
+<mapEntry key="org.eclipse.ui/perf/perspective.create" value="800"/>
+<mapEntry key="org.eclipse.update.core/debug/type" value="false"/>
+<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin" value="false"/>
+<mapEntry key="org.eclipse.emf.workspace/debug/methods/exiting" value="false"/>
+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPropertyChangeListener" value="false"/>
+<mapEntry key="org.eclipse.osgi/resolver/generics" value="false"/>
+<mapEntry key="org.eclipse.wst.common.project.facet.core/actionSorting" value="false"/>
+<mapEntry key="com.ibm.datatools.core.ui/modelExplorerDecoration/trace" value="true"/>
+<mapEntry key="org.eclipse.osgi/resolver/requires" value="false"/>
+<mapEntry key="org.eclipse.emf.workspace/debug/exceptions/throwing" value="false"/>
+<mapEntry key="org.eclipse.core.resources/refresh" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/perf/containerinitializer" value="5000"/>
+<mapEntry key="org.eclipse.osgi/profile/benchmark" value="false"/>
+<mapEntry key="org.eclipse.jet/debug/builder" value="false"/>
+<mapEntry key="org.eclipse.help.webapp/debug" value="true"/>
+<mapEntry key="org.eclipse.jdt.ui/debug/ASTProvider" value="false"/>
+<mapEntry key="org.eclipse.osgi/debug" value="false"/>
+<mapEntry key="org.eclipse.emf.validation/debug/constraints/disabled" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/extendededitoractionbuilder/debugpopup" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/handlers" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/contexts.performance" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies/debug" value="true"/>
+<mapEntry key="org.eclipse.jem.util/debug/logtrace" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies.server/debug.resource" value="true"/>
+<mapEntry key="org.eclipse.team.cvs.core/metafiles" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/perf/completion" value="300"/>
+<mapEntry key="org.eclipse.osgi/profile/startup" value="false"/>
+<mapEntry key="org.eclipse.core.jobs/jobs" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/debug" value="true"/>
+<mapEntry key="org.eclipse.core.resources/perf/save.participants" value="500"/>
+<mapEntry key="org.eclipse.emf.query.ocl/debug/exceptions/throwing" value="false"/>
+<mapEntry key="org.eclipse.wst.common.environment/trace/info" value="true"/>
+<mapEntry key="org.eclipse.net4j/perf" value="false"/>
+<mapEntry key="org.eclipse.help.base/debug" value="true"/>
+<mapEntry key="org.eclipse.jet/debug/projectBundleLoading" value="false"/>
+<mapEntry key="org.eclipse.net4j/debug" value="true"/>
+<mapEntry key="org.eclipse.net4j/debug.signal" value="true"/>
+<mapEntry key="org.eclipse.emf.query/debug/methods/entering" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/structuredmodel/modelmanager" value="false"/>
+<mapEntry key="org.eclipse.core.jobs/jobs/timing" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/perf/reconcile" value="1000"/>
+<mapEntry key="com.ibm.datatools.core.ui/modelExplorer/log" value="true"/>
+<mapEntry key="org.eclipse.wst.sse.ui/extendededitoractionbuilder/debugmenu" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/filemodelprovider/modelstatelistener" value="false"/>
+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPageListener" value="false"/>
+<mapEntry key="org.eclipse.datatools.connectivity.sqm.core/debug" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/structuredmodel/lifecycle" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/tasks/job" value="false"/>
+<mapEntry key="org.eclipse.net4j/debug.buffer" value="false"/>
+<mapEntry key="org.eclipse.core.resources/contenttype/cache" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/extendedconfigurationbuilder" value="false"/>
+<mapEntry key="org.eclipse.update.core/debug/configuration" value="false"/>
+<mapEntry key="org.eclipse.core.jobs/jobs/locks" value="false"/>
+<mapEntry key="org.eclipse.wst.xml.core/debug/cmdocumentmanager" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/handlers.verbose.commandId" value=""/>
+<mapEntry key="org.eclipse.core.runtime/url/debug/connect" value="false"/>
+<mapEntry key="org.eclipse.ui.ide/debug" value="false"/>
+<mapEntry key="org.eclipse.osgi/profile/debug" value="false"/>
+<mapEntry key="org.eclipse.pde.core/debug" value="true"/>
+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPartReference" value="false"/>
+<mapEntry key="org.eclipse.jet/debug/traceTagExecution" value="false"/>
+<mapEntry key="org.eclipse.ui/debug/job.stale" value="false"/>
+<mapEntry key="org.eclipse.net4j.util/debug.registry" value="true"/>
+<mapEntry key="org.eclipse.jdt.ui/perf/explorer/createPartControl" value="1300"/>
+<mapEntry key="org.eclipse.jdt.core/debug/hierarchy" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/perf/variableinitializer" value="5000"/>
+<mapEntry key="org.eclipse.ui.ide/debug/internalerror/openDialog" value="false"/>
+<mapEntry key="org.eclipse.core.resources/strings" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/sourcemapper" value="false"/>
+<mapEntry key="org.eclipse.core.resources/save/mastertable" value="false"/>
+<mapEntry key="org.eclipse.core.expressions/tracePropertyResolving" value="false"/>
+<mapEntry key="org.eclipse.core.resources/preferences" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/javadelta" value="false"/>
+<mapEntry key="org.eclipse.ui/perf/showHeapStatus" value="true"/>
+<mapEntry key="org.eclipse.jdt.core/debug/selection" value="false"/>
+<mapEntry key="org.eclipse.emf.workspace/debug" value="true"/>
+<mapEntry key="org.eclipse.jdt.ui/perf/content_assist_sorters/extensions" value=""/>
+<mapEntry key="org.eclipse.jdt.core/debug/javamodel/cache" value="false"/>
+<mapEntry key="org.eclipse.wst.common.environment/trace/emitter" value="true"/>
+<mapEntry key="org.eclipse.net4j.buddies/debug.transaction" value="true"/>
+<mapEntry key="org.eclipse.osgi/defaultprofile/logfilename" value=""/>
+<mapEntry key="org.eclipse.team.core/backgroundevents" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/keyBindings" value="false"/>
+<mapEntry key="org.eclipse.ui/perf/part.activate" value="200"/>
+<mapEntry key="org.eclipse.emf.transaction/debug/transactions" value="false"/>
+<mapEntry key="org.eclipse.ocl/debug/parsing" value="false"/>
+<mapEntry key="org.eclipse.update.core/debug" value="true"/>
+<mapEntry key="org.eclipse.osgi/debug/security" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/tasks/preferences" value="false"/>
+<mapEntry key="org.eclipse.core.resources/restore/metainfo" value="false"/>
+<mapEntry key="org.eclipse.core.resources/build/needbuild" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies.server/debug.store" value="true"/>
+<mapEntry key="org.eclipse.core.resources/perf/builders" value="10000"/>
+<mapEntry key="org.eclipse.ui/perf/perspective.listeners" value="200"/>
+<mapEntry key="org.eclipse.net4j.jms.admin/debug.protocol" value="true"/>
+<mapEntry key="com.ibm.datatools.core.ui/debug" value="true"/>
+<mapEntry key="org.eclipse.ui/debug/showAllJobs" value="false"/>
+<mapEntry key="org.eclipse.core.resources/history" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/propertyChangeUpdateActionContributionItem" value="false"/>
+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/search" value="false"/>
+<mapEntry key="org.eclipse.team.cvs.core/cvsprotocol" value="true"/>
+<mapEntry key="org.eclipse.pde.core/validation" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/extendededitoractionbuilder/readtime" value="false"/>
+<mapEntry key="org.eclipse.jface.text/debug/AnnotationPainter" value="false"/>
+<mapEntry key="org.eclipse.core.resources/restore/mastertable" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/tasks" value="false"/>
+<mapEntry key="org.eclipse.core.runtime/debug" value="false"/>
+<mapEntry key="org.eclipse.equinox.preferences/set" value="false"/>
+<mapEntry key="org.eclipse.core.resources/restore/snapshots" value="false"/>
+<mapEntry key="org.eclipse.ui/perf/perspective.switch" value="800"/>
+<mapEntry key="org.eclipse.jet/debug/pluginBundleLoading" value="false"/>
+<mapEntry key="org.eclipse.wst.xml.core/debug/tracefilter" value=""/>
+<mapEntry key="org.eclipse.help.webapp/debug/workingsets" value="false"/>
+<mapEntry key="org.eclipse.osgi/debug/bundleTime" value="false"/>
+<mapEntry key="org.eclipse.core.resources/restore/markers" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies/debug.model" value="false"/>
+<mapEntry key="org.eclipse.emf.validation/debug/listeners" value="false"/>
+<mapEntry key="org.eclipse.ui/perf/workbench.start" value="45000"/>
+<mapEntry key="org.eclipse.core.runtime/url/debug/cachecopy" value="false"/>
+<mapEntry key="org.eclipse.core.runtime/perf/success" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies.server/debug.protocol" value="true"/>
+<mapEntry key="org.eclipse.net4j/debug.connector" value="true"/>
+<mapEntry key="org.eclipse.net4j.buddies/debug.util" value="true"/>
+<mapEntry key="org.eclipse.wst.dtd.ui/projectionperf" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/perf/selection" value="300"/>
+<mapEntry key="org.eclipse.osgi/debug/startlevel" value="false"/>
+<mapEntry key="org.eclipse.ocl/debug/methods/entering" value="false"/>
+<mapEntry key="org.eclipse.core.resources/restore" value="false"/>
+<mapEntry key="org.eclipse.jet/debug/additionalBundleLoading" value="false"/>
+<mapEntry key="org.eclipse.osgi/resolver/wiring" value="false"/>
+<mapEntry key="org.eclipse.core.resources/perf/snapshot" value="1000"/>
+<mapEntry key="org.eclipse.net4j.buddies.server/debug" value="true"/>
+<mapEntry key="org.eclipse.ui.intro/trace/logPerformance" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/contexts.verbose" value="false"/>
+<mapEntry key="org.eclipse.osgi/debug/loader" value="false"/>
+<mapEntry key="org.eclipse.osgi/resolver/grouping" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/debug/reconcilerjob" value="false"/>
+<mapEntry key="org.eclipse.jdt.ui/perf/explorer/makeActions" value="1000"/>
+<mapEntry key="org.eclipse.net4j/debug.acceptor" value="true"/>
+<mapEntry key="org.eclipse.net4j.buddies.ui/debug" value="true"/>
+<mapEntry key="org.eclipse.wst.sse.ui/debug/reconcilerSpelling/showProblems" value="false"/>
+<mapEntry key="org.eclipse.core.resources/save/markers" value="false"/>
+<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin/resolver" value="false"/>
+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener2" value="false"/>
+<mapEntry key="org.eclipse.net4j.jvm/debug" value="true"/>
+<mapEntry key="org.eclipse.wst.xml.core/debug/cmdocumentcache" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/operations" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/transferbuilder/time" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies.server/debug.session" value="true"/>
+<mapEntry key="org.eclipse.emf.validation/debug/cache" value="false"/>
+<mapEntry key="org.eclipse.update.core/debug/install" value="false"/>
+<mapEntry key="org.eclipse.equinox.registry/debug/events" value="false"/>
+<mapEntry key="org.eclipse.help/debug/protocols" value="false"/>
+<mapEntry key="org.eclipse.core.resources/save/metainfo" value="false"/>
+<mapEntry key="org.eclipse.net4j.util/debug.lifecycle" value="true"/>
+<mapEntry key="org.eclipse.emf.validation/debug/methods/entering" value="false"/>
+<mapEntry key="org.eclipse.ui/perf/contentTypes" value="200"/>
+<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser/inprocess" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/perf/javadeltalistener" value="500"/>
+<mapEntry key="org.eclipse.core.resources/perf/listeners" value="500"/>
+<mapEntry key="org.eclipse.jet/debug/savedState" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/tasks/registry" value="false"/>
+<mapEntry key="org.eclipse.ui/perf/part.init" value="800"/>
+<mapEntry key="org.eclipse.core.contenttype/debug" value="false"/>
+<mapEntry key="org.eclipse.osgi/resolver/imports" value="false"/>
+<mapEntry key="org.eclipse.core.resources/restore/tree" value="false"/>
+<mapEntry key="org.eclipse.ui.intro.universal/trace/logPerformance" value="false"/>
+<mapEntry key="org.eclipse.help/debug/context" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies/debug.object" value="true"/>
+<mapEntry key="org.eclipse.wst.sse.ui/debug/reconcilerValidators" value="false"/>
+<mapEntry key="org.eclipse.emf.validation/debug/xml" value="false"/>
+<mapEntry key="org.eclipse.osgi/debug/manifest" value="false"/>
+<mapEntry key="org.eclipse.jet/debug/bundleLoading" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/multipageeditor" value="false"/>
+<mapEntry key="org.eclipse.net4j.examples/debug" value="true"/>
+<mapEntry key="org.eclipse.emf.workspace/debug/exceptions/catching" value="false"/>
+<mapEntry key="org.eclipse.core.resources/build/needbuildstack" value="false"/>
+<mapEntry key="org.eclipse.ui/debug/swtdebug" value="false"/>
+<mapEntry key="org.eclipse.emf.query/debug/exceptions/catching" value="false"/>
+<mapEntry key="org.eclipse.core.resources/save/syncinfo" value="false"/>
+<mapEntry key="org.eclipse.wst.xml.core/debug" value="true"/>
+<mapEntry key="org.eclipse.emf.ocl/debug/methods/exiting" value="false"/>
+<mapEntry key="org.eclipse.team.cvs.ssh/debug" value="false"/>
+<mapEntry key="org.eclipse.core.resources/build/failure" value="false"/>
+<mapEntry key="org.eclipse.team.core/debug" value="false"/>
+<mapEntry key="org.eclipse.jet/debug" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/builder" value="false"/>
+<mapEntry key="org.eclipse.osgi/trace/classLoading" value="false"/>
+<mapEntry key="org.eclipse.net4j.jms.server.jdbc/debug" value="true"/>
+<mapEntry key="org.eclipse.wst.xml.ui/projectionperf" value="false"/>
+<mapEntry key="org.eclipse.core.jobs/jobs/errorondeadlock" value="false"/>
+<mapEntry key="org.eclipse.core.resources/save" value="false"/>
+<mapEntry key="org.eclipse.emf.transaction/debug/exceptions/throwing" value="false"/>
+<mapEntry key="org.eclipse.core.resources/contenttype" value="false"/>
+<mapEntry key="org.eclipse.jem.util/debug/loglevel" value="WARNING"/>
+<mapEntry key="org.eclipse.jface.text/debug/FastPartitioner/PositionCache" value="false"/>
+<mapEntry key="org.eclipse.emf.validation/debug/exceptions/catching" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/compiler" value="false"/>
+<mapEntry key="org.eclipse.osgi/debug/events" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/commands" value="false"/>
+<mapEntry key="org.eclipse.equinox.preferences/get" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/filemodelprovider/operations" value="false"/>
+<mapEntry key="org.eclipse.jdt.ui/debug/ResultCollector" value="false"/>
+<mapEntry key="org.eclipse.debug.ui/debug/launchhistory" value="false"/>
+<mapEntry key="org.eclipse.net4j.util/debug.om" value="true"/>
+<mapEntry key="org.eclipse.wst.sse.ui/extendededitoractionbuilder/contributetime" value="false"/>
+<mapEntry key="org.eclipse.net4j.jms.server/debug" value="true"/>
+<mapEntry key="org.eclipse.emf.workspace/debug/methods/entering" value="false"/>
+<mapEntry key="org.eclipse.emf.query.ocl/debug/methods/entering" value="false"/>
+<mapEntry key="org.eclipse.net4j.db.mysql/debug" value="true"/>
+<mapEntry key="org.eclipse.debug.ui/debug/viewers/model" value="false"/>
+<mapEntry key="org.eclipse.net4j.util/debug" value="true"/>
+<mapEntry key="org.eclipse.equinox.registry/debug" value="false"/>
+<mapEntry key="org.eclipse.wst.common.environment/trace/command" value="true"/>
+<mapEntry key="org.eclipse.ui.intro/debug" value="true"/>
+<mapEntry key="org.eclipse.emf.transaction/debug/locking" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/cpresolution/advanced" value="false"/>
+<mapEntry key="org.eclipse.net4j.jms/debug" value="true"/>
+<mapEntry key="org.eclipse.emf.validation/debug/providers" value="false"/>
+<mapEntry key="org.eclipse.osgi/eclipseadaptor/converter/debug" value="false"/>
+<mapEntry key="com.ibm.datatools.core.ui/plugin/log" value="true"/>
+<mapEntry key="org.eclipse.pde.core/cache" value="false"/>
+<mapEntry key="org.eclipse.emf.ocl/debug/exceptions/catching" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/extendedconfigurationbuilder/time" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/tasks/time" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/filemodelprovider/lifecyclelistener" value="false"/>
+<mapEntry key="org.eclipse.emf.query/debug/methods/exiting" value="false"/>
+<mapEntry key="org.eclipse.debug.core/debug/events" value="false"/>
+<mapEntry key="org.eclipse.net4j/debug.selector" value="true"/>
+<mapEntry key="org.eclipse.jdt.ui/debug" value="true"/>
+<mapEntry key="org.eclipse.net4j.db/debug.sql" value="true"/>
+<mapEntry key="org.eclipse.wst.sse.core/filebuffers/modelmanagement" value="false"/>
+<mapEntry key="org.eclipse.osgi/monitor/classes" value="false"/>
+<mapEntry key="org.eclipse.ui/perf/part.input" value="200"/>
+<mapEntry key="org.eclipse.wst.sse.ui/debug/tracefilter" value=""/>
+<mapEntry key="org.eclipse.wtp.common/debug/logtracefile" value="false"/>
+<mapEntry key="org.eclipse.jet/debug/ext/xpathFunctions" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies.server.db/debug" value="true"/>
+<mapEntry key="org.eclipse.emf.query/debug" value="true"/>
+<mapEntry key="org.eclipse.ui.intro.universal/debug" value="true"/>
+<mapEntry key="org.eclipse.jdt.ui/debug/TypeConstraints" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies/debug.adapter" value="true"/>
+<mapEntry key="org.eclipse.osgi/debug/messageBundles" value="false"/>
+<mapEntry key="org.eclipse.core.resources/build/invoking" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/javadelta/verbose" value="false"/>
+<mapEntry key="org.eclipse.net4j.util/debug.concurrency" value="true"/>
+<mapEntry key="org.eclipse.core.resources/save/tree" value="false"/>
+<mapEntry key="org.eclipse.ui/debug/contributions" value="false"/>
+<mapEntry key="org.eclipse.update.core/debug/warning" value="false"/>
+<mapEntry key="org.eclipse.core.resources/natures" value="false"/>
+<mapEntry key="org.eclipse.jdt.core.manipulation/debug" value="true"/>
+<mapEntry key="org.eclipse.net4j.jms.admin/debug" value="true"/>
+<mapEntry key="org.eclipse.jdt.core/debug/cpresolution" value="false"/>
+<mapEntry key="org.eclipse.wst.common.project.facet.core/activation" value="false"/>
+<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser" value="false"/>
+<mapEntry key="org.eclipse.team.cvs.ssh/ssh_protocol" value="false"/>
+<mapEntry key="org.eclipse.core.resources/build/stacktrace" value="false"/>
+<mapEntry key="org.eclipse.ui/perf/part.create" value="800"/>
+<mapEntry key="org.eclipse.ui.intro/trace/logInfo" value="true"/>
+<mapEntry key="org.eclipse.team.core/streams" value="false"/>
+<mapEntry key="org.eclipse.ui.ide/debug/undomonitor" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies/debug.view" value="true"/>
+<mapEntry key="org.eclipse.jdt.ui/perf/explorer/RefactorActionGroup" value="150"/>
+<mapEntry key="org.eclipse.net4j.ui/debug" value="true"/>
+<mapEntry key="org.eclipse.ui/experimental/menus" value="false"/>
+<mapEntry key="org.eclipse.core.jobs/jobs/shutdown" value="false"/>
+<mapEntry key="org.eclipse.osgi/debug/packageadmin" value="false"/>
+<mapEntry key="org.eclipse.core.runtime/compatibility/debug" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/storagemodelprovider/operations" value="false"/>
+<mapEntry key="org.eclipse.ui/debug/declaredImages" value="false"/>
+<mapEntry key="org.eclipse.update.core/debug/reconciler" value="false"/>
+<mapEntry key="org.eclipse.ui.ide/debug/gc" value="false"/>
+<mapEntry key="org.eclipse.debug.ui/debug/viewers/contentProvider" value="false"/>
+<mapEntry key="org.eclipse.emf.transaction/debug" value="true"/>
+<mapEntry key="org.eclipse.osgi/debug/services" value="false"/>
+<mapEntry key="org.eclipse.net4j.db.mysql/debug.sql" value="true"/>
+<mapEntry key="org.eclipse.datatools.connectivity/connectionprofileextension" value="false"/>
+<mapEntry key="org.eclipse.net4j.util.ui/debug" value="true"/>
+<mapEntry key="org.eclipse.net4j.buddies/debug.resource" value="true"/>
+<mapEntry key="org.eclipse.ui.workbench/debug" value="false"/>
+<mapEntry key="org.eclipse.jdt.ui/perf/content_assist/extensions" value="1000"/>
+<mapEntry key="org.eclipse.osgi/debug/filter" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies.common/debug" value="true"/>
+<mapEntry key="org.eclipse.debug.core/debug" value="false"/>
+<mapEntry key="org.eclipse.core.resources/debug" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/zipaccess" value="false"/>
+<mapEntry key="org.eclipse.jem.util/debug/logtracefile" value="false"/>
+<mapEntry key="org.eclipse.ui.browser/debug" value="false"/>
+<mapEntry key="org.eclipse.osgi/profile/impl" value="org.eclipse.osgi.internal.profile.DefaultProfileLogger"/>
+<mapEntry key="org.eclipse.net4j.jms.server/debug.protocol" value="true"/>
+<mapEntry key="org.eclipse.update.core/debug/web" value="false"/>
+<mapEntry key="org.eclipse.team.cvs.core/debug" value="false"/>
+<mapEntry key="org.eclipse.help/debug" value="true"/>
+<mapEntry key="org.eclipse.core.runtime/perf" value="false"/>
+<mapEntry key="org.eclipse.osgi/trace/filters" value="trace.properties"/>
+<mapEntry key="org.eclipse.emf.ocl/debug/methods/entering" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/dom/adapter/notification/time" value="false"/>
+<mapEntry key="org.eclipse.net4j/debug.channel" value="true"/>
+<mapEntry key="org.eclipse.ui/perf/part.listeners" value="200"/>
+<mapEntry key="org.eclipse.debug.ui/debug/viewers/viewer" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/dom/adapter/notification/time/criteria" value="10"/>
+<mapEntry key="org.eclipse.ui/trace/keyBindings.verbose" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies/debug.revision" value="true"/>
+<mapEntry key="org.eclipse.wst.common.environment/trace/data" value="true"/>
+<mapEntry key="org.eclipse.osgi/defaultprofile/buffersize" value="256"/>
+<mapEntry key="org.eclipse.core.resources/restore/syncinfo" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies.examples/debug" value="true"/>
+<mapEntry key="org.eclipse.team.cvs.core/syncchangeevents" value="false"/>
+<mapEntry key="org.eclipse.ui/perf/page.listeners" value="200"/>
+<mapEntry key="org.eclipse.ocl/debug/exceptions/throwing" value="false"/>
+<mapEntry key="org.eclipse.datatools.connectivity/debug" value="true"/>
+<mapEntry key="org.eclipse.jet/debug/modelLoaderExtensions" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/debug" value="true"/>
+<mapEntry key="org.eclipse.net4j.buddies.common/debug.protocol" value="true"/>
+<mapEntry key="org.eclipse.ui/trace/handlers.verbose" value="false"/>
+<mapEntry key="org.eclipse.emf.validation/debug" value="true"/>
+<mapEntry key="org.eclipse.wst.sse.ui/storagemodelprovider/elementstatelistener" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies.common/debug.revision" value="true"/>
+<mapEntry key="org.eclipse.net4j.buddies.server/debug.revision" value="false"/>
+<mapEntry key="org.eclipse.osgi/monitor/resources" value="false"/>
+<mapEntry key="com.ibm.datatools.core.ui/editor/log" value="true"/>
+<mapEntry key="org.eclipse.emf.validation/debug/constraints/evaluation" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies.common/debug.model" value="false"/>
+<mapEntry key="org.eclipse.jet/debug/xpath/compilations" value="false"/>
+<mapEntry key="org.eclipse.ui/perf/part.control" value="800"/>
+<mapEntry key="org.eclipse.net4j/debug.buffer.stream" value="false"/>
+<mapEntry key="org.eclipse.ui/perf/uijob" value="200"/>
+<mapEntry key="org.eclipse.core.runtime/url/debug/cachelookup" value="false"/>
+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener2" value="false"/>
+<mapEntry key="org.eclipse.core.resources/build/delta" value="false"/>
+<mapEntry key="org.eclipse.core.resources/build/interrupt" value="false"/>
+<mapEntry key="org.eclipse.jet/debug/pluginProjectMonitor" value="false"/>
+<mapEntry key="org.eclipse.emf.validation/debug/methods/exiting" value="false"/>
+<mapEntry key="org.eclipse.core.runtime/preferences/plugin" value="false"/>
+<mapEntry key="org.eclipse.core.runtime/url/debug" value="false"/>
+<mapEntry key="org.eclipse.osgi/resolver/cycles" value="false"/>
+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/filebuffers/lifecycle" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/structuredmodel/locks" value="true"/>
+<mapEntry key="org.eclipse.jdt.core/debug/resolution" value="false"/>
+<mapEntry key="org.eclipse.wst.common.environment/debug" value="true"/>
+<mapEntry key="org.eclipse.update.configurator/debug" value="false"/>
+<mapEntry key="org.eclipse.help.ui/debug" value="true"/>
+<mapEntry key="org.eclipse.debug.ui/debug/viewers/deltas" value="false"/>
+<mapEntry key="org.eclipse.emf.query.ocl/debug/methods/exiting" value="false"/>
+<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/location" value="false"/>
+<mapEntry key="org.eclipse.ocl/debug/methods/exiting" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/debug/reconcilerSpelling" value="false"/>
+<mapEntry key="org.eclipse.emf.transaction/debug/methods/entering" value="false"/>
+<mapEntry key="org.eclipse.net4j.buddies.server/debug.repository" value="true"/>
+<mapEntry key="org.eclipse.ui.intro.universal/trace/logInfo" value="true"/>
+<mapEntry key="org.eclipse.emf.ocl/debug" value="true"/>
+</mapAttribute>
+<booleanAttribute key="useDefaultConfig" value="true"/>
+<booleanAttribute key="useDefaultConfigArea" value="false"/>
+<booleanAttribute key="useNamedJRE" value="true"/>
+<booleanAttribute key="useProduct" value="true"/>
+<booleanAttribute key="usefeatures" value="false"/>
+</launchConfiguration>
diff --git a/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000..7a2b1016b1
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,27 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.net4j.buddies.ui;singleton:=true
+Bundle-Version: 4.0.100.qualifier
+Bundle-Activator: org.eclipse.net4j.buddies.internal.ui.bundle.OM$Activator
+Bundle-Vendor: %providerName
+Bundle-ClassPath: .
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
+ org.eclipse.ui;bundle-version="[3.4.0,4.0.0)";visibility:=reexport,
+ org.eclipse.ui.ide;bundle-version="[3.4.0,4.0.0)";visibility:=reexport,
+ org.eclipse.net4j;bundle-version="[4.0.0,5.0.0)";visibility:=reexport,
+ org.eclipse.net4j.util.ui;bundle-version="[3.0.0,4.0.0)";visibility:=reexport,
+ org.eclipse.net4j.buddies;bundle-version="[4.0.0,5.0.0)";visibility:=reexport,
+ org.eclipse.net4j.buddies.chat;bundle-version="[4.0.0,5.0.0)";resolution:=optional,
+ org.eclipse.net4j.ui.shared;bundle-version="[4.0.0,5.0.0)"
+Export-Package: org.eclipse.net4j.buddies.internal.ui;version="4.0.100",
+ org.eclipse.net4j.buddies.internal.ui.actions;version="4.0.100",
+ org.eclipse.net4j.buddies.internal.ui.bundle;version="4.0.100";x-internal:=true,
+ org.eclipse.net4j.buddies.internal.ui.dnd;version="4.0.100",
+ org.eclipse.net4j.buddies.internal.ui.messages;version="4.0.100";x-internal:=true,
+ org.eclipse.net4j.buddies.internal.ui.preferences;version="4.0.100",
+ org.eclipse.net4j.buddies.internal.ui.views;version="4.0.100",
+ org.eclipse.net4j.buddies.ui;version="4.0.100"
+Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/about.html b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/about.html
new file mode 100644
index 0000000000..d35d5aed64
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/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.net4j.examples.installer/examples/buddies.ui/build.properties b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/build.properties
new file mode 100644
index 0000000000..5255e7b72a
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/build.properties
@@ -0,0 +1,25 @@
+# Copyright (c) 2004 - 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
+
+# NLS_MESSAGEFORMAT_VAR
+
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ plugin.properties,\
+ .options,\
+ copyright.txt,\
+ about.html,\
+ schema/
+src.includes = about.html,\
+ copyright.txt
+
+generateSourceReferences = true
diff --git a/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/copyright.txt b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/copyright.txt
new file mode 100644
index 0000000000..0a0f67e6d7
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/copyright.txt
@@ -0,0 +1,8 @@
+Copyright (c) 2004 - 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 \ No newline at end of file
diff --git a/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/plugin.properties b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/plugin.properties
new file mode 100644
index 0000000000..a56ee5159c
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/plugin.properties
@@ -0,0 +1,17 @@
+# Copyright (c) 2004 - 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
+
+pluginName = Net4j Buddies UI
+providerName = Eclipse Modeling Project
+
+page.name = Buddies
+category.name = Net4j Buddies
+view.name = Buddies
+view.name.0 = Collaborations
+extension-point.name = Facility Pane Creators \ No newline at end of file
diff --git a/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/plugin.xml b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/plugin.xml
new file mode 100644
index 0000000000..454eeb23f5
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/plugin.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<!--
+ Copyright (c) 2004 - 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
+-->
+
+<plugin>
+
+ <extension-point id="facilityPaneCreators" name="%extension-point.name" schema="schema/facilityPaneCreators.exsd"/>
+
+ <extension
+ point="org.eclipse.ui.preferencePages">
+ <page
+ class="org.eclipse.net4j.buddies.internal.ui.preferences.BuddiesPreferencePage"
+ id="org.eclipse.net4j.buddies.ui.preferences.BuddiesPreferencePage"
+ name="%page.name">
+ </page>
+ </extension>
+
+ <extension
+ point="org.eclipse.ui.views">
+ <category
+ id="org.eclipse.net4j.buddies"
+ name="%category.name"/>
+ <view
+ category="org.eclipse.net4j.buddies"
+ class="org.eclipse.net4j.buddies.internal.ui.views.BuddiesView"
+ icon="platform:/plugin/org.eclipse.net4j.ui.shared/icons/full/view16/buddies_view.gif"
+ id="org.eclipse.net4j.BuddiesView"
+ name="%view.name"/>
+ <view
+ category="org.eclipse.net4j.buddies"
+ class="org.eclipse.net4j.buddies.internal.ui.views.CollaborationsView"
+ icon="platform:/plugin/org.eclipse.net4j.ui.shared/icons/full/view16/collaborations_view.gif"
+ id="org.eclipse.net4j.CollaborationsView"
+ name="%view.name.0"/>
+ </extension>
+
+ <extension
+ point="org.eclipse.ui.perspectiveExtensions">
+ <perspectiveExtension
+ targetID="org.eclipse.ui.resourcePerspective">
+ <view
+ id="org.eclipse.net4j.BuddiesView"
+ ratio="1"
+ relationship="stack"
+ relative="org.eclipse.ui.views.ContentOutline">
+ </view>
+ </perspectiveExtension>
+ </extension>
+
+</plugin>
diff --git a/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/schema/facilityPaneCreators.exsd b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/schema/facilityPaneCreators.exsd
new file mode 100644
index 0000000000..0d7295632f
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/schema/facilityPaneCreators.exsd
@@ -0,0 +1,128 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.net4j.buddies.ui">
+<annotation>
+ <appInfo>
+ <meta.schema plugin="org.eclipse.net4j.buddies.ui" id="facilityPaneCreators" name="Facility Pane Creators"/>
+ </appInfo>
+ <documentation>
+ [Enter description of this extension point.]
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <complexType>
+ <sequence>
+ <element ref="facilityPaneCreator" minOccurs="1" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute translatable="true"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="facilityPaneCreator">
+ <annotation>
+ <appInfo>
+ <meta.element labelAttribute="type" icon="icon"/>
+ </appInfo>
+ </annotation>
+ <complexType>
+ <attribute name="type" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="class" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="java" basedOn=":org.eclipse.net4j.buddies.ui.IFacilityPaneCreator"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ <attribute name="icon" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="resource"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="since"/>
+ </appInfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="examples"/>
+ </appInfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="apiInfo"/>
+ </appInfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="implementation"/>
+ </appInfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="copyright"/>
+ </appinfo>
+ <documentation>
+ Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.&lt;br&gt;
+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 &lt;a href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;
+ </documentation>
+ </annotation>
+
+</schema>
diff --git a/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/AbstractItemProvider.java b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/AbstractItemProvider.java
new file mode 100644
index 0000000000..381ec467a3
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/AbstractItemProvider.java
@@ -0,0 +1,237 @@
+/*
+ * Copyright (c) 2004 - 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.net4j.buddies.internal.ui;
+
+import org.eclipse.net4j.buddies.IBuddyCollaboration;
+import org.eclipse.net4j.buddies.common.IBuddy;
+import org.eclipse.net4j.buddies.common.ICollaboration;
+import org.eclipse.net4j.buddies.common.IMembership;
+import org.eclipse.net4j.buddies.internal.ui.messages.Messages;
+import org.eclipse.net4j.ui.shared.SharedIcons;
+import org.eclipse.net4j.util.container.IContainer;
+import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
+import org.eclipse.net4j.util.ui.UIUtil;
+import org.eclipse.net4j.util.ui.actions.LongRunningAction;
+import org.eclipse.net4j.util.ui.actions.SafeAction;
+import org.eclipse.net4j.util.ui.views.ContainerItemProvider;
+import org.eclipse.net4j.util.ui.views.ContainerView;
+import org.eclipse.net4j.util.ui.views.IElementFilter;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.viewers.ITreeSelection;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.Image;
+
+/**
+ * @author Eike Stepper
+ */
+public abstract class AbstractItemProvider extends ContainerItemProvider<IContainer<Object>>
+{
+ public static final Color GRAY = UIUtil.getDisplay().getSystemColor(SWT.COLOR_GRAY);
+
+ private Font bold;
+
+ public AbstractItemProvider()
+ {
+ }
+
+ public AbstractItemProvider(IElementFilter rootElementFilter)
+ {
+ super(rootElementFilter);
+ }
+
+ @Override
+ public void dispose()
+ {
+ UIUtil.dispose(bold);
+ super.dispose();
+ }
+
+ public Font getBold()
+ {
+ return bold;
+ }
+
+ @Override
+ protected Node createNode(Node parent, Object element)
+ {
+ if (element instanceof IMembership)
+ {
+ IMembership membership = (IMembership)element;
+ return createMembershipNode(parent, membership);
+ }
+
+ return super.createNode(parent, element);
+ }
+
+ protected abstract Node createMembershipNode(Node parent, IMembership membership);
+
+ @Override
+ public String getText(Object obj)
+ {
+ if (obj instanceof IBuddy)
+ {
+ IBuddy buddy = (IBuddy)obj;
+ return buddy.getUserID();
+ }
+
+ if (obj instanceof ICollaboration)
+ {
+ ICollaboration collaboration = (ICollaboration)obj;
+ return collaboration.getTitle();
+ }
+
+ if (obj instanceof IMembership)
+ {
+ IMembership membership = (IMembership)obj;
+ return getText(membership);
+ }
+
+ return super.getText(obj);
+ }
+
+ protected abstract String getText(IMembership membership);
+
+ @Override
+ public Image getImage(Object obj)
+ {
+ if (obj instanceof IBuddy)
+ {
+ IBuddy buddy = (IBuddy)obj;
+ switch (buddy.getState())
+ {
+ case AVAILABLE:
+ return SharedIcons.getImage(SharedIcons.OBJ_BUDDY);
+
+ case LONESOME:
+ return SharedIcons.getImage(SharedIcons.OBJ_BUDDY_LONESOME);
+
+ case AWAY:
+ return SharedIcons.getImage(SharedIcons.OBJ_BUDDY_AWAY);
+
+ case DO_NOT_DISTURB:
+ return SharedIcons.getImage(SharedIcons.OBJ_BUDDY_DO_NOT_DISTURB);
+ }
+ }
+
+ if (obj instanceof ICollaboration)
+ {
+ return SharedIcons.getImage(SharedIcons.OBJ_COLLABORATION);
+ }
+
+ if (obj instanceof IMembership)
+ {
+ IMembership membership = (IMembership)obj;
+ return getImage(membership);
+ }
+
+ return super.getImage(obj);
+ }
+
+ protected abstract Image getImage(IMembership membership);
+
+ @Override
+ public Color getForeground(Object obj)
+ {
+ if (obj instanceof IBuddy)
+ {
+ IBuddy buddy = (IBuddy)obj;
+ switch (buddy.getState())
+ {
+ case AWAY:
+ case DO_NOT_DISTURB:
+ return GRAY;
+ }
+ }
+
+ return super.getForeground(obj);
+ }
+
+ @Override
+ public Font getFont(Object obj)
+ {
+ if (obj instanceof IBuddy)
+ {
+ IBuddy buddy = (IBuddy)obj;
+ switch (buddy.getState())
+ {
+ case LONESOME:
+ return bold;
+ }
+ }
+
+ return super.getFont(obj);
+ }
+
+ @Override
+ protected void fillContextMenu(IMenuManager manager, ITreeSelection selection)
+ {
+ manager.add(new Separator());
+ if (selection.size() == 1)
+ {
+ Object obj = selection.getFirstElement();
+ if (obj instanceof IBuddy)
+ {
+ manager.add(new RemoveAction(obj));
+ }
+ else if (obj instanceof IBuddyCollaboration)
+ {
+ final IBuddyCollaboration collaboration = (IBuddyCollaboration)obj;
+ manager.add(new SafeAction(
+ Messages.getString("AbstractItemProvider.0"), Messages.getString("AbstractItemProvider.1")) //$NON-NLS-1$ //$NON-NLS-2$
+ {
+ @Override
+ protected void safeRun() throws Exception
+ {
+ collaboration.leave();
+ }
+ });
+ }
+ }
+ }
+
+ @Override
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
+ {
+ UIUtil.dispose(bold);
+ super.inputChanged(viewer, oldInput, newInput);
+ bold = UIUtil.getBoldFont(getViewer().getControl());
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ public class RemoveAction extends LongRunningAction
+ {
+ private Object object;
+
+ public RemoveAction(Object object)
+ {
+ super(
+ Messages.getString("AbstractItemProvider.2"), Messages.getString("AbstractItemProvider.3"), ContainerView.getDeleteImageDescriptor()); //$NON-NLS-1$ //$NON-NLS-2$
+ this.object = object;
+ }
+
+ /**
+ * @since 2.0
+ */
+ @Override
+ protected void doRun(IProgressMonitor progressMonitor) throws Exception
+ {
+ LifecycleUtil.deactivateNoisy(object);
+ }
+ }
+}
diff --git a/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/BuddiesContentProvider.java b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/BuddiesContentProvider.java
new file mode 100644
index 0000000000..bbb50a79c6
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/BuddiesContentProvider.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2004 - 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.net4j.buddies.internal.ui;
+
+import org.eclipse.net4j.buddies.common.IBuddyContainer;
+import org.eclipse.net4j.util.ui.StructuredContentProvider;
+
+/**
+ * @author Eike Stepper
+ */
+public class BuddiesContentProvider extends StructuredContentProvider<IBuddyContainer>
+{
+ public BuddiesContentProvider()
+ {
+ }
+
+ public Object[] getElements(Object inputElement)
+ {
+ return getInput().getElements();
+ }
+
+ @Override
+ protected void connectInput(IBuddyContainer input)
+ {
+ input.addListener(this);
+ }
+
+ @Override
+ protected void disconnectInput(IBuddyContainer input)
+ {
+ input.removeListener(this);
+ }
+}
diff --git a/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/BuddiesItemProvider.java b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/BuddiesItemProvider.java
new file mode 100644
index 0000000000..9a9d66545b
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/BuddiesItemProvider.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2004 - 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.net4j.buddies.internal.ui;
+
+import org.eclipse.net4j.buddies.common.IMembership;
+import org.eclipse.net4j.util.ui.views.IElementFilter;
+
+import org.eclipse.swt.graphics.Image;
+
+/**
+ * @author Eike Stepper
+ */
+public class BuddiesItemProvider extends AbstractItemProvider
+{
+ public BuddiesItemProvider()
+ {
+ }
+
+ public BuddiesItemProvider(IElementFilter rootElementFilter)
+ {
+ super(rootElementFilter);
+ }
+
+ @Override
+ protected Node createMembershipNode(Node parent, IMembership membership)
+ {
+ return createLeafNode(parent, membership);
+ }
+
+ @Override
+ protected String getText(IMembership membership)
+ {
+ return getText(membership.getCollaboration());
+ }
+
+ @Override
+ protected Image getImage(IMembership membership)
+ {
+ return getImage(membership.getCollaboration());
+ }
+}
diff --git a/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/ChatInstaller.java b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/ChatInstaller.java
new file mode 100644
index 0000000000..a6b7184bff
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/ChatInstaller.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2004 - 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.net4j.buddies.internal.ui;
+
+import org.eclipse.net4j.buddies.IBuddyCollaboration;
+import org.eclipse.net4j.buddies.chat.IChat;
+
+/**
+ * @author Eike Stepper
+ */
+public final class ChatInstaller
+{
+ private ChatInstaller()
+ {
+ }
+
+ public static void installChat(IBuddyCollaboration collaboration)
+ {
+ collaboration.installFacility(IChat.TYPE);
+ }
+}
diff --git a/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/CollaborationsContentProvider.java b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/CollaborationsContentProvider.java
new file mode 100644
index 0000000000..5d508835ae
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/CollaborationsContentProvider.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2004 - 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.net4j.buddies.internal.ui;
+
+import org.eclipse.net4j.buddies.common.ICollaborationContainer;
+import org.eclipse.net4j.util.ui.StructuredContentProvider;
+
+/**
+ * @author Eike Stepper
+ */
+public class CollaborationsContentProvider extends StructuredContentProvider<ICollaborationContainer>
+{
+ public CollaborationsContentProvider()
+ {
+ }
+
+ public Object[] getElements(Object inputElement)
+ {
+ return getInput().getElements();
+ }
+
+ @Override
+ protected void connectInput(ICollaborationContainer input)
+ {
+ input.addListener(this);
+ }
+
+ @Override
+ protected void disconnectInput(ICollaborationContainer input)
+ {
+ input.removeListener(this);
+ }
+}
diff --git a/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/CollaborationsItemProvider.java b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/CollaborationsItemProvider.java
new file mode 100644
index 0000000000..c453e89f0f
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/CollaborationsItemProvider.java
@@ -0,0 +1,141 @@
+/*
+ * Copyright (c) 2004 - 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.net4j.buddies.internal.ui;
+
+import org.eclipse.net4j.buddies.common.ICollaboration;
+import org.eclipse.net4j.buddies.common.IMembership;
+import org.eclipse.net4j.internal.buddies.Self;
+import org.eclipse.net4j.util.event.IEvent;
+import org.eclipse.net4j.util.event.IListener;
+import org.eclipse.net4j.util.lifecycle.ILifecycleEvent;
+import org.eclipse.net4j.util.ui.views.IElementFilter;
+
+import org.eclipse.swt.graphics.Image;
+
+import java.util.Collection;
+
+/**
+ * @author Eike Stepper
+ */
+public class CollaborationsItemProvider extends AbstractItemProvider
+{
+ public CollaborationsItemProvider()
+ {
+ }
+
+ public CollaborationsItemProvider(IElementFilter rootElementFilter)
+ {
+ super(rootElementFilter);
+ }
+
+ @Override
+ protected Node createNode(Node parent, Object element)
+ {
+ if (element instanceof Self)
+ {
+ return new SelfNode((Self)element);
+ }
+
+ if (element instanceof IMembership)
+ {
+ IMembership membership = (IMembership)element;
+ if (membership.getBuddy() instanceof Self)
+ {
+ return null;
+ }
+ }
+
+ return super.createNode(parent, element);
+ }
+
+ @Override
+ protected Node createMembershipNode(Node parent, IMembership membership)
+ {
+ return createLeafNode(parent, membership);
+ }
+
+ @Override
+ protected String getText(IMembership membership)
+ {
+ return getText(membership.getBuddy());
+ }
+
+ @Override
+ protected Image getImage(IMembership membership)
+ {
+ return getImage(membership.getBuddy());
+ }
+
+ /**
+ * @since 4.0
+ */
+ @Override
+ public void refreshElement(Object element, boolean updateLabels)
+ {
+ super.refreshElement(null, updateLabels);
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ private class SelfNode extends AbstractContainerNode implements IListener
+ {
+ private Self self;
+
+ public SelfNode(Self self)
+ {
+ super(null);
+ this.self = self;
+ }
+
+ @Override
+ public void dispose()
+ {
+ if (!isDisposed())
+ {
+ self.removeListener(containerListener);
+ super.dispose();
+ }
+ }
+
+ public Self getElement()
+ {
+ return self;
+ }
+
+ public void notifyEvent(IEvent event)
+ {
+ IMembership membership = (IMembership)event.getSource();
+ if (event instanceof ILifecycleEvent)
+ {
+ ILifecycleEvent e = (ILifecycleEvent)event;
+ if (e.getKind() == ILifecycleEvent.Kind.DEACTIVATED)
+ {
+ membership.removeListener(this);
+ ICollaboration collaboration = membership.getCollaboration();
+ Node node = getNode(collaboration);
+ if (node != null)
+ {
+ node.dispose();
+ }
+ }
+ }
+ }
+
+ @Override
+ protected Node addChild(Collection<Node> children, Object element)
+ {
+ IMembership membership = (IMembership)element;
+ membership.addListener(this);
+ return super.addChild(children, membership.getCollaboration());
+ }
+ }
+}
diff --git a/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/MembershipItemProvider.java b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/MembershipItemProvider.java
new file mode 100644
index 0000000000..f472653fff
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/MembershipItemProvider.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2004 - 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.net4j.buddies.internal.ui;
+
+import org.eclipse.net4j.buddies.common.IMembership;
+import org.eclipse.net4j.util.ui.views.IElementFilter;
+
+import org.eclipse.swt.graphics.Image;
+
+/**
+ * @author Eike Stepper
+ */
+public class MembershipItemProvider extends AbstractItemProvider
+{
+ public MembershipItemProvider()
+ {
+ }
+
+ public MembershipItemProvider(IElementFilter rootElementFilter)
+ {
+ super(rootElementFilter);
+ }
+
+ @Override
+ protected Node createMembershipNode(Node parent, IMembership membership)
+ {
+ return createContaineNode(parent, membership);
+ }
+
+ @Override
+ protected String getText(IMembership membership)
+ {
+ return getText(membership.getBuddy()) + "(" + getText(membership.getCollaboration()) + ")"; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ @Override
+ protected Image getImage(IMembership membership)
+ {
+ return null;
+ }
+}
diff --git a/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/actions/ConnectAction.java b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/actions/ConnectAction.java
new file mode 100644
index 0000000000..fdd917d9f6
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/actions/ConnectAction.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2004 - 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.net4j.buddies.internal.ui.actions;
+
+import org.eclipse.net4j.buddies.ISessionManager;
+import org.eclipse.net4j.buddies.internal.ui.messages.Messages;
+import org.eclipse.net4j.util.ui.actions.SafeAction;
+
+/**
+ * @author Eike Stepper
+ */
+public final class ConnectAction extends SafeAction
+{
+ public ConnectAction()
+ {
+ super(Messages.getString("ConnectAction_0"), Messages.getString("ConnectAction_1")); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ @Override
+ protected void safeRun() throws Exception
+ {
+ ISessionManager.INSTANCE.connect();
+ }
+}
diff --git a/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/actions/DisconnectAction.java b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/actions/DisconnectAction.java
new file mode 100644
index 0000000000..e23b486a7d
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/actions/DisconnectAction.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2004 - 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.net4j.buddies.internal.ui.actions;
+
+import org.eclipse.net4j.buddies.ISessionManager;
+import org.eclipse.net4j.buddies.internal.ui.messages.Messages;
+import org.eclipse.net4j.util.ui.actions.SafeAction;
+
+/**
+ * @author Eike Stepper
+ */
+public final class DisconnectAction extends SafeAction
+{
+ public DisconnectAction()
+ {
+ super(Messages.getString("DisconnectAction_0"), Messages.getString("DisconnectAction_1")); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ @Override
+ protected void safeRun() throws Exception
+ {
+ ISessionManager.INSTANCE.disconnect();
+ }
+}
diff --git a/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/actions/FlashAction.java b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/actions/FlashAction.java
new file mode 100644
index 0000000000..41bed59617
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/actions/FlashAction.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2004 - 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.net4j.buddies.internal.ui.actions;
+
+import org.eclipse.net4j.buddies.ISessionManager;
+import org.eclipse.net4j.buddies.internal.ui.messages.Messages;
+import org.eclipse.net4j.util.ui.actions.SafeAction;
+
+/**
+ * @author Eike Stepper
+ */
+public final class FlashAction extends SafeAction
+{
+ public FlashAction()
+ {
+ super(Messages.getString("FlashAction_0"), Messages.getString("FlashAction_1")); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ @Override
+ protected void safeRun() throws Exception
+ {
+ ISessionManager.INSTANCE.flashMe();
+ }
+}
diff --git a/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/actions/ReconnectAction.java b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/actions/ReconnectAction.java
new file mode 100644
index 0000000000..25aafd30fd
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/actions/ReconnectAction.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2004 - 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.net4j.buddies.internal.ui.actions;
+
+import org.eclipse.net4j.buddies.ISessionManager;
+import org.eclipse.net4j.buddies.internal.ui.messages.Messages;
+import org.eclipse.net4j.util.ui.actions.SafeAction;
+
+/**
+ * @author Eike Stepper
+ */
+public final class ReconnectAction extends SafeAction
+{
+ public ReconnectAction()
+ {
+ super(Messages.getString("ReconnectAction_0"), Messages.getString("ReconnectAction_1")); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ @Override
+ protected void safeRun() throws Exception
+ {
+ ISessionManager.INSTANCE.disconnect();
+ ISessionManager.INSTANCE.connect();
+ }
+}
diff --git a/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/actions/StateAction.java b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/actions/StateAction.java
new file mode 100644
index 0000000000..d0d98384ac
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/actions/StateAction.java
@@ -0,0 +1,190 @@
+/*
+ * Copyright (c) 2004 - 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.net4j.buddies.internal.ui.actions;
+
+import org.eclipse.net4j.buddies.IBuddySession;
+import org.eclipse.net4j.buddies.ISessionManager;
+import org.eclipse.net4j.buddies.common.IBuddy.State;
+import org.eclipse.net4j.buddies.internal.ui.messages.Messages;
+import org.eclipse.net4j.internal.buddies.Self;
+import org.eclipse.net4j.ui.shared.SharedIcons;
+import org.eclipse.net4j.util.ui.actions.SafeAction;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.ActionContributionItem;
+import org.eclipse.jface.action.IMenuCreator;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Menu;
+
+import java.text.MessageFormat;
+
+/**
+ * @author Eike Stepper
+ */
+public class StateAction extends SafeAction
+{
+ private State state;
+
+ public StateAction(String text, State state, String key)
+ {
+ super(text, Action.AS_RADIO_BUTTON);
+ setToolTipText(MessageFormat.format(Messages.getString("StateAction_0"), text.toLowerCase())); //$NON-NLS-1$
+ setImageDescriptor(SharedIcons.getDescriptor(key));
+ this.state = state;
+ }
+
+ public void updateState()
+ {
+ IBuddySession session = ISessionManager.INSTANCE.getSession();
+ setEnabled(session != null);
+ setChecked(session != null && session.getSelf().getState() == state);
+ }
+
+ @Override
+ protected void safeRun() throws Exception
+ {
+ IBuddySession session = ISessionManager.INSTANCE.getSession();
+ if (session != null && isChecked())
+ {
+ Self self = (Self)session.getSelf();
+ self.setState(state);
+ }
+ }
+
+ public static class DropDownAction extends Action implements IMenuCreator
+ {
+ private Menu fMenu;
+
+ private StateAction availableAction = new AvailableAction();
+
+ private StateAction lonesomeAction = new LonesomeAction();
+
+ private StateAction awayAction = new AwayAction();
+
+ private StateAction doNotDisturbAction = new DoNotDisturbAction();
+
+ public DropDownAction()
+ {
+ setText(Messages.getString("StateAction_2")); //$NON-NLS-1$
+ setMenuCreator(this);
+ }
+
+ public void dispose()
+ {
+ if (fMenu != null)
+ {
+ fMenu.dispose();
+ fMenu = null;
+ }
+ }
+
+ public void updateState()
+ {
+ availableAction.updateState();
+ lonesomeAction.updateState();
+ awayAction.updateState();
+ doNotDisturbAction.updateState();
+
+ IBuddySession session = ISessionManager.INSTANCE.getSession();
+ if (session != null)
+ {
+ setEnabled(true);
+ State state = session.getSelf().getState();
+ switch (state)
+ {
+ case AVAILABLE:
+ setImageDescriptor(availableAction.getImageDescriptor());
+ break;
+
+ case LONESOME:
+ setImageDescriptor(lonesomeAction.getImageDescriptor());
+ break;
+
+ case AWAY:
+ setImageDescriptor(awayAction.getImageDescriptor());
+ break;
+
+ case DO_NOT_DISTURB:
+ setImageDescriptor(doNotDisturbAction.getImageDescriptor());
+ break;
+ }
+ }
+ else
+ {
+ setImageDescriptor(awayAction.getImageDescriptor());
+ setEnabled(false);
+ }
+ }
+
+ public Menu getMenu(Control parent)
+ {
+ if (fMenu != null)
+ {
+ fMenu.dispose();
+ }
+
+ fMenu = new Menu(parent);
+ addActionToMenu(fMenu, availableAction);
+ addActionToMenu(fMenu, lonesomeAction);
+ addActionToMenu(fMenu, awayAction);
+ addActionToMenu(fMenu, doNotDisturbAction);
+ return fMenu;
+ }
+
+ public Menu getMenu(Menu parent)
+ {
+ return null;
+ }
+
+ @Override
+ public void run()
+ {
+ }
+
+ protected void addActionToMenu(Menu parent, Action action)
+ {
+ ActionContributionItem item = new ActionContributionItem(action);
+ item.fill(parent, -1);
+ }
+ }
+
+ public static final class AvailableAction extends StateAction
+ {
+ public AvailableAction()
+ {
+ super(Messages.getString("StateAction_3"), State.AVAILABLE, SharedIcons.OBJ_BUDDY); //$NON-NLS-1$
+ }
+ }
+
+ public static final class LonesomeAction extends StateAction
+ {
+ public LonesomeAction()
+ {
+ super(Messages.getString("StateAction_4"), State.LONESOME, SharedIcons.OBJ_BUDDY_LONESOME); //$NON-NLS-1$
+ }
+ }
+
+ public static final class AwayAction extends StateAction
+ {
+ public AwayAction()
+ {
+ super(Messages.getString("StateAction_5"), State.AWAY, SharedIcons.OBJ_BUDDY_AWAY); //$NON-NLS-1$
+ }
+ }
+
+ public static final class DoNotDisturbAction extends StateAction
+ {
+ public DoNotDisturbAction()
+ {
+ super(Messages.getString("StateAction_6"), State.DO_NOT_DISTURB, SharedIcons.OBJ_BUDDY_DO_NOT_DISTURB); //$NON-NLS-1$
+ }
+ }
+}
diff --git a/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/bundle/OM.java b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/bundle/OM.java
new file mode 100644
index 0000000000..14cabc5e87
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/bundle/OM.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2004 - 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.net4j.buddies.internal.ui.bundle;
+
+import org.eclipse.net4j.internal.buddies.SessionManager;
+import org.eclipse.net4j.util.om.OMBundle;
+import org.eclipse.net4j.util.om.OMPlatform;
+import org.eclipse.net4j.util.om.log.OMLogger;
+import org.eclipse.net4j.util.om.trace.OMTracer;
+import org.eclipse.net4j.util.ui.UIActivator;
+
+/**
+ * The <em>Operations & Maintenance</em> class of this bundle.
+ *
+ * @author Eike Stepper
+ */
+public abstract class OM
+{
+ public static final String BUNDLE_ID = "org.eclipse.net4j.buddies.ui"; //$NON-NLS-1$
+
+ public static final String EXT_POINT = "facilityPaneCreators"; //$NON-NLS-1$
+
+ public static final OMBundle BUNDLE = OMPlatform.INSTANCE.bundle(BUNDLE_ID, OM.class);
+
+ public static final OMTracer DEBUG = BUNDLE.tracer("debug"); //$NON-NLS-1$
+
+ public static final OMLogger LOG = BUNDLE.logger();
+
+ /**
+ * @author Eike Stepper
+ */
+ public static final class Activator extends UIActivator
+ {
+ public Activator()
+ {
+ super(BUNDLE);
+ }
+
+ @Override
+ protected void doStart() throws Exception
+ {
+ SessionManager.INSTANCE.activate();
+ }
+
+ @Override
+ protected void doStop() throws Exception
+ {
+ SessionManager.INSTANCE.deactivate();
+ }
+ }
+}
diff --git a/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/dnd/BuddiesTransfer.java b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/dnd/BuddiesTransfer.java
new file mode 100644
index 0000000000..e7d4a84e0a
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/dnd/BuddiesTransfer.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (c) 2004 - 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.net4j.buddies.internal.ui.dnd;
+
+import org.eclipse.net4j.buddies.IBuddySession;
+import org.eclipse.net4j.buddies.common.IBuddy;
+import org.eclipse.net4j.buddies.internal.ui.bundle.OM;
+import org.eclipse.net4j.buddies.internal.ui.messages.Messages;
+import org.eclipse.net4j.internal.buddies.SessionManager;
+import org.eclipse.net4j.util.io.ExtendedDataInputStream;
+import org.eclipse.net4j.util.io.ExtendedDataOutputStream;
+import org.eclipse.net4j.util.ui.dnd.DNDTransfer;
+
+import java.io.IOException;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author Eike Stepper
+ */
+public class BuddiesTransfer extends DNDTransfer<IBuddy[]>
+{
+ public static final String TYPE_NAME = "buddies-transfer-format"; //$NON-NLS-1$
+
+ public static final BuddiesTransfer INSTANCE = new BuddiesTransfer();
+
+ public BuddiesTransfer()
+ {
+ super(TYPE_NAME);
+ }
+
+ @Override
+ protected void writeObject(ExtendedDataOutputStream out, IBuddy[] buddies) throws IOException
+ {
+ out.writeInt(buddies.length);
+ for (IBuddy buddy : buddies)
+ {
+ out.writeString(buddy.getUserID());
+ }
+ }
+
+ @Override
+ protected IBuddy[] readObject(ExtendedDataInputStream in) throws IOException
+ {
+ IBuddySession session = SessionManager.INSTANCE.getSession();
+ if (session == null)
+ {
+ OM.LOG.warn(Messages.getString("BuddiesTransfer_1")); //$NON-NLS-1$
+ return null;
+ }
+
+ List<IBuddy> buddies = new ArrayList<IBuddy>();
+ int size = in.readInt();
+ for (int i = 0; i < size; i++)
+ {
+ String userID = in.readString();
+ IBuddy buddy = session.getBuddy(userID);
+ if (buddy != null)
+ {
+ buddies.add(buddy);
+ }
+ else
+ {
+ OM.LOG.warn(MessageFormat.format(Messages.getString("BuddiesTransfer_2"), userID)); //$NON-NLS-1$
+ }
+ }
+
+ return buddies.toArray(new IBuddy[buddies.size()]);
+ }
+}
diff --git a/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/messages/Messages.java b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/messages/Messages.java
new file mode 100644
index 0000000000..6d44ae2178
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/messages/Messages.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2004 - 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:
+ * Victor Roldan Betancort - initial API and implementation
+ * Eike Stepper - maintenance
+ */
+package org.eclipse.net4j.buddies.internal.ui.messages;
+
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+/**
+ * @author Victor Roldan Betancort
+ */
+public class Messages
+{
+ private static final String BUNDLE_NAME = "org.eclipse.net4j.buddies.internal.ui.messages.messages"; //$NON-NLS-1$
+
+ private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME);
+
+ private Messages()
+ {
+ }
+
+ public static String getString(String key)
+ {
+ try
+ {
+ return RESOURCE_BUNDLE.getString(key);
+ }
+ catch (MissingResourceException e)
+ {
+ return '!' + key + '!';
+ }
+ }
+}
diff --git a/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/messages/messages.properties b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/messages/messages.properties
new file mode 100644
index 0000000000..187586764f
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/messages/messages.properties
@@ -0,0 +1,37 @@
+# Copyright (c) 2004 - 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:
+# Victor Roldan Betancort - initial API and implementation
+# Eike Stepper - maintenance
+
+AbstractItemProvider.0=Leave
+AbstractItemProvider.1=Leave this collaboration
+AbstractItemProvider.2=Remove
+AbstractItemProvider.3=Remove
+BuddiesPreferencePage_0=Server:
+BuddiesPreferencePage_1=User ID:
+BuddiesPreferencePage_2=Password:
+BuddiesPreferencePage_3=Auto Connect
+BuddiesTransfer_1=Buddy session is not available
+BuddiesTransfer_2=Buddy is not available: {0}
+CollaborationsPane_0=Activate {0} facility
+CollaborationsView_2=Start {0}
+CollaborationsView_3=Start a {0} facility
+ConnectAction_0=Connect
+ConnectAction_1=Connect to buddies server
+DisconnectAction_0=Disonnect
+DisconnectAction_1=Disconnect from buddies server
+FlashAction_0=Flash Me
+FlashAction_1=Flash Me
+ReconnectAction_0=Reconnect
+ReconnectAction_1=Reconnect to buddies server
+StateAction_0=Set own state to \"{0}\"
+StateAction_2=Set My State
+StateAction_3=Available
+StateAction_4=Lonesome
+StateAction_5=Away
+StateAction_6=Do Not Disturb
diff --git a/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/preferences/BuddiesPreferencePage.java b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/preferences/BuddiesPreferencePage.java
new file mode 100644
index 0000000000..7ebe04e821
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/preferences/BuddiesPreferencePage.java
@@ -0,0 +1,87 @@
+/*
+ * Copyright (c) 2004 - 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.net4j.buddies.internal.ui.preferences;
+
+import org.eclipse.net4j.buddies.internal.ui.messages.Messages;
+import org.eclipse.net4j.internal.buddies.bundle.OM;
+import org.eclipse.net4j.util.ui.UIUtil;
+import org.eclipse.net4j.util.ui.prefs.OMPreferencePage;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * @author Eike Stepper
+ */
+public class BuddiesPreferencePage extends OMPreferencePage
+{
+ private Text connectorDescription;
+
+ private Text userID;
+
+ private Text password;
+
+ private Button autoConnect;
+
+ public BuddiesPreferencePage()
+ {
+ super(OM.PREFS);
+ }
+
+ @Override
+ protected Control createUI(Composite parent)
+ {
+ Composite composite = UIUtil.createGridComposite(parent, 2);
+ composite.setLayoutData(UIUtil.createGridData());
+
+ new Label(composite, SWT.NONE).setText(Messages.getString("BuddiesPreferencePage_0")); //$NON-NLS-1$
+ connectorDescription = new Text(composite, SWT.BORDER);
+ connectorDescription.setLayoutData(UIUtil.createGridData(true, false));
+
+ new Label(composite, SWT.NONE).setText(Messages.getString("BuddiesPreferencePage_1")); //$NON-NLS-1$
+ userID = new Text(composite, SWT.BORDER);
+ userID.setLayoutData(new GridData(100, SWT.DEFAULT));
+
+ new Label(composite, SWT.NONE).setText(Messages.getString("BuddiesPreferencePage_2")); //$NON-NLS-1$
+ password = new Text(composite, SWT.BORDER | SWT.PASSWORD);
+ password.setLayoutData(new GridData(100, SWT.DEFAULT));
+
+ new Label(composite, SWT.NONE);
+ autoConnect = new Button(composite, SWT.CHECK);
+ autoConnect.setText(Messages.getString("BuddiesPreferencePage_3")); //$NON-NLS-1$
+
+ initValues();
+ return composite;
+ }
+
+ protected void initValues()
+ {
+ connectorDescription.setText(OM.PREF_CONNECTOR_DESCRIPTION.getValue());
+ userID.setText(OM.PREF_USER_ID.getValue());
+ password.setText(OM.PREF_PASSWORD.getValue());
+ autoConnect.setSelection(OM.PREF_AUTO_CONNECT.getValue());
+ }
+
+ @Override
+ public boolean performOk()
+ {
+ OM.PREF_CONNECTOR_DESCRIPTION.setValue(connectorDescription.getText());
+ OM.PREF_USER_ID.setValue(userID.getText());
+ OM.PREF_PASSWORD.setValue(password.getText());
+ OM.PREF_AUTO_CONNECT.setValue(autoConnect.getSelection());
+ return super.performOk();
+ }
+}
diff --git a/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/BuddiesDragListener.java b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/BuddiesDragListener.java
new file mode 100644
index 0000000000..ff47beca18
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/BuddiesDragListener.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2004 - 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.net4j.buddies.internal.ui.views;
+
+import org.eclipse.net4j.buddies.common.IBuddy;
+import org.eclipse.net4j.buddies.internal.ui.dnd.BuddiesTransfer;
+import org.eclipse.net4j.util.ui.dnd.DNDDragListener;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.Transfer;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+
+/**
+ * @author Eike Stepper
+ */
+public class BuddiesDragListener extends DNDDragListener<IBuddy[]>
+{
+ private static final Transfer[] TRANSFERS = new Transfer[] { BuddiesTransfer.INSTANCE };
+
+ protected BuddiesDragListener(StructuredViewer viewer)
+ {
+ super(TRANSFERS, viewer);
+ }
+
+ @Override
+ protected IBuddy[] getObject(IStructuredSelection selection)
+ {
+ Collection<IBuddy> buddies = new ArrayList<IBuddy>();
+ for (Iterator<?> it = selection.iterator(); it.hasNext();)
+ {
+ Object element = it.next();
+ if (element instanceof IBuddy)
+ {
+ IBuddy buddy = (IBuddy)element;
+ buddies.add(buddy);
+ }
+ }
+
+ if (buddies.isEmpty())
+ {
+ return null;
+ }
+
+ return buddies.toArray(new IBuddy[buddies.size()]);
+ }
+
+ public static void support(StructuredViewer viewer)
+ {
+ viewer.addDragSupport(DND.DROP_MOVE, TRANSFERS, new BuddiesDragListener(viewer));
+ }
+}
diff --git a/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/BuddiesDropAdapter.java b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/BuddiesDropAdapter.java
new file mode 100644
index 0000000000..d39615456b
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/BuddiesDropAdapter.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2004 - 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.net4j.buddies.internal.ui.views;
+
+import org.eclipse.net4j.buddies.IBuddyCollaboration;
+import org.eclipse.net4j.buddies.common.IBuddy;
+import org.eclipse.net4j.buddies.internal.ui.dnd.BuddiesTransfer;
+import org.eclipse.net4j.util.ui.dnd.DNDDropAdapter;
+
+import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.Transfer;
+
+/**
+ * @author Eike Stepper
+ */
+public class BuddiesDropAdapter extends DNDDropAdapter<IBuddy[]>
+{
+ /**
+ * @since 3.0
+ */
+ public static final Transfer[] TRANSFERS = new Transfer[] { BuddiesTransfer.INSTANCE };
+
+ protected BuddiesDropAdapter(StructuredViewer viewer)
+ {
+ super(TRANSFERS, viewer);
+ setExpandEnabled(false);
+ }
+
+ @Override
+ protected boolean validateTarget(Object target, int operation)
+ {
+ return target instanceof IBuddyCollaboration;
+ }
+
+ @Override
+ protected boolean performDrop(IBuddy[] buddies, Object target)
+ {
+ IBuddyCollaboration collaboration = (IBuddyCollaboration)target;
+ collaboration.invite(buddies);
+ return true;
+ }
+
+ public static void support(StructuredViewer viewer)
+ {
+ viewer.addDropSupport(DND.DROP_MOVE, TRANSFERS, new BuddiesDropAdapter(viewer));
+ }
+}
diff --git a/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/BuddiesView.java b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/BuddiesView.java
new file mode 100644
index 0000000000..53b9f04471
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/BuddiesView.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2004 - 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.net4j.buddies.internal.ui.views;
+
+import org.eclipse.net4j.buddies.IBuddyCollaboration;
+import org.eclipse.net4j.buddies.common.IBuddy;
+import org.eclipse.net4j.buddies.common.IMembership;
+import org.eclipse.net4j.buddies.internal.ui.ChatInstaller;
+import org.eclipse.net4j.util.container.ContainerUtil;
+import org.eclipse.net4j.util.container.IContainer;
+
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+
+public class BuddiesView extends SessionManagerView
+{
+ public BuddiesView()
+ {
+ }
+
+ @Override
+ protected IContainer<?> getContainer()
+ {
+ return getSession() != null ? getSession() : ContainerUtil.emptyContainer();
+ }
+
+ @Override
+ protected Control createControl(Composite parent)
+ {
+ Control control = super.createControl(parent);
+ BuddiesDragListener.support(getViewer());
+ BuddiesDropAdapter.support(getViewer());
+ return control;
+ }
+
+ @Override
+ protected void doubleClicked(Object object)
+ {
+ if (getSession() != null && object instanceof IBuddy)
+ {
+ IBuddy buddy = (IBuddy)object;
+ IBuddy self = getSession().getSelf();
+ IMembership membership = self.initiate(buddy);
+
+ try
+ {
+ // The chat dependency is optional
+ ChatInstaller.installChat((IBuddyCollaboration)membership.getCollaboration());
+ }
+ catch (Throwable ignore)
+ {
+ }
+ }
+ }
+}
diff --git a/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/CollaborationsPane.java b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/CollaborationsPane.java
new file mode 100644
index 0000000000..ce8761be95
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/CollaborationsPane.java
@@ -0,0 +1,334 @@
+/*
+ * Copyright (c) 2004 - 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.net4j.buddies.internal.ui.views;
+
+import org.eclipse.net4j.buddies.IBuddyCollaboration;
+import org.eclipse.net4j.buddies.IBuddySession;
+import org.eclipse.net4j.buddies.common.ICollaboration;
+import org.eclipse.net4j.buddies.common.IFacility;
+import org.eclipse.net4j.buddies.common.IFacilityInstalledEvent;
+import org.eclipse.net4j.buddies.common.IMembership;
+import org.eclipse.net4j.buddies.internal.ui.messages.Messages;
+import org.eclipse.net4j.buddies.ui.IFacilityPaneCreator;
+import org.eclipse.net4j.util.ObjectUtil;
+import org.eclipse.net4j.util.StringUtil;
+import org.eclipse.net4j.util.container.IContainerEvent;
+import org.eclipse.net4j.util.container.IContainerEventVisitor;
+import org.eclipse.net4j.util.event.IEvent;
+import org.eclipse.net4j.util.event.IListener;
+import org.eclipse.net4j.util.ui.actions.SafeAction;
+
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.StackLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IActionBars;
+
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author Eike Stepper
+ */
+public class CollaborationsPane extends Composite implements IListener
+{
+ private CollaborationsView collaborationsView;
+
+ private IBuddySession session;
+
+ private IBuddyCollaboration activeCollaboration;
+
+ private Map<IBuddyCollaboration, IFacility> activeFacilities = new HashMap<IBuddyCollaboration, IFacility>();
+
+ private Map<IFacility, FacilityPane> facilityPanes = new HashMap<IFacility, FacilityPane>();
+
+ private List<ActivateFacilityAction> activateFacilityActions = new ArrayList<ActivateFacilityAction>();
+
+ private StackLayout paneStack;
+
+ public CollaborationsPane(Composite parent, CollaborationsView collaborationsView)
+ {
+ super(parent, SWT.NONE);
+ setLayout(paneStack = new StackLayout());
+ this.collaborationsView = collaborationsView;
+ }
+
+ public CollaborationsView getCollaborationsView()
+ {
+ return collaborationsView;
+ }
+
+ public IBuddySession getSession()
+ {
+ return session;
+ }
+
+ public void setSession(IBuddySession session)
+ {
+ this.session = session;
+ if (session != null)
+ {
+ for (ICollaboration collaboration : session.getSelf().getCollaborations())
+ {
+ collaborationAdded((IBuddyCollaboration)collaboration);
+ }
+ }
+
+ updateState();
+ }
+
+ public IBuddyCollaboration getActiveCollaboration()
+ {
+ return activeCollaboration;
+ }
+
+ public void setActiveCollaboration(IBuddyCollaboration collaboration)
+ {
+ if (activeCollaboration != collaboration)
+ {
+ activeCollaboration = collaboration;
+ IFacility facility = activeFacilities.get(collaboration);
+ setActiveFacility(collaboration, facility);
+ updateState();
+ collaborationsView.refreshViewer(true);
+ }
+ }
+
+ public void setActiveFacility(IBuddyCollaboration collaboration, IFacility facility)
+ {
+ activeFacilities.put(collaboration, facility);
+ if (collaboration == activeCollaboration)
+ {
+ FacilityPane facilityPane = facilityPanes.get(facility);
+ setActiveFacilityPane(facilityPane);
+ updateState();
+ }
+ }
+
+ protected void setActiveFacilityPane(FacilityPane newPane)
+ {
+ if (paneStack.topControl != newPane)
+ {
+ FacilityPane oldPane = (FacilityPane)paneStack.topControl;
+ if (oldPane != null)
+ {
+ oldPane.hidden(newPane);
+ }
+
+ paneStack.topControl = newPane;
+ layout();
+ if (newPane != null)
+ {
+ newPane.showed(oldPane);
+ }
+
+ updateState();
+ }
+ }
+
+ public void fillActionBars(IActionBars bars)
+ {
+ IToolBarManager manager = bars.getToolBarManager();
+ for (IFacilityPaneCreator c : collaborationsView.getFacilityPaneCreators().values())
+ {
+ ActivateFacilityAction action = new ActivateFacilityAction(c.getType(), c.getImageDescriptor());
+ activateFacilityActions.add(action);
+ manager.add(action);
+ }
+ }
+
+ public void updateState()
+ {
+ for (ActivateFacilityAction action : activateFacilityActions)
+ {
+ if (activeCollaboration == null)
+ {
+ action.setEnabled(false);
+ }
+ else
+ {
+ String type = action.getType();
+ action.setEnabled(activeCollaboration.getFacility(type) != null);
+
+ IFacility activeFacility = activeFacilities.get(activeCollaboration);
+ action.setChecked(activeFacility != null && ObjectUtil.equals(activeFacility.getType(), type));
+ }
+ }
+ }
+
+ public void notifyEvent(IEvent event)
+ {
+ if (session == null)
+ {
+ return;
+ }
+
+ if (event.getSource() == session.getSelf() && event instanceof IContainerEvent<?>)
+ {
+ @SuppressWarnings("unchecked")
+ IContainerEvent<IMembership> e = (IContainerEvent<IMembership>)event;
+ e.accept(new IContainerEventVisitor<IMembership>()
+ {
+ public void added(IMembership membership)
+ {
+ collaborationAdded((IBuddyCollaboration)membership.getCollaboration());
+ }
+
+ public void removed(IMembership membership)
+ {
+ collaborationRemoved((IBuddyCollaboration)membership.getCollaboration());
+ }
+ });
+ }
+ else if (event instanceof IFacilityInstalledEvent)
+ {
+ IFacilityInstalledEvent e = (IFacilityInstalledEvent)event;
+ facilityInstalled(e.getFacility(), e.fromRemote());
+ }
+ }
+
+ protected void collaborationAdded(IBuddyCollaboration collaboration)
+ {
+ IFacility[] facilities = collaboration.getFacilities();
+ for (IFacility facility : facilities)
+ {
+ addFacilityPane(facility);
+ }
+
+ if (activeCollaboration == null)
+ {
+ setActiveCollaboration(collaboration);
+ }
+
+ if (facilities.length != 0)
+ {
+ setActiveFacility(collaboration, facilities[0]);
+ }
+
+ collaboration.addListener(this);
+ }
+
+ protected void collaborationRemoved(IBuddyCollaboration collaboration)
+ {
+ collaboration.removeListener(this);
+ if (activeCollaboration == collaboration)
+ {
+ setActiveCollaboration(activeFacilities.isEmpty() ? null : activeFacilities.keySet().iterator().next());
+ }
+
+ activeFacilities.remove(collaboration);
+ for (IFacility facility : collaboration.getFacilities())
+ {
+ FacilityPane pane = facilityPanes.remove(facility);
+ if (pane != null)
+ {
+ pane.dispose();
+ }
+ }
+ }
+
+ protected void facilityInstalled(final IFacility facility, boolean fromRemote)
+ {
+ final IBuddyCollaboration collaboration = (IBuddyCollaboration)facility.getCollaboration();
+ if (fromRemote)
+ {
+ Runnable runnable = new Runnable()
+ {
+ public void run()
+ {
+ try
+ {
+ addFacilityPane(facility);
+ IFacility activeFacility = activeFacilities.get(collaboration);
+ if (activeFacility == null)
+ {
+ setActiveFacility(collaboration, facility);
+ }
+ else
+ {
+ updateState();
+ }
+ }
+ catch (RuntimeException ignore)
+ {
+ }
+ }
+ };
+
+ try
+ {
+ Display display = getDisplay();
+ if (display.getThread() == Thread.currentThread())
+ {
+ runnable.run();
+ }
+ else
+ {
+ display.asyncExec(runnable);
+ }
+ }
+ catch (RuntimeException ignore)
+ {
+ }
+ }
+ else
+ {
+ addFacilityPane(facility);
+ setActiveCollaboration(collaboration);
+ setActiveFacility(collaboration, facility);
+ }
+ }
+
+ protected FacilityPane addFacilityPane(IFacility facility)
+ {
+ IFacilityPaneCreator creator = collaborationsView.getFacilityPaneCreators().get(facility.getType());
+ FacilityPane pane = creator.createPane(this, SWT.NONE);
+ pane.setFacility(facility);
+ facilityPanes.put(facility, pane);
+ return pane;
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ private final class ActivateFacilityAction extends SafeAction
+ {
+ private final String type;
+
+ private ActivateFacilityAction(String type, ImageDescriptor descriptor)
+ {
+ super(StringUtil.cap(type), AS_RADIO_BUTTON);
+ setToolTipText(MessageFormat.format(Messages.getString("CollaborationsPane_0"), type)); //$NON-NLS-1$
+ setImageDescriptor(descriptor);
+ this.type = type;
+ }
+
+ public String getType()
+ {
+ return type;
+ }
+
+ @Override
+ protected void safeRun() throws Exception
+ {
+ if (activeCollaboration != null)
+ {
+ IFacility facility = activeCollaboration.getFacility(type);
+ setActiveFacility(activeCollaboration, facility);
+ }
+ }
+ }
+}
diff --git a/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/CollaborationsView.java b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/CollaborationsView.java
new file mode 100644
index 0000000000..5bfb94524d
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/CollaborationsView.java
@@ -0,0 +1,221 @@
+/*
+ * Copyright (c) 2004 - 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.net4j.buddies.internal.ui.views;
+
+import org.eclipse.net4j.buddies.IBuddyCollaboration;
+import org.eclipse.net4j.buddies.internal.ui.CollaborationsItemProvider;
+import org.eclipse.net4j.buddies.internal.ui.bundle.OM;
+import org.eclipse.net4j.buddies.internal.ui.messages.Messages;
+import org.eclipse.net4j.buddies.ui.IFacilityPaneCreator;
+import org.eclipse.net4j.util.StringUtil;
+import org.eclipse.net4j.util.container.ContainerUtil;
+import org.eclipse.net4j.util.container.IContainer;
+import org.eclipse.net4j.util.event.IEvent;
+import org.eclipse.net4j.util.ui.actions.SafeAction;
+import org.eclipse.net4j.util.ui.actions.SashLayoutAction;
+import org.eclipse.net4j.util.ui.views.ContainerItemProvider;
+import org.eclipse.net4j.util.ui.widgets.SashComposite;
+
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.viewers.ITreeSelection;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IWorkbenchActionConstants;
+
+import java.text.MessageFormat;
+import java.util.HashMap;
+import java.util.Map;
+
+public class CollaborationsView extends SessionManagerView
+{
+ private SashComposite sashComposite;
+
+ private Map<String, IFacilityPaneCreator> facilityPaneCreators = new HashMap<String, IFacilityPaneCreator>();
+
+ public CollaborationsView()
+ {
+ initFacilityPaneCreators();
+ }
+
+ public CollaborationsPane getCollaborationsPane()
+ {
+ return (CollaborationsPane)sashComposite.getControl2();
+ }
+
+ public Map<String, IFacilityPaneCreator> getFacilityPaneCreators()
+ {
+ return facilityPaneCreators;
+ }
+
+ @Override
+ protected Control createControl(Composite parent)
+ {
+ sashComposite = new SashComposite(parent, SWT.NONE, 10, 30)
+ {
+ @Override
+ protected Control createControl1(Composite parent)
+ {
+ return CollaborationsView.super.createControl(parent);
+ }
+
+ @Override
+ protected Control createControl2(Composite parent)
+ {
+ return new CollaborationsPane(parent, CollaborationsView.this);
+ }
+ };
+
+ IActionBars bars = getViewSite().getActionBars();
+ bars.getMenuManager().add(new Separator());
+ bars.getToolBarManager().add(new Separator());
+ getCollaborationsPane().fillActionBars(bars);
+
+ BuddiesDropAdapter.support(getViewer());
+ return sashComposite;
+ }
+
+ @Override
+ protected void queryBuddiesManager()
+ {
+ super.queryBuddiesManager();
+ getCollaborationsPane().setSession(getSession());
+ }
+
+ @Override
+ public void notifyEvent(IEvent event)
+ {
+ super.notifyEvent(event);
+ getCollaborationsPane().notifyEvent(event);
+ }
+
+ @Override
+ protected void fillLocalPullDown(IMenuManager manager)
+ {
+ super.fillLocalPullDown(manager);
+ manager.add(new Separator());
+ manager.add(new SashLayoutAction.LayoutMenu(sashComposite));
+ }
+
+ @Override
+ protected void fillContextMenu(IMenuManager manager, ITreeSelection selection)
+ {
+ super.fillContextMenu(manager, selection);
+ if (selection.size() == 1)
+ {
+ final IBuddyCollaboration collaboration = (IBuddyCollaboration)selection.getFirstElement();
+ if (collaboration != null)
+ {
+ manager.insertBefore(IWorkbenchActionConstants.MB_ADDITIONS, new Separator());
+ for (IFacilityPaneCreator c : facilityPaneCreators.values())
+ {
+ String type = c.getType();
+ if (collaboration.getFacility(type) == null)
+ {
+ IAction action = new StartFacilityAction(collaboration, type, c.getImageDescriptor());
+ manager.insertBefore(IWorkbenchActionConstants.MB_ADDITIONS, action);
+ }
+ }
+ }
+ }
+ }
+
+ @Override
+ protected void doubleClicked(Object object)
+ {
+ if (object instanceof IBuddyCollaboration)
+ {
+ IBuddyCollaboration collaboration = (IBuddyCollaboration)object;
+ getCollaborationsPane().setActiveCollaboration(collaboration);
+ }
+ }
+
+ @Override
+ protected IContainer<?> getContainer()
+ {
+ return getSession() != null ? getSession().getSelf() : ContainerUtil.emptyContainer();
+ }
+
+ @Override
+ protected ContainerItemProvider<IContainer<Object>> createContainerItemProvider()
+ {
+ return new CollaborationsItemProvider()
+ {
+ @Override
+ public Font getFont(Object obj)
+ {
+ if (obj instanceof IBuddyCollaboration)
+ {
+ if (obj == getCollaborationsPane().getActiveCollaboration())
+ {
+ return getBold();
+ }
+ }
+
+ return super.getFont(obj);
+ }
+ };
+ }
+
+ protected void initFacilityPaneCreators()
+ {
+ IExtensionRegistry registry = Platform.getExtensionRegistry();
+ IConfigurationElement[] elements = registry.getConfigurationElementsFor(OM.BUNDLE_ID, OM.EXT_POINT);
+ for (final IConfigurationElement element : elements)
+ {
+ if ("facilityPaneCreator".equals(element.getName())) //$NON-NLS-1$
+ {
+ try
+ {
+ IFacilityPaneCreator creator = (IFacilityPaneCreator)element.createExecutableExtension("class"); //$NON-NLS-1$
+ facilityPaneCreators.put(creator.getType(), creator);
+ }
+ catch (Exception ex)
+ {
+ OM.LOG.error(ex);
+ }
+ }
+ }
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ private final class StartFacilityAction extends SafeAction
+ {
+ private final String type;
+
+ private IBuddyCollaboration collaboration;
+
+ private StartFacilityAction(IBuddyCollaboration collaboration, String type, ImageDescriptor descriptor)
+ {
+ super(MessageFormat.format(Messages.getString("CollaborationsView_2"), StringUtil.cap(type)), AS_RADIO_BUTTON); //$NON-NLS-1$
+ setToolTipText(MessageFormat.format(Messages.getString("CollaborationsView_3"), type)); //$NON-NLS-1$
+ setImageDescriptor(descriptor);
+ this.collaboration = collaboration;
+ this.type = type;
+ }
+
+ @Override
+ protected void safeRun() throws Exception
+ {
+ collaboration.installFacility(type);
+ }
+ }
+}
diff --git a/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/FacilityPane.java b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/FacilityPane.java
new file mode 100644
index 0000000000..866cd663ab
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/FacilityPane.java
@@ -0,0 +1,242 @@
+/*
+ * Copyright (c) 2004 - 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.net4j.buddies.internal.ui.views;
+
+import org.eclipse.net4j.buddies.common.IFacility;
+import org.eclipse.net4j.buddies.internal.ui.bundle.OM;
+import org.eclipse.net4j.util.event.IEvent;
+import org.eclipse.net4j.util.event.IListener;
+import org.eclipse.net4j.util.ui.UIUtil;
+
+import org.eclipse.jface.action.CoolBarManager;
+import org.eclipse.jface.action.IContributionManager;
+import org.eclipse.jface.action.ICoolBarManager;
+import org.eclipse.jface.action.ToolBarManager;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.CoolBar;
+import org.eclipse.swt.widgets.Layout;
+
+/**
+ * @author Eike Stepper
+ */
+public abstract class FacilityPane extends Composite implements IListener
+{
+ private IFacility facility;
+
+ private CollaborationsPane collaborationsPane;
+
+ private CoolBarManager coolBarManager;
+
+ private Control control;
+
+ public FacilityPane(CollaborationsPane collaborationsPane, int style)
+ {
+ super(collaborationsPane, style);
+ this.collaborationsPane = collaborationsPane;
+ setLayout(new FacilityPaneLayout());
+
+ ToolBarManager toolBarManager = new ToolBarManager(SWT.FLAT | SWT.RIGHT | SWT.WRAP);
+ fillCoolBar(toolBarManager);
+
+ coolBarManager = new CoolBarManager(SWT.FLAT | SWT.RIGHT | SWT.WRAP);
+ coolBarManager.add(toolBarManager);
+ coolBarManager.setLockLayout(true);
+ coolBarManager.createControl(this);
+ coolBarManager.update(true);
+
+ Composite composite = new Composite(this, SWT.NONE);
+ composite.setLayout(UIUtil.createGridLayout(1));
+
+ control = createUI(composite);
+ control.setLayoutData(UIUtil.createGridData());
+ }
+
+ @Override
+ public void dispose()
+ {
+ facility.removeListener(this);
+ coolBarManager.dispose();
+ super.dispose();
+ }
+
+ public IFacility getFacility()
+ {
+ return facility;
+ }
+
+ public void setFacility(IFacility facility)
+ {
+ this.facility = facility;
+ facility.addListener(this);
+ }
+
+ public CollaborationsPane getCollaborationsPane()
+ {
+ return collaborationsPane;
+ }
+
+ public ICoolBarManager getCoolBarManager()
+ {
+ return coolBarManager;
+ }
+
+ public Control getControl()
+ {
+ return control;
+ }
+
+ public final void notifyEvent(final IEvent event)
+ {
+ try
+ {
+ control.getDisplay().syncExec(new Runnable()
+ {
+ public void run()
+ {
+ try
+ {
+ handleEvent(event);
+ }
+ catch (Exception ex)
+ {
+ OM.LOG.error(ex);
+ }
+ }
+ });
+ }
+ catch (RuntimeException ignore)
+ {
+ }
+ }
+
+ protected abstract void handleEvent(IEvent event) throws Exception;
+
+ public void hidden(FacilityPane newPane)
+ {
+ }
+
+ public void showed(FacilityPane oldPane)
+ {
+ }
+
+ protected abstract Control createUI(Composite parent);
+
+ protected CoolBar getCoolBarControl()
+ {
+ if (coolBarManager != null)
+ {
+ return coolBarManager.getControl();
+ }
+
+ return null;
+ }
+
+ protected void fillCoolBar(IContributionManager manager)
+ {
+ }
+
+ /**
+ * @author Eike Stepper
+ * @see org.eclipse.jface.window.ApplicationWindow.ApplicationWindowLayout
+ */
+ public class FacilityPaneLayout extends Layout
+ {
+ static final int BAR_SIZE = 23;
+
+ @Override
+ protected Point computeSize(Composite composite, int wHint, int hHint, boolean flushCache)
+ {
+ if (wHint != SWT.DEFAULT && hHint != SWT.DEFAULT)
+ {
+ return new Point(wHint, hHint);
+ }
+
+ Point result = new Point(0, 0);
+ Control[] ws = composite.getChildren();
+ for (int i = 0; i < ws.length; i++)
+ {
+ Control w = ws[i];
+ boolean hide = false;
+ if (w == getCoolBarControl())
+ {
+ if (!coolBarChildrenExist())
+ {
+ hide = true;
+ result.y += BAR_SIZE;
+ }
+ }
+ else if (i > 0)
+ {
+ hide = false;
+ }
+
+ if (!hide)
+ {
+ Point e = w.computeSize(wHint, hHint, flushCache);
+ result.x = Math.max(result.x, e.x);
+ result.y += e.y;
+ }
+ }
+
+ if (wHint != SWT.DEFAULT)
+ {
+ result.x = wHint;
+ }
+
+ if (hHint != SWT.DEFAULT)
+ {
+ result.y = hHint;
+ }
+
+ return result;
+ }
+
+ @Override
+ protected void layout(Composite composite, boolean flushCache)
+ {
+ Rectangle clientArea = composite.getClientArea();
+ Control[] ws = composite.getChildren();
+ for (int i = 0; i < ws.length; i++)
+ {
+ Control w = ws[i];
+ if (w == getCoolBarControl())
+ {
+ if (coolBarChildrenExist())
+ {
+ Point e = w.computeSize(clientArea.width, SWT.DEFAULT, flushCache);
+ w.setBounds(clientArea.x, clientArea.y, clientArea.width, e.y);
+ clientArea.y += e.y;
+ clientArea.height -= e.y;
+ }
+ }
+ else
+ {
+ w.setBounds(clientArea.x, clientArea.y, clientArea.width, clientArea.height);
+ }
+ }
+ }
+
+ protected boolean coolBarChildrenExist()
+ {
+ CoolBar coolBarControl = getCoolBarControl();
+ if (coolBarControl != null)
+ {
+ return coolBarControl.getItemCount() > 0;
+ }
+
+ return false;
+ }
+ }
+}
diff --git a/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/SessionManagerView.java b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/SessionManagerView.java
new file mode 100644
index 0000000000..1162a5e3a7
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/SessionManagerView.java
@@ -0,0 +1,153 @@
+/*
+ * Copyright (c) 2004 - 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.net4j.buddies.internal.ui.views;
+
+import org.eclipse.net4j.buddies.IBuddySession;
+import org.eclipse.net4j.buddies.ISessionManager;
+import org.eclipse.net4j.buddies.ISessionManagerEvent;
+import org.eclipse.net4j.buddies.common.IBuddyStateEvent;
+import org.eclipse.net4j.buddies.internal.ui.BuddiesItemProvider;
+import org.eclipse.net4j.buddies.internal.ui.actions.ConnectAction;
+import org.eclipse.net4j.buddies.internal.ui.actions.DisconnectAction;
+import org.eclipse.net4j.buddies.internal.ui.actions.FlashAction;
+import org.eclipse.net4j.buddies.internal.ui.actions.ReconnectAction;
+import org.eclipse.net4j.buddies.internal.ui.actions.StateAction.DropDownAction;
+import org.eclipse.net4j.util.container.IContainer;
+import org.eclipse.net4j.util.event.IEvent;
+import org.eclipse.net4j.util.event.IListener;
+import org.eclipse.net4j.util.ui.views.ContainerItemProvider;
+import org.eclipse.net4j.util.ui.views.ContainerView;
+
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+
+public abstract class SessionManagerView extends ContainerView implements IListener
+{
+ private IBuddySession session;
+
+ private ConnectAction connectAction = new ConnectAction();
+
+ private DisconnectAction disconnectAction = new DisconnectAction();
+
+ private ReconnectAction reconnectAction = new ReconnectAction();
+
+ private FlashAction flashAction = new FlashAction();
+
+ private DropDownAction dropDownAction = new DropDownAction();
+
+ private Control control;
+
+ public SessionManagerView()
+ {
+ }
+
+ public IBuddySession getSession()
+ {
+ return session;
+ }
+
+ @Override
+ public void dispose()
+ {
+ ISessionManager.INSTANCE.removeListener(this);
+ session = null;
+ super.dispose();
+ }
+
+ public void notifyEvent(IEvent event)
+ {
+ if (event instanceof ISessionManagerEvent)
+ {
+ queryBuddiesManager();
+ }
+ else if (event instanceof IBuddyStateEvent)
+ {
+ if (session != null && event.getSource() == session.getSelf())
+ {
+ updateState();
+ }
+ }
+ }
+
+ @Override
+ protected final Control createUI(Composite parent)
+ {
+ control = createControl(parent);
+ queryBuddiesManager();
+ ISessionManager.INSTANCE.addListener(this);
+ return control;
+ }
+
+ protected Control createControl(Composite parent)
+ {
+ return super.createUI(parent);
+ }
+
+ @Override
+ protected ContainerItemProvider<IContainer<Object>> createContainerItemProvider()
+ {
+ return new BuddiesItemProvider();
+ }
+
+ @Override
+ protected void fillLocalToolBar(IToolBarManager manager)
+ {
+ super.fillLocalToolBar(manager);
+ manager.add(dropDownAction);
+ }
+
+ @Override
+ protected void fillLocalPullDown(IMenuManager manager)
+ {
+ manager.add(connectAction);
+ manager.add(disconnectAction);
+ manager.add(reconnectAction);
+ manager.add(new Separator());
+ manager.add(flashAction);
+ super.fillLocalPullDown(manager);
+ }
+
+ protected void queryBuddiesManager()
+ {
+ IBuddySession oldSession = session;
+ session = ISessionManager.INSTANCE.getSession();
+ if (oldSession != session)
+ {
+ if (oldSession != null)
+ {
+ oldSession.removeListener(this);
+ oldSession.getSelf().removeListener(this);
+ }
+
+ if (session != null)
+ {
+ session.addListener(this);
+ session.getSelf().addListener(this);
+ }
+ }
+
+ resetInput();
+ updateState();
+ }
+
+ protected void updateState()
+ {
+ connectAction.setEnabled(session == null);
+ disconnectAction.setEnabled(session != null);
+ reconnectAction.setEnabled(session != null);
+ flashAction.setEnabled(session != null && !ISessionManager.INSTANCE.isFlashing());
+ dropDownAction.updateState();
+ // control.setEnabled(session != null);
+ }
+}
diff --git a/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/ui/IFacilityPaneCreator.java b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/ui/IFacilityPaneCreator.java
new file mode 100644
index 0000000000..73000c2430
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/buddies.ui/src/org/eclipse/net4j/buddies/ui/IFacilityPaneCreator.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2004 - 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.net4j.buddies.ui;
+
+import org.eclipse.net4j.buddies.internal.ui.views.CollaborationsPane;
+import org.eclipse.net4j.buddies.internal.ui.views.FacilityPane;
+
+import org.eclipse.jface.resource.ImageDescriptor;
+
+/**
+ * @author Eike Stepper
+ */
+public interface IFacilityPaneCreator
+{
+ public String getType();
+
+ public ImageDescriptor getImageDescriptor();
+
+ public FacilityPane createPane(CollaborationsPane collaborationsPane, int style);
+}

Back to the top