Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrsuen2007-11-12 21:58:39 +0000
committerrsuen2007-11-12 21:58:39 +0000
commit073a2976e209cfff1e318f76dfe37a16e8d0ea9f (patch)
tree28faeacc516da9e97073dd6a055284105ccf9e87 /incubation
parent88e09103eb15d704b50829967d8c5da5146c11f1 (diff)
downloadorg.eclipse.ecf-073a2976e209cfff1e318f76dfe37a16e8d0ea9f.tar.gz
org.eclipse.ecf-073a2976e209cfff1e318f76dfe37a16e8d0ea9f.tar.xz
org.eclipse.ecf-073a2976e209cfff1e318f76dfe37a16e8d0ea9f.zip
Initial commit of ECF/Mylyn integration work per bug 195737.
Diffstat (limited to 'incubation')
-rwxr-xr-xincubation/bundles/org.eclipse.ecf.mylyn.ui/.classpath7
-rwxr-xr-xincubation/bundles/org.eclipse.ecf.mylyn.ui/.project28
-rwxr-xr-xincubation/bundles/org.eclipse.ecf.mylyn.ui/.settings/org.eclipse.jdt.core.prefs331
-rwxr-xr-xincubation/bundles/org.eclipse.ecf.mylyn.ui/.settings/org.eclipse.jdt.ui.prefs58
-rwxr-xr-xincubation/bundles/org.eclipse.ecf.mylyn.ui/META-INF/MANIFEST.MF20
-rwxr-xr-xincubation/bundles/org.eclipse.ecf.mylyn.ui/about.html28
-rwxr-xr-xincubation/bundles/org.eclipse.ecf.mylyn.ui/build.properties5
-rwxr-xr-xincubation/bundles/org.eclipse.ecf.mylyn.ui/icons/full/dtool16/shared_task.gifbin0 -> 965 bytes
-rwxr-xr-xincubation/bundles/org.eclipse.ecf.mylyn.ui/icons/full/etool16/shared_task.gifbin0 -> 375 bytes
-rwxr-xr-xincubation/bundles/org.eclipse.ecf.mylyn.ui/plugin.properties13
-rwxr-xr-xincubation/bundles/org.eclipse.ecf.mylyn.ui/plugin.xml43
-rwxr-xr-xincubation/bundles/org.eclipse.ecf.mylyn.ui/src/org/eclipse/ecf/internal/mylyn/ui/ActivateReceivedContextHandler.java38
-rwxr-xr-xincubation/bundles/org.eclipse.ecf.mylyn.ui/src/org/eclipse/ecf/internal/mylyn/ui/Activator.java163
-rwxr-xr-xincubation/bundles/org.eclipse.ecf.mylyn.ui/src/org/eclipse/ecf/internal/mylyn/ui/CompoundContextActivationContributionItem.java136
-rwxr-xr-xincubation/bundles/org.eclipse.ecf.mylyn.ui/src/org/eclipse/ecf/internal/mylyn/ui/IncomingSharedTaskNotificationPopup.java123
-rwxr-xr-xincubation/bundles/org.eclipse.ecf.mylyn.ui/src/org/eclipse/ecf/internal/mylyn/ui/NoopECFStart.java22
-rwxr-xr-xincubation/bundles/org.eclipse.ecf.mylyn.ui/src/org/eclipse/ecf/internal/mylyn/ui/SelectTaskDialog.java96
-rwxr-xr-xincubation/bundles/org.eclipse.ecf.mylyn.ui/src/org/eclipse/ecf/internal/mylyn/ui/SendContextContributionItem.java130
18 files changed, 1241 insertions, 0 deletions
diff --git a/incubation/bundles/org.eclipse.ecf.mylyn.ui/.classpath b/incubation/bundles/org.eclipse.ecf.mylyn.ui/.classpath
new file mode 100755
index 000000000..ce7393340
--- /dev/null
+++ b/incubation/bundles/org.eclipse.ecf.mylyn.ui/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/incubation/bundles/org.eclipse.ecf.mylyn.ui/.project b/incubation/bundles/org.eclipse.ecf.mylyn.ui/.project
new file mode 100755
index 000000000..0069d57e1
--- /dev/null
+++ b/incubation/bundles/org.eclipse.ecf.mylyn.ui/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.ecf.mylyn.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>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/incubation/bundles/org.eclipse.ecf.mylyn.ui/.settings/org.eclipse.jdt.core.prefs b/incubation/bundles/org.eclipse.ecf.mylyn.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100755
index 000000000..78523cd05
--- /dev/null
+++ b/incubation/bundles/org.eclipse.ecf.mylyn.ui/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,331 @@
+#Thu Aug 16 11:00:59 EDT 2007
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.4
+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.maxProblemPerUnit=1000
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+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=error
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+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=warning
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=error
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=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=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning
+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.unsafeTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=error
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.3
+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_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_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_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.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+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=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+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=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+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.format_guardian_clause_on_one_line=false
+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=true
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=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=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not 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=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not 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=do not 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=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=do not 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_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_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=do not 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_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=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=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_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_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.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=800
+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=false
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+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.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/incubation/bundles/org.eclipse.ecf.mylyn.ui/.settings/org.eclipse.jdt.ui.prefs b/incubation/bundles/org.eclipse.ecf.mylyn.ui/.settings/org.eclipse.jdt.ui.prefs
new file mode 100755
index 000000000..1546d829a
--- /dev/null
+++ b/incubation/bundles/org.eclipse.ecf.mylyn.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,58 @@
+#Tue Aug 21 11:27:48 CDT 2007
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_core
+formatter_settings_version=11
+internal.default.compliance=user
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=;
+org.eclipse.jdt.ui.ondemandthreshold=3
+org.eclipse.jdt.ui.staticondemandthreshold=99
+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_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+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=false
+sp_cleanup.format_source_code=true
+sp_cleanup.make_local_variable_final=false
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_variable_declarations_final=true
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=false
+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=false
+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=false
+sp_cleanup.remove_unused_imports=false
+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=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/incubation/bundles/org.eclipse.ecf.mylyn.ui/META-INF/MANIFEST.MF b/incubation/bundles/org.eclipse.ecf.mylyn.ui/META-INF/MANIFEST.MF
new file mode 100755
index 000000000..13324a2f7
--- /dev/null
+++ b/incubation/bundles/org.eclipse.ecf.mylyn.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,20 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %plugin.name
+Bundle-SymbolicName: org.eclipse.ecf.mylyn.ui;singleton:=true
+Bundle-Version: 0.1.0
+Bundle-Activator: org.eclipse.ecf.internal.mylyn.ui.Activator
+Bundle-Vendor: %provider.name
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.ecf,
+ org.eclipse.ecf.presence,
+ org.eclipse.ecf.datashare,
+ org.eclipse.mylyn.tasks.core,
+ org.eclipse.mylyn.tasks.ui,
+ org.eclipse.ecf.presence.ui,
+ org.eclipse.mylyn.context.core,
+ org.eclipse.ui.forms
+Bundle-RequiredExecutionEnvironment: J2SE-1.4
+Eclipse-LazyStart: true
diff --git a/incubation/bundles/org.eclipse.ecf.mylyn.ui/about.html b/incubation/bundles/org.eclipse.ecf.mylyn.ui/about.html
new file mode 100755
index 000000000..6a60a262f
--- /dev/null
+++ b/incubation/bundles/org.eclipse.ecf.mylyn.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 29, 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</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/incubation/bundles/org.eclipse.ecf.mylyn.ui/build.properties b/incubation/bundles/org.eclipse.ecf.mylyn.ui/build.properties
new file mode 100755
index 000000000..e9863e281
--- /dev/null
+++ b/incubation/bundles/org.eclipse.ecf.mylyn.ui/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml
diff --git a/incubation/bundles/org.eclipse.ecf.mylyn.ui/icons/full/dtool16/shared_task.gif b/incubation/bundles/org.eclipse.ecf.mylyn.ui/icons/full/dtool16/shared_task.gif
new file mode 100755
index 000000000..788e3ba21
--- /dev/null
+++ b/incubation/bundles/org.eclipse.ecf.mylyn.ui/icons/full/dtool16/shared_task.gif
Binary files differ
diff --git a/incubation/bundles/org.eclipse.ecf.mylyn.ui/icons/full/etool16/shared_task.gif b/incubation/bundles/org.eclipse.ecf.mylyn.ui/icons/full/etool16/shared_task.gif
new file mode 100755
index 000000000..19de74e0a
--- /dev/null
+++ b/incubation/bundles/org.eclipse.ecf.mylyn.ui/icons/full/etool16/shared_task.gif
Binary files differ
diff --git a/incubation/bundles/org.eclipse.ecf.mylyn.ui/plugin.properties b/incubation/bundles/org.eclipse.ecf.mylyn.ui/plugin.properties
new file mode 100755
index 000000000..fba31fa42
--- /dev/null
+++ b/incubation/bundles/org.eclipse.ecf.mylyn.ui/plugin.properties
@@ -0,0 +1,13 @@
+################################################################################
+# Copyright (c) 2007 IBM Corporation 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:
+# IBM Corporation - initial API and implementation
+################################################################################
+
+plugin.name = ECF Mylyn Integration
+provider.name = Eclipse.org
diff --git a/incubation/bundles/org.eclipse.ecf.mylyn.ui/plugin.xml b/incubation/bundles/org.eclipse.ecf.mylyn.ui/plugin.xml
new file mode 100755
index 000000000..a5312e928
--- /dev/null
+++ b/incubation/bundles/org.eclipse.ecf.mylyn.ui/plugin.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+ <extension
+ point="org.eclipse.ecf.start">
+ <run
+ asynchronous="true"
+ class="org.eclipse.ecf.internal.mylyn.ui.NoopECFStart">
+ </run>
+ </extension>
+ <extension point="org.eclipse.ui.commands">
+ <command defaultHandler="org.eclipse.ecf.internal.mylyn.ui.ActivateReceivedContextHandler"
+ id="org.eclipse.ecf.internal.mylyn.ui.activateReceivedContextCommand" name="Activate Received Context...">
+ </command>
+ </extension>
+ <extension point="org.eclipse.ui.menus">
+ <menuContribution
+ locationURI="popup:org.eclipse.mylyn.tasks.ui.views.tasks?after=additions">
+ <dynamic
+ class="org.eclipse.ecf.internal.mylyn.ui.SendContextContributionItem"
+ id="org.eclipse.ecf.mylyn.ui.sendContextMenuContribution">
+ </dynamic>
+ </menuContribution>
+ <menuContribution locationURI="toolbar:org.eclipse.ui.trim.status">
+ <toolbar id="org.eclipse.ecf.internal.mylyn.ui.trimToolbar">
+ <command
+ commandId="org.eclipse.ecf.internal.mylyn.ui.activateReceivedContextCommand"
+ disabledIcon="icons/full/dtool16/shared_task.gif"
+ icon="icons/full/etool16/shared_task.gif"
+ id="org.eclipse.ecf.internal.mylyn.ui.activateReceivedContextCommandContribution"
+ style="pulldown"
+ tooltip="Activate Received Context...">
+ </command>
+ </toolbar>
+ </menuContribution>
+ <menuContribution locationURI="menu:org.eclipse.ecf.internal.mylyn.ui.activateReceivedContextCommandContribution">
+ <dynamic
+ class="org.eclipse.ecf.internal.mylyn.ui.CompoundContextActivationContributionItem"
+ id="org.eclipse.ecf.mylyn.ui.dynamic1">
+ </dynamic>
+ </menuContribution>
+ </extension>
+</plugin>
diff --git a/incubation/bundles/org.eclipse.ecf.mylyn.ui/src/org/eclipse/ecf/internal/mylyn/ui/ActivateReceivedContextHandler.java b/incubation/bundles/org.eclipse.ecf.mylyn.ui/src/org/eclipse/ecf/internal/mylyn/ui/ActivateReceivedContextHandler.java
new file mode 100755
index 000000000..d26d76315
--- /dev/null
+++ b/incubation/bundles/org.eclipse.ecf.mylyn.ui/src/org/eclipse/ecf/internal/mylyn/ui/ActivateReceivedContextHandler.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2007 IBM Corporation 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:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.ecf.internal.mylyn.ui;
+
+import org.eclipse.core.commands.*;
+import org.eclipse.ecf.internal.mylyn.ui.CompoundContextActivationContributionItem.ActivateTaskAction;
+import org.eclipse.jface.window.Window;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+public class ActivateReceivedContextHandler extends AbstractHandler {
+
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ Shell shell = HandlerUtil.getActiveShell(event);
+ if (shell != null) {
+ open(shell);
+ }
+ return null;
+ }
+
+ static void open(Shell shell) {
+ SelectTaskDialog dialog = new SelectTaskDialog(shell);
+ dialog.setInput(CompoundContextActivationContributionItem.tasks);
+ if (Window.OK == dialog.open()) {
+ ActivateTaskAction action = new CompoundContextActivationContributionItem.ActivateTaskAction();
+ action.setTask(dialog.getTask());
+ action.run();
+ }
+ }
+}
diff --git a/incubation/bundles/org.eclipse.ecf.mylyn.ui/src/org/eclipse/ecf/internal/mylyn/ui/Activator.java b/incubation/bundles/org.eclipse.ecf.mylyn.ui/src/org/eclipse/ecf/internal/mylyn/ui/Activator.java
new file mode 100755
index 000000000..b179a33c2
--- /dev/null
+++ b/incubation/bundles/org.eclipse.ecf.mylyn.ui/src/org/eclipse/ecf/internal/mylyn/ui/Activator.java
@@ -0,0 +1,163 @@
+/*******************************************************************************
+ * Copyright (c) 2007 IBM Corporation 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:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.ecf.internal.mylyn.ui;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.util.List;
+import java.util.Set;
+import org.eclipse.core.runtime.*;
+import org.eclipse.ecf.core.identity.ID;
+import org.eclipse.ecf.datashare.*;
+import org.eclipse.ecf.datashare.events.IChannelEvent;
+import org.eclipse.ecf.datashare.events.IChannelMessageEvent;
+import org.eclipse.ecf.presence.service.IPresenceService;
+import org.eclipse.jface.resource.ImageRegistry;
+import org.eclipse.mylyn.context.core.ContextCorePlugin;
+import org.eclipse.mylyn.internal.context.core.InteractionContext;
+import org.eclipse.mylyn.tasks.core.AbstractTask;
+import org.eclipse.mylyn.tasks.ui.TasksUiPlugin;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.eclipse.ui.progress.UIJob;
+import org.osgi.framework.*;
+
+public class Activator extends AbstractUIPlugin implements IChannelListener, ServiceListener {
+
+ static final String PLUGIN_ID = "org.eclipse.ecf.mylyn.ui"; //$NON-NLS-1$
+
+ private static Activator plugin;
+
+ private BundleContext context;
+
+ public void start(final BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ this.context = context;
+ context.addServiceListener(this);
+ }
+
+ protected void initializeImageRegistry(ImageRegistry reg) {
+ reg.put("IMG_SHARED_TASK", imageDescriptorFromPlugin(PLUGIN_ID, "icons/full/etool16/shared_task.gif").createImage());
+ }
+
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ context.removeServiceListener(this);
+ super.stop(context);
+ }
+
+ private void registerChannel(IChannelContainerAdapter channelAdapter) {
+ try {
+ ID channelID = channelAdapter.getChannelNamespace().createInstance(new Object[] {Activator.PLUGIN_ID});
+ IChannel channel = channelAdapter.getChannel(channelID);
+ if (channel == null) {
+ channel = channelAdapter.createChannel(channelID, this, null);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ private void unregisterChannel(IChannelContainerAdapter channelAdapter) {
+ try {
+ ID channelID = channelAdapter.getChannelNamespace().createInstance(new Object[] {Activator.PLUGIN_ID});
+ channelAdapter.removeChannel(channelID);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ public synchronized void handleChannelEvent(IChannelEvent e) {
+ if (e instanceof IChannelMessageEvent) {
+ IChannelMessageEvent msgEvent = (IChannelMessageEvent) e;
+ byte[] data = msgEvent.getData();
+ File file = new File(getStateLocation().toFile(), "incoming.xml.zip");
+ try {
+ FileOutputStream fos = new FileOutputStream(file);
+ fos.write(data);
+ List tasks = TasksUiPlugin.getTaskListManager().getTaskListWriter().readTasks(file);
+ final AbstractTask task = (AbstractTask) tasks.get(0);
+ Set repositories = TasksUiPlugin.getTaskListManager().getTaskListWriter().readRepositories(file);
+ TasksUiPlugin.getRepositoryManager().insertRepositories(repositories, TasksUiPlugin.getDefault().getRepositoriesFilePath());
+ InteractionContext context = ContextCorePlugin.getContextManager().loadContext(task.getHandleIdentifier(), file);
+ CompoundContextActivationContributionItem.enqueue(task, context);
+
+ IWorkbenchWindow[] windows = PlatformUI.getWorkbench().getWorkbenchWindows();
+ Shell aShell = null;
+ for (int i = 0; i < windows.length; i++) {
+ aShell = windows[i].getShell();
+ if (aShell != null) {
+ break;
+ }
+ }
+
+ if (aShell == null) {
+ return;
+ }
+
+ final Shell shell = aShell;
+
+ UIJob job = new UIJob("Notify of incoming shared task") {
+ public IStatus runInUIThread(IProgressMonitor monitor) {
+ final IncomingSharedTaskNotificationPopup popup = new IncomingSharedTaskNotificationPopup(shell);
+ popup.setTask(task);
+ popup.open();
+
+ new UIJob(shell.getDisplay(), "Close Popup Job") { //$NON-NLS-1$
+ public IStatus runInUIThread(IProgressMonitor monitor) {
+ Shell shell = popup.getShell();
+ if (shell != null && !shell.isDisposed()) {
+ popup.close();
+ }
+ monitor.done();
+ return Status.OK_STATUS;
+ }
+ }.schedule(5000);
+ return Status.OK_STATUS;
+ }
+ };
+ job.schedule();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ } finally {
+ file.delete();
+ }
+ }
+ }
+
+ public void serviceChanged(ServiceEvent event) {
+ Object service = context.getService(event.getServiceReference());
+ if (service instanceof IAdaptable) {
+ service = ((IAdaptable) service).getAdapter(IPresenceService.class);
+ }
+ if (service instanceof IPresenceService) {
+ IPresenceService presenceService = (IPresenceService) service;
+ IChannelContainerAdapter channelAdapter = (IChannelContainerAdapter) presenceService.getAdapter(IChannelContainerAdapter.class);
+ if (channelAdapter != null) {
+ switch (event.getType()) {
+ case ServiceEvent.REGISTERED :
+ registerChannel(channelAdapter);
+ break;
+ case ServiceEvent.UNREGISTERING :
+ unregisterChannel(channelAdapter);
+ break;
+ }
+ }
+ }
+ }
+
+ public static Activator getDefault() {
+ return plugin;
+ }
+}
diff --git a/incubation/bundles/org.eclipse.ecf.mylyn.ui/src/org/eclipse/ecf/internal/mylyn/ui/CompoundContextActivationContributionItem.java b/incubation/bundles/org.eclipse.ecf.mylyn.ui/src/org/eclipse/ecf/internal/mylyn/ui/CompoundContextActivationContributionItem.java
new file mode 100755
index 000000000..9a3bb9f15
--- /dev/null
+++ b/incubation/bundles/org.eclipse.ecf.mylyn.ui/src/org/eclipse/ecf/internal/mylyn/ui/CompoundContextActivationContributionItem.java
@@ -0,0 +1,136 @@
+/*******************************************************************************
+ * Copyright (c) 2007 IBM Corporation 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:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.ecf.internal.mylyn.ui;
+
+import java.util.*;
+import org.eclipse.core.runtime.*;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.action.*;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.mylyn.context.core.ContextCorePlugin;
+import org.eclipse.mylyn.internal.context.core.InteractionContext;
+import org.eclipse.mylyn.internal.tasks.ui.ITasksUiConstants;
+import org.eclipse.mylyn.tasks.core.AbstractTask;
+import org.eclipse.mylyn.tasks.core.TaskList;
+import org.eclipse.mylyn.tasks.ui.TasksUiPlugin;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.actions.CompoundContributionItem;
+import org.eclipse.ui.progress.UIJob;
+
+public class CompoundContextActivationContributionItem extends CompoundContributionItem {
+
+ static LinkedList tasks = new LinkedList();
+
+ static Map contexts = new HashMap();
+
+ private static ActivateTaskAction[] actions = new ActivateTaskAction[5];
+
+ private static Shell shell;
+
+ static {
+ for (int i = 0; i < 5; i++) {
+ actions[i] = new ActivateTaskAction();
+ }
+ }
+
+ public void fill(Menu menu, int index) {
+ super.fill(menu, index);
+ shell = menu.getShell();
+ }
+
+ protected IContributionItem[] getContributionItems() {
+ int count = 0;
+ for (Iterator it = tasks.iterator(); it.hasNext() && count != 5;) {
+ AbstractTask task = (AbstractTask) it.next();
+ actions[count].setTask(task);
+ count++;
+ }
+
+ IContributionItem[] array = null;
+
+ if (count == 5 && tasks.size() != 5) {
+ array = new IContributionItem[7];
+ array[5] = new Separator();
+ array[6] = new ActionContributionItem(new Action("Activate received task...") {
+ public void run() {
+ ActivateReceivedContextHandler.open(shell);
+ }
+ });
+ } else {
+ array = new IContributionItem[count];
+ }
+
+ for (int i = 0; i < count; i++) {
+ array[i] = new ActionContributionItem(actions[i]);
+ }
+
+ return array;
+ }
+
+ static void enqueue(AbstractTask task, InteractionContext context) {
+ tasks.add(task);
+ contexts.put(task, context);
+ }
+
+ static class ActivateTaskAction extends Action {
+ private AbstractTask task;
+
+ void setTask(AbstractTask task) {
+ this.task = task;
+ setText(task.getSummary());
+ }
+
+ public void run() {
+ final InteractionContext context = (InteractionContext) contexts.get(task);
+
+ final TaskList taskList = TasksUiPlugin.getTaskListManager().getTaskList();
+ if (taskList.getTask(task.getHandleIdentifier()) != null) {
+ boolean confirmed = MessageDialog.openConfirm(shell, ITasksUiConstants.TITLE_DIALOG, "The task '" + task.getSummary() + "' already exists. Do you want to override its context with the source?");
+ if (confirmed) {
+ Job job = new Job("Import context") {
+ protected IStatus run(IProgressMonitor monitor) {
+ ContextCorePlugin.getContextManager().importContext(context);
+ scheduleTaskActivationJob();
+ return Status.OK_STATUS;
+ }
+ };
+ job.schedule();
+ } else {
+ return;
+ }
+ } else {
+ Job job = new Job("Import task") {
+ protected IStatus run(IProgressMonitor monitor) {
+ ContextCorePlugin.getContextManager().importContext(context);
+ taskList.insertTask(task, null, null);
+ scheduleTaskActivationJob();
+ return Status.OK_STATUS;
+ }
+ };
+ job.schedule();
+ }
+ tasks.remove(task);
+ contexts.remove(task);
+ }
+
+ private void scheduleTaskActivationJob() {
+ UIJob job = new UIJob(shell.getDisplay(), "Activate imported task") {
+ public IStatus runInUIThread(IProgressMonitor monitor) {
+ TasksUiPlugin.getTaskListManager().activateTask(task);
+ return Status.OK_STATUS;
+ }
+ };
+ job.schedule();
+ }
+ }
+
+}
diff --git a/incubation/bundles/org.eclipse.ecf.mylyn.ui/src/org/eclipse/ecf/internal/mylyn/ui/IncomingSharedTaskNotificationPopup.java b/incubation/bundles/org.eclipse.ecf.mylyn.ui/src/org/eclipse/ecf/internal/mylyn/ui/IncomingSharedTaskNotificationPopup.java
new file mode 100755
index 000000000..afe8100f9
--- /dev/null
+++ b/incubation/bundles/org.eclipse.ecf.mylyn.ui/src/org/eclipse/ecf/internal/mylyn/ui/IncomingSharedTaskNotificationPopup.java
@@ -0,0 +1,123 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ * Rob Elves - creator of the original TaskListNotificationPopup class
+ *******************************************************************************/
+
+package org.eclipse.ecf.internal.mylyn.ui;
+
+import org.eclipse.ecf.internal.mylyn.ui.CompoundContextActivationContributionItem.ActivateTaskAction;
+import org.eclipse.jface.dialogs.PopupDialog;
+import org.eclipse.mylyn.tasks.core.AbstractTask;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.*;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.forms.events.HyperlinkAdapter;
+import org.eclipse.ui.forms.events.HyperlinkEvent;
+import org.eclipse.ui.forms.widgets.*;
+
+class IncomingSharedTaskNotificationPopup extends PopupDialog {
+
+ private FormToolkit toolkit;
+
+ private Form form;
+
+ private Composite sectionClient;
+
+ private AbstractTask task;
+
+ IncomingSharedTaskNotificationPopup(Shell parent) {
+ super(parent, PopupDialog.INFOPOPUP_SHELLSTYLE | SWT.ON_TOP, false, false, false, false, null, null);
+ }
+
+ public boolean close() {
+ toolkit.dispose();
+ return super.close();
+ }
+
+ void setTask(AbstractTask task) {
+ this.task = task;
+ }
+
+ protected Control createContents(Composite parent) {
+ getShell().setBackground(getShell().getDisplay().getSystemColor(SWT.COLOR_GRAY));
+ toolkit = new FormToolkit(parent.getDisplay());
+ form = toolkit.createForm(parent);
+ form.getBody().setLayout(new FillLayout());
+
+ Section section = toolkit.createSection(form.getBody(), ExpandableComposite.TITLE_BAR);
+ section.setText("Incoming Shared Task");
+ section.setLayout(new FillLayout());
+
+ sectionClient = toolkit.createComposite(section);
+ sectionClient.setLayout(new GridLayout());
+
+ Hyperlink link = toolkit.createHyperlink(sectionClient, task.getTaskId(), SWT.NONE);
+ link.addHyperlinkListener(new HyperlinkAdapter() {
+ public void linkActivated(HyperlinkEvent e) {
+ ActivateTaskAction action = new CompoundContextActivationContributionItem.ActivateTaskAction();
+ action.setTask(task);
+ action.run();
+ }
+ });
+
+ toolkit.createLabel(sectionClient, task.getSummary(), SWT.WRAP);
+
+ section.setClient(sectionClient);
+
+ ImageHyperlink hyperlink = toolkit.createImageHyperlink(section, SWT.NONE);
+ hyperlink.setBackground(null);
+ hyperlink.setImage(PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_TOOL_DELETE));
+ hyperlink.addHyperlinkListener(new HyperlinkAdapter() {
+ public void linkActivated(HyperlinkEvent e) {
+ close();
+ }
+ });
+
+ section.setTextClient(hyperlink);
+
+ form.pack();
+ return parent;
+ }
+
+ /**
+ * Initialize the shell's bounds.
+ */
+ public void initializeBounds() {
+ getShell().setBounds(restoreBounds());
+ }
+
+ private Rectangle restoreBounds() {
+ Rectangle bounds = form.getBounds();
+ Rectangle maxBounds = getShell().getMonitor().getClientArea();
+
+ if (bounds.width > -1 && bounds.height > -1) {
+ if (maxBounds != null) {
+ bounds.width = Math.min(bounds.width, maxBounds.width);
+ bounds.height = Math.min(bounds.height, maxBounds.height);
+ }
+ // Enforce an absolute minimal size
+ bounds.width = Math.max(bounds.width, 30);
+ bounds.height = Math.max(bounds.height, 30);
+ }
+
+ if (bounds.x > -1 && bounds.y > -1 && maxBounds != null) {
+ if (bounds.width > -1 && bounds.height > -1) {
+ bounds.x = maxBounds.x + maxBounds.width - bounds.width;
+ bounds.y = maxBounds.y + maxBounds.height - bounds.height;
+ }
+ }
+
+ return bounds;
+ }
+}
diff --git a/incubation/bundles/org.eclipse.ecf.mylyn.ui/src/org/eclipse/ecf/internal/mylyn/ui/NoopECFStart.java b/incubation/bundles/org.eclipse.ecf.mylyn.ui/src/org/eclipse/ecf/internal/mylyn/ui/NoopECFStart.java
new file mode 100755
index 000000000..47b81e946
--- /dev/null
+++ b/incubation/bundles/org.eclipse.ecf.mylyn.ui/src/org/eclipse/ecf/internal/mylyn/ui/NoopECFStart.java
@@ -0,0 +1,22 @@
+/*******************************************************************************
+ * Copyright (c) 2007 IBM Corporation 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:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.ecf.internal.mylyn.ui;
+
+import org.eclipse.core.runtime.*;
+import org.eclipse.ecf.core.start.IECFStart;
+
+public class NoopECFStart implements IECFStart {
+
+ public IStatus run(IProgressMonitor monitor) {
+ return Status.OK_STATUS;
+ }
+
+}
diff --git a/incubation/bundles/org.eclipse.ecf.mylyn.ui/src/org/eclipse/ecf/internal/mylyn/ui/SelectTaskDialog.java b/incubation/bundles/org.eclipse.ecf.mylyn.ui/src/org/eclipse/ecf/internal/mylyn/ui/SelectTaskDialog.java
new file mode 100755
index 000000000..f0ff2629f
--- /dev/null
+++ b/incubation/bundles/org.eclipse.ecf.mylyn.ui/src/org/eclipse/ecf/internal/mylyn/ui/SelectTaskDialog.java
@@ -0,0 +1,96 @@
+/*******************************************************************************
+ * Copyright (c) 2007 IBM Corporation 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:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.ecf.internal.mylyn.ui;
+
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.viewers.*;
+import org.eclipse.mylyn.tasks.core.AbstractTask;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.*;
+
+class SelectTaskDialog extends Dialog {
+
+ private ListViewer viewer;
+
+ private AbstractTask task;
+
+ private Object input;
+
+ SelectTaskDialog(Shell shell) {
+ super(shell);
+ }
+
+ protected void configureShell(Shell newShell) {
+ super.configureShell(newShell);
+ newShell.setText("Task Selection");
+ }
+
+ public void create() {
+ super.create();
+ getButton(IDialogConstants.OK_ID).setEnabled(false);
+ }
+
+ public Control createDialogArea(Composite parent) {
+ parent = (Composite) super.createDialogArea(parent);
+ parent.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ parent.setLayout(new GridLayout(1, true));
+
+ viewer = new ListViewer(parent);
+ viewer.getList().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ viewer.setContentProvider(new ArrayContentProvider());
+ viewer.setLabelProvider(new LabelProvider() {
+ public String getText(Object element) {
+ String summary = ((AbstractTask) element).getSummary();
+ if (summary.length() > 30) {
+ return summary.substring(0, 30) + "..."; //$NON-NLS-1$
+ } else {
+ return summary;
+ }
+ }
+ });
+ viewer.addSelectionChangedListener(new ISelectionChangedListener() {
+ public void selectionChanged(SelectionChangedEvent event) {
+ getButton(IDialogConstants.OK_ID).setEnabled(true);
+ }
+ });
+ viewer.addOpenListener(new IOpenListener() {
+ public void open(OpenEvent e) {
+ okPressed();
+ }
+ });
+ viewer.setInput(input);
+
+ return parent;
+ }
+
+ protected Point getInitialSize() {
+ Point point = super.getInitialSize();
+ return new Point(point.x, 400);
+ }
+
+ protected void okPressed() {
+ task = (AbstractTask) ((IStructuredSelection) viewer.getSelection()).getFirstElement();
+ super.okPressed();
+ }
+
+ void setInput(Object input) {
+ this.input = input;
+ }
+
+ AbstractTask getTask() {
+ return task;
+ }
+
+}
diff --git a/incubation/bundles/org.eclipse.ecf.mylyn.ui/src/org/eclipse/ecf/internal/mylyn/ui/SendContextContributionItem.java b/incubation/bundles/org.eclipse.ecf.mylyn.ui/src/org/eclipse/ecf/internal/mylyn/ui/SendContextContributionItem.java
new file mode 100755
index 000000000..e6b6bbb62
--- /dev/null
+++ b/incubation/bundles/org.eclipse.ecf.mylyn.ui/src/org/eclipse/ecf/internal/mylyn/ui/SendContextContributionItem.java
@@ -0,0 +1,130 @@
+/*******************************************************************************
+ * Copyright (c) 2007 IBM Corporation 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:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.ecf.internal.mylyn.ui;
+
+import java.io.*;
+import java.net.URLEncoder;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.*;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.ecf.core.identity.ID;
+import org.eclipse.ecf.core.identity.IDCreateException;
+import org.eclipse.ecf.datashare.IChannel;
+import org.eclipse.ecf.datashare.IChannelContainerAdapter;
+import org.eclipse.ecf.presence.IPresenceContainerAdapter;
+import org.eclipse.ecf.presence.roster.IRosterEntry;
+import org.eclipse.ecf.presence.ui.menu.AbstractRosterMenuContributionItem;
+import org.eclipse.ecf.presence.ui.menu.AbstractRosterMenuHandler;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.viewers.*;
+import org.eclipse.mylyn.internal.tasks.ui.ITasksUiConstants;
+import org.eclipse.mylyn.tasks.core.AbstractTask;
+import org.eclipse.mylyn.tasks.ui.TasksUiPlugin;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchSite;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+public class SendContextContributionItem extends AbstractRosterMenuContributionItem {
+
+ public SendContextContributionItem() {
+ setTopMenuName("Send Context");
+ setTopMenuImageDescriptor(Activator.getDefault().getImageRegistry().getDescriptor("IMG_SHARED_TASK"));
+ }
+
+ private String encodeName(AbstractTask task) {
+ try {
+ return URLEncoder.encode(task.getHandleIdentifier(), ITasksUiConstants.FILENAME_ENCODING);
+ } catch (UnsupportedEncodingException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ protected IContributionItem[] createContributionItemsForPresenceContainer(IPresenceContainerAdapter presenceContainerAdapter) {
+ // if this IPCA doesn't support the datashare APIs, we should not create any contribution items
+ IChannelContainerAdapter channelAdapter = (IChannelContainerAdapter) presenceContainerAdapter.getAdapter(IChannelContainerAdapter.class);
+ if (channelAdapter == null) {
+ return new IContributionItem[0];
+ }
+ return super.createContributionItemsForPresenceContainer(presenceContainerAdapter);
+ }
+
+ protected AbstractRosterMenuHandler createRosterEntryHandler(final IRosterEntry rosterEntry) {
+ return new AbstractRosterMenuHandler(rosterEntry) {
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ IWorkbenchPart part = HandlerUtil.getActivePart(event);
+ if (part == null) {
+ return null;
+ }
+ IWorkbenchSite site = part.getSite();
+ if (site == null) {
+ return null;
+ }
+ ISelectionProvider provider = site.getSelectionProvider();
+ if (provider == null) {
+ return null;
+ }
+ ISelection selection = provider.getSelection();
+ if (selection instanceof IStructuredSelection) {
+ IChannelContainerAdapter icca = (IChannelContainerAdapter) rosterEntry.getRoster().getPresenceContainerAdapter().getAdapter(IChannelContainerAdapter.class);
+ ID channelID;
+ try {
+ channelID = icca.getChannelNamespace().createInstance(new Object[] {Activator.PLUGIN_ID});
+ } catch (IDCreateException e1) {
+ return null;
+ }
+ final IChannel channel = icca.getChannel(channelID);
+ if (channel == null) {
+ return null;
+ }
+ Object element = ((IStructuredSelection) selection).getFirstElement();
+ if (element instanceof AbstractTask) {
+ final AbstractTask task = (AbstractTask) element;
+ Job job = new Job("Send Task") {
+ protected IStatus run(IProgressMonitor monitor) {
+ monitor.beginTask("Sending task...", 100);
+ File tmpDir = new File(System.getProperty("java.io.tmpdir")); //$NON-NLS-1$
+ File outputFile = new File(tmpDir, encodeName(task));
+ TasksUiPlugin.getTaskListManager().getTaskListWriter().writeTask(task, outputFile);
+ monitor.worked(30);
+ FileInputStream stream = null;
+ try {
+ byte[] data = new byte[(int) outputFile.length()];
+ stream = new FileInputStream(outputFile);
+ stream.read(data);
+ monitor.worked(30);
+ channel.sendMessage(getRosterEntry().getUser().getID(), data);
+ monitor.worked(40);
+ } catch (Exception e) {
+ return new Status(IStatus.ERROR, Activator.PLUGIN_ID, "An error occurred while sending the task.", e);
+ } finally {
+ try {
+ if (stream != null) {
+ stream.close();
+ }
+ } catch (Exception e) {
+ // ignored
+ }
+ outputFile.delete();
+ monitor.done();
+ }
+ return Status.OK_STATUS;
+ }
+ };
+ job.schedule();
+ }
+ }
+ return null;
+ }
+
+ };
+ }
+}

Back to the top