Backport code changes from RCP
diff --git a/bundles/org.eclipse.rap.pde.runtime/.classpath b/bundles/org.eclipse.rap.pde.runtime/.classpath
index 2fbb7a2..ad32c83 100644
--- a/bundles/org.eclipse.rap.pde.runtime/.classpath
+++ b/bundles/org.eclipse.rap.pde.runtime/.classpath
@@ -1,6 +1,6 @@
<?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.4"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/bundles/org.eclipse.rap.pde.runtime/.settings/org.eclipse.core.resources.prefs b/bundles/org.eclipse.rap.pde.runtime/.settings/org.eclipse.core.resources.prefs
index 1dbea0b..fc21a08 100644
--- a/bundles/org.eclipse.rap.pde.runtime/.settings/org.eclipse.core.resources.prefs
+++ b/bundles/org.eclipse.rap.pde.runtime/.settings/org.eclipse.core.resources.prefs
@@ -1,7 +1,6 @@
-#Fri Oct 20 13:22:13 EDT 2006
-eclipse.preferences.version=1
-encoding//core/framework/org/eclipse/osgi/framework/internal/core/default.permissions=UTF-8
-encoding//core/framework/org/eclipse/osgi/framework/internal/core/implied.permissions=UTF-8
-encoding//core/framework/org/eclipse/osgi/framework/internal/core/osname.aliases=UTF-8
-encoding//core/framework/org/eclipse/osgi/framework/internal/core/processor.aliases=UTF-8
-encoding/<project>=ISO-8859-1
+eclipse.preferences.version=1
+encoding//core/framework/org/eclipse/osgi/framework/internal/core/default.permissions=UTF-8
+encoding//core/framework/org/eclipse/osgi/framework/internal/core/implied.permissions=UTF-8
+encoding//core/framework/org/eclipse/osgi/framework/internal/core/osname.aliases=UTF-8
+encoding//core/framework/org/eclipse/osgi/framework/internal/core/processor.aliases=UTF-8
+encoding/<project>=UTF-8
diff --git a/bundles/org.eclipse.rap.pde.runtime/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.rap.pde.runtime/.settings/org.eclipse.jdt.core.prefs
index 68b4fae..62ec106 100644
--- a/bundles/org.eclipse.rap.pde.runtime/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.rap.pde.runtime/.settings/org.eclipse.jdt.core.prefs
@@ -1,6 +1,393 @@
eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
-org.eclipse.jdt.core.compiler.compliance=1.4
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
-org.eclipse.jdt.core.compiler.source=1.3
+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.recreateModifiedClassFileInOutputFolder=ignore
+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=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+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=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=error
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+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.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=error
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=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.missingJavadocTagDescription=return_tag
+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.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+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.nullReference=error
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=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.unusedDeclaredThrownException=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=error
+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=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.6
+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=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_lambda_body=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=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=true
+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=80
+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=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=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=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=do not 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_lambda_arrow=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_lambda_arrow=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=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+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
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/bundles/org.eclipse.rap.pde.runtime/.settings/org.eclipse.jdt.launching.prefs b/bundles/org.eclipse.rap.pde.runtime/.settings/org.eclipse.jdt.launching.prefs
index 78562bc..08eb112 100644
--- a/bundles/org.eclipse.rap.pde.runtime/.settings/org.eclipse.jdt.launching.prefs
+++ b/bundles/org.eclipse.rap.pde.runtime/.settings/org.eclipse.jdt.launching.prefs
@@ -1,3 +1,3 @@
-#Mon Oct 13 14:57:59 CDT 2008
-eclipse.preferences.version=1
-org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning
+#Mon Oct 13 14:57:59 CDT 2008
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning
diff --git a/bundles/org.eclipse.rap.pde.runtime/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.rap.pde.runtime/.settings/org.eclipse.jdt.ui.prefs
index 637ce4f..01c4a76 100644
--- a/bundles/org.eclipse.rap.pde.runtime/.settings/org.eclipse.jdt.ui.prefs
+++ b/bundles/org.eclipse.rap.pde.runtime/.settings/org.eclipse.jdt.ui.prefs
@@ -1,60 +1,66 @@
-#Mon Oct 13 14:57:58 CDT 2008
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_core
-formatter_settings_version=11
-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_methods=false
-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.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=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
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=org.eclipse.jdt.ui.default.eclipse_profile
+formatter_settings_version=12
+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=false
+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_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=true
+sp_cleanup.insert_inferred_type_arguments=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=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_redundant_type_arguments=false
+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_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=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
+sp_cleanup.use_type_arguments=false
diff --git a/bundles/org.eclipse.rap.pde.runtime/.settings/org.eclipse.pde.prefs b/bundles/org.eclipse.rap.pde.runtime/.settings/org.eclipse.pde.prefs
index ac138a5..88a12c6 100644
--- a/bundles/org.eclipse.rap.pde.runtime/.settings/org.eclipse.pde.prefs
+++ b/bundles/org.eclipse.rap.pde.runtime/.settings/org.eclipse.pde.prefs
@@ -1,16 +1,34 @@
-#Wed Jan 02 09:57:24 CST 2008
-compilers.incompatible-environment=1
-compilers.p.build=1
-compilers.p.deprecated=1
-compilers.p.missing-bundle-classpath-entries=0
-compilers.p.missing-packages=0
-compilers.p.no-required-att=0
-compilers.p.not-externalized-att=0
-compilers.p.unknown-attribute=1
-compilers.p.unknown-class=0
-compilers.p.unknown-element=1
-compilers.p.unknown-resource=0
-compilers.p.unresolved-ex-points=0
-compilers.p.unresolved-import=0
-compilers.use-project=true
-eclipse.preferences.version=1
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=0
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=1
+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.matching-pom-version=0
+compilers.p.missing-packages=0
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.not-externalized-att=1
+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
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/bundles/org.eclipse.rap.pde.runtime/about.html b/bundles/org.eclipse.rap.pde.runtime/about.html
index e52bf6e..4602330 100644
--- a/bundles/org.eclipse.rap.pde.runtime/about.html
+++ b/bundles/org.eclipse.rap.pde.runtime/about.html
@@ -1,28 +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 2, 2006</p>
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
-indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 ("EPL"). 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, "Program" 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 ("Redistributor") 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>
+<!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 2, 2006</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). 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, "Program" 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 ("Redistributor") 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>
\ No newline at end of file
diff --git a/bundles/org.eclipse.rap.pde.runtime/plugin.properties b/bundles/org.eclipse.rap.pde.runtime/plugin.properties
index 591a74b..1439826 100644
--- a/bundles/org.eclipse.rap.pde.runtime/plugin.properties
+++ b/bundles/org.eclipse.rap.pde.runtime/plugin.properties
@@ -1,25 +1,25 @@
-###############################################################################
-# Copyright (c) 2000, 2010 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.xml properties
-#
-
-name = PDE Runtime
-provider-name = Eclipse.org
-
-views.category.name = Plug-in Development
-views.registry.name= Plug-in Registry
-
-spy-category.name = Spy
-spy-command.name = Plug-in Selection Spy
-spy-command.description = Show the Plug-in Spy
-spy-menu-command.name = Plug-in Menu Spy
-
+###############################################################################
+# Copyright (c) 2000, 2010 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.xml properties
+#
+
+name = PDE Runtime
+provider-name = Eclipse.org
+
+views.category.name = Plug-in Development
+views.registry.name= Plug-in Registry
+
+spy-category.name = Spy
+spy-command.name = Plug-in Selection Spy
+spy-command.description = Show the Plug-in Spy
+spy-menu-command.name = Plug-in Menu Spy
+
diff --git a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/IHelpContextIds.java b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/IHelpContextIds.java
index bdf4471..bdbdb9d 100644
--- a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/IHelpContextIds.java
+++ b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/IHelpContextIds.java
@@ -1,18 +1,19 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 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.pde.internal.runtime;
-
-public interface IHelpContextIds {
-
- public static final String PREFIX = "org.eclipse.pde.doc.user" + "."; //$NON-NLS-1$ //$NON-NLS-2$
- public static final String REGISTRY_VIEW = PREFIX + "registry_view"; //$NON-NLS-1$
- public static final String SPY_DIALOG = PREFIX + "spy_dialog"; //$NON-NLS-1$
-}
+/*******************************************************************************
+ * Copyright (c) 2000, 2008 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.pde.internal.runtime;
+
+public interface IHelpContextIds {
+ public static final String PREFIX = "org.eclipse.pde.doc.user" + "."; //$NON-NLS-1$ //$NON-NLS-2$
+
+ public static final String REGISTRY_VIEW = PREFIX + "registry_view"; //$NON-NLS-1$
+ public static final String SPY_DIALOG = PREFIX + "spy_dialog"; //$NON-NLS-1$
+
+}
diff --git a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/OverlayIcon.java b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/OverlayIcon.java
index 8ff22db..d61f56c 100644
--- a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/OverlayIcon.java
+++ b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/OverlayIcon.java
@@ -1,117 +1,119 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 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.pde.internal.runtime;
-
-import org.eclipse.jface.resource.CompositeImageDescriptor;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.graphics.ImageData;
-import org.eclipse.swt.graphics.Point;
-
-
-public class OverlayIcon extends CompositeImageDescriptor {
-
- static final int DEFAULT_WIDTH = 16;
- static final int DEFAULT_HEIGHT = 16;
- private Point fSize = null;
- private ImageDescriptor fBase;
- private ImageDescriptor fOverlays[][];
-
- public OverlayIcon( ImageDescriptor base, ImageDescriptor[][] overlays ) {
- fBase = base;
- if( fBase == null )
- fBase = ImageDescriptor.getMissingImageDescriptor();
- fOverlays = overlays;
- fSize = new Point( DEFAULT_WIDTH, DEFAULT_HEIGHT );
- }
-
- public OverlayIcon( ImageDescriptor base, ImageDescriptor[][] overlays, Point size ) {
- fBase = base;
- if( fBase == null )
- fBase = ImageDescriptor.getMissingImageDescriptor();
- fOverlays = overlays;
- fSize = size;
- }
-
- protected void drawBottomLeft( ImageDescriptor[] overlays ) {
- if( overlays == null )
- return;
- int length = overlays.length;
- int x = 0;
- for( int i = 0; i < 3; i++ ) {
- if( i < length && overlays[ i ] != null ) {
- ImageData id = overlays[ i ].getImageData();
- drawImage( id, x, getSize().y - id.height );
- x += id.width;
- }
- }
- }
-
- protected void drawBottomRight( ImageDescriptor[] overlays ) {
- if( overlays == null )
- return;
- int length = overlays.length;
- int x = getSize().x;
- for( int i = 2; i >= 0; i-- ) {
- if( i < length && overlays[ i ] != null ) {
- ImageData id = overlays[ i ].getImageData();
- x -= id.width;
- drawImage( id, x, getSize().y - id.height );
- }
- }
- }
-
- protected void drawCompositeImage( int width, int height ) {
- ImageData bg = fBase.getImageData();
- drawImage( bg, 0, 0 );
- if( fOverlays != null ) {
- if( fOverlays.length > 0 )
- drawTopRight( fOverlays[ 0 ] );
- if( fOverlays.length > 1 )
- drawBottomRight( fOverlays[ 1 ] );
- if( fOverlays.length > 2 )
- drawBottomLeft( fOverlays[ 2 ] );
- if( fOverlays.length > 3 )
- drawTopLeft( fOverlays[ 3 ] );
- }
- }
-
- protected void drawTopLeft( ImageDescriptor[] overlays ) {
- if( overlays == null )
- return;
- int length = overlays.length;
- int x = 0;
- for( int i = 0; i < 3; i++ ) {
- if( i < length && overlays[ i ] != null ) {
- ImageData id = overlays[ i ].getImageData();
- drawImage( id, x, 0 );
- x += id.width;
- }
- }
- }
-
- protected void drawTopRight( ImageDescriptor[] overlays ) {
- if( overlays == null )
- return;
- int length = overlays.length;
- int x = getSize().x;
- for( int i = 2; i >= 0; i-- ) {
- if( i < length && overlays[ i ] != null ) {
- ImageData id = overlays[ i ].getImageData();
- x -= id.width;
- drawImage( id, x, 0 );
- }
- }
- }
-
- protected Point getSize() {
- return fSize;
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2000, 2008 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.pde.internal.runtime;
+
+import org.eclipse.jface.resource.CompositeImageDescriptor;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.swt.graphics.ImageData;
+import org.eclipse.swt.graphics.Point;
+
+
+public class OverlayIcon extends CompositeImageDescriptor {
+
+ static final int DEFAULT_WIDTH = 16;
+ static final int DEFAULT_HEIGHT = 16;
+ private Point fSize = null;
+ private ImageDescriptor fBase;
+ private ImageDescriptor fOverlays[][];
+
+ public OverlayIcon( ImageDescriptor base, ImageDescriptor[][] overlays ) {
+ fBase = base;
+ if( fBase == null )
+ fBase = ImageDescriptor.getMissingImageDescriptor();
+ fOverlays = overlays;
+ fSize = new Point( DEFAULT_WIDTH, DEFAULT_HEIGHT );
+ }
+
+ public OverlayIcon( ImageDescriptor base, ImageDescriptor[][] overlays, Point size ) {
+ fBase = base;
+ if( fBase == null )
+ fBase = ImageDescriptor.getMissingImageDescriptor();
+ fOverlays = overlays;
+ fSize = size;
+ }
+
+ protected void drawBottomLeft( ImageDescriptor[] overlays ) {
+ if( overlays == null )
+ return;
+ int length = overlays.length;
+ int x = 0;
+ for( int i = 0; i < 3; i++ ) {
+ if( i < length && overlays[ i ] != null ) {
+ ImageData id = overlays[ i ].getImageData();
+ drawImage( id, x, getSize().y - id.height );
+ x += id.width;
+ }
+ }
+ }
+
+ protected void drawBottomRight( ImageDescriptor[] overlays ) {
+ if( overlays == null )
+ return;
+ int length = overlays.length;
+ int x = getSize().x;
+ for( int i = 2; i >= 0; i-- ) {
+ if( i < length && overlays[ i ] != null ) {
+ ImageData id = overlays[ i ].getImageData();
+ x -= id.width;
+ drawImage( id, x, getSize().y - id.height );
+ }
+ }
+ }
+
+ @Override
+ protected void drawCompositeImage( int width, int height ) {
+ ImageData bg = fBase.getImageData();
+ drawImage( bg, 0, 0 );
+ if( fOverlays != null ) {
+ if( fOverlays.length > 0 )
+ drawTopRight( fOverlays[ 0 ] );
+ if( fOverlays.length > 1 )
+ drawBottomRight( fOverlays[ 1 ] );
+ if( fOverlays.length > 2 )
+ drawBottomLeft( fOverlays[ 2 ] );
+ if( fOverlays.length > 3 )
+ drawTopLeft( fOverlays[ 3 ] );
+ }
+ }
+
+ protected void drawTopLeft( ImageDescriptor[] overlays ) {
+ if( overlays == null )
+ return;
+ int length = overlays.length;
+ int x = 0;
+ for( int i = 0; i < 3; i++ ) {
+ if( i < length && overlays[ i ] != null ) {
+ ImageData id = overlays[ i ].getImageData();
+ drawImage( id, x, 0 );
+ x += id.width;
+ }
+ }
+ }
+
+ protected void drawTopRight( ImageDescriptor[] overlays ) {
+ if( overlays == null )
+ return;
+ int length = overlays.length;
+ int x = getSize().x;
+ for( int i = 2; i >= 0; i-- ) {
+ if( i < length && overlays[ i ] != null ) {
+ ImageData id = overlays[ i ].getImageData();
+ x -= id.width;
+ drawImage( id, x, 0 );
+ }
+ }
+ }
+
+ @Override
+ protected Point getSize() {
+ return fSize;
+ }
+}
diff --git a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/pderuntimeresources.properties b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/pderuntimeresources.properties
index 1632b13..fbc68f9 100644
--- a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/pderuntimeresources.properties
+++ b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/pderuntimeresources.properties
@@ -1,98 +1,98 @@
-###############################################################################
-# Copyright (c) 2000, 2010 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
-###############################################################################
-#
-# PDE Runtime resources
-#
-
-ActiveFormEditorSection_Active_Form_Page=Active Form Page
-ActiveMenuSection_0=The active contribution item identifier:
-ActiveMenuSection_1=The active action set identifier:
-ActiveMenuSection_2=The active contribution item class:
-ActiveMenuSection_3=The active handler:
-ActiveMenuSection_4=The active action definition identifier:
-ActiveMenuSection_5=The active contribution item class:
-ActiveMenuSection_6=The active contribution item class:
-ActiveMenuSection_7=The active contribution location URI:
-RegistryView_refresh_label=&Refresh
-RegistryView_refresh_tooltip=Refresh
-RegistryView_collapseAll_label = &Collapse All
-RegistryView_collapseAll_tooltip = Collapse All
-RegistryView_folders_imports = Prerequisites
-RegistryView_folders_libraries = Run-time Libraries
-RegistryView_folders_extensionPoints = Extension Points
-RegistryView_folders_extensions = Extensions
-RegistryView_found_problems=The following problems were found:
-RegistryView_showRunning_label = &Show Active Plug-ins Only
-RegistryView_showDisabled_label = Show &Disabled Plug-ins Only
-RegistryView_showAdvanced_label = Show Advanced &Operations
-RegistryBrowser_Bundle=&Plug-in
-RegistryBrowser_copy_label=&Copy
-RegistryBrowser_ExtensionPoint=&Extension Point
-RegistryBrowser_extensionPoints=extension points
-RegistryBrowser_GroupBy=&Group By
-RegistryBrowser_InitializingView=Initializing the Plug-in Registry view
-RegistryBrowser_plugins=plug-ins
-RegistryBrowser_Service=&Service
-RegistryBrowser_Services=services
-RegistryBrowserLabelProvider_contributedBy=contributed by: {0}
-RegistryBrowserLabelProvider_ExportedPackages=Exported Packages
-RegistryBrowserLabelProvider_Fragments=Fragments
-RegistryBrowserLabelProvider_ImportedPackages=Imported Packages
-RegistryBrowserLabelProvider_Properties=Properties
-RegistryBrowserLabelProvider_RegisteredBy=Registered by
-RegistryBrowserLabelProvider_usedServices=Used Services
-RegistryBrowserLabelProvider_registeredServices=Registered Services
-RegistryBrowserLabelProvider_UsingBundles=Using bundles
-RegistryView_titleSummary = Filter matched {0} of {1} {2}.
-RegistryView_startAction_label = Start
-RegistryView_stopAction_label = Stop
-RegistryView_enableAction_label = Enable
-RegistryView_diag_dialog_title=Diagnosis
-RegistryView_diagnoseAction_label=Diagnose
-RegistryView_disableAction_label = Disable
-RegistryView_no_unresolved_constraints=No problems detected.
-
-MessageHelper_missing_optional_required_bundle=Missing optionally required bundle {0}
-MessageHelper_missing_required_bundle=Missing required bundle {0}
-MessageHelper_missing_imported_package=Missing imported package {0}
-MessageHelper_missing_host=Missing host {0}
-
-# Plug-in Spy
-SpyDialog_title = Plug-in Selection Spy
-MenuSpyDialog_title = Plug-in Menu Spy
-SpyDialog_close = &Close
-SpyDialog_activeShell_title = Active Shell
-SpyDialog_activeShell_desc = The active shell class:
-SpyDialog_activeWizard_title = Active Wizard ({0})
-SpyDialog_activeWizard_desc = The active wizard class:
-SpyDialog_activePart_title = Active Part ({0})
-SpyDialog_activePart_desc = The active {0} class:
-SpyDialog_activeMenuIds = The active menu contribution identifiers:
-SpyDialog_contributingPluginId_title = The contributing plug-in:
-SpyDialog_contributingPluginId_desc = The active {0} identifier:
-SpyDialog_activeSelection_title = Active Selection
-SpyDialog_activeSelection_desc = The selection class:
-SpyDialog_activeSelectionInterfaces_desc = The interfaces valid for the selection:
-SpyDialog_activeSelectedElement_desc = The type of the selected element:
-SpyDialog_activeSelectedElementInterfaces_desc = The interfaces valid for the selected element:
-SpyDialog_activeSelectedElementsCount_desc = {0} elements selected
-SpyDialog_activeDialogPageSection_title = Active Page ({0})
-SpyDialog_activeDialogPageSection_title2 = Active Page
-SpyDialog_activeDialogPageSection_desc = The active page class:
-SpyDialog_activeHelpSection_title = Active Help
-SpyDialog_activeHelpSection_desc = The active help context identifiers:
-SpyIDEUtil_noSourceFound_title = Source Lookup Error
-SpyIDEUtil_noSourceFound_message = Unable to find source for class ''{0}''
-
-SpyDialog_activePageBook_title=The active page:
-
-SpyFormToolkit_saveImageAs_title = Save Image As...
+###############################################################################
+# Copyright (c) 2000, 2010 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
+###############################################################################
+#
+# PDE Runtime resources
+#
+
+ActiveFormEditorSection_Active_Form_Page=Active Form Page
+ActiveMenuSection_0=The active contribution item identifier:
+ActiveMenuSection_1=The active action set identifier:
+ActiveMenuSection_2=The active contribution item class:
+ActiveMenuSection_3=The active handler:
+ActiveMenuSection_4=The active action definition identifier:
+ActiveMenuSection_5=The active contribution item class:
+ActiveMenuSection_6=The active contribution item class:
+ActiveMenuSection_7=The active contribution location URI:
+RegistryView_refresh_label=&Refresh
+RegistryView_refresh_tooltip=Refresh
+RegistryView_collapseAll_label = &Collapse All
+RegistryView_collapseAll_tooltip = Collapse All
+RegistryView_folders_imports = Prerequisites
+RegistryView_folders_libraries = Run-time Libraries
+RegistryView_folders_extensionPoints = Extension Points
+RegistryView_folders_extensions = Extensions
+RegistryView_found_problems=The following problems were found:
+RegistryView_showRunning_label = &Show Active Plug-ins Only
+RegistryView_showDisabled_label = Show &Disabled Plug-ins Only
+RegistryView_showAdvanced_label = Show Advanced &Operations
+RegistryBrowser_Bundle=&Plug-in
+RegistryBrowser_copy_label=&Copy
+RegistryBrowser_ExtensionPoint=&Extension Point
+RegistryBrowser_extensionPoints=extension points
+RegistryBrowser_GroupBy=&Group By
+RegistryBrowser_InitializingView=Initializing the Plug-in Registry view
+RegistryBrowser_plugins=plug-ins
+RegistryBrowser_Service=&Service
+RegistryBrowser_Services=services
+RegistryBrowserLabelProvider_contributedBy=contributed by: {0}
+RegistryBrowserLabelProvider_ExportedPackages=Exported Packages
+RegistryBrowserLabelProvider_Fragments=Fragments
+RegistryBrowserLabelProvider_ImportedPackages=Imported Packages
+RegistryBrowserLabelProvider_Properties=Properties
+RegistryBrowserLabelProvider_RegisteredBy=Registered by
+RegistryBrowserLabelProvider_usedServices=Used Services
+RegistryBrowserLabelProvider_registeredServices=Registered Services
+RegistryBrowserLabelProvider_UsingBundles=Using bundles
+RegistryView_titleSummary = Filter matched {0} of {1} {2}.
+RegistryView_startAction_label = Start
+RegistryView_stopAction_label = Stop
+RegistryView_enableAction_label = Enable
+RegistryView_diag_dialog_title=Diagnosis
+RegistryView_diagnoseAction_label=Diagnose
+RegistryView_disableAction_label = Disable
+RegistryView_no_unresolved_constraints=No problems detected.
+
+MessageHelper_missing_optional_required_bundle=Missing optionally required bundle {0}
+MessageHelper_missing_required_bundle=Missing required bundle {0}
+MessageHelper_missing_imported_package=Missing imported package {0}
+MessageHelper_missing_host=Missing host {0}
+
+# Plug-in Spy
+SpyDialog_title = Plug-in Selection Spy
+MenuSpyDialog_title = Plug-in Menu Spy
+SpyDialog_close = &Close
+SpyDialog_activeShell_title = Active Shell
+SpyDialog_activeShell_desc = The active shell class:
+SpyDialog_activeWizard_title = Active Wizard ({0})
+SpyDialog_activeWizard_desc = The active wizard class:
+SpyDialog_activePart_title = Active Part ({0})
+SpyDialog_activePart_desc = The active {0} class:
+SpyDialog_activeMenuIds = The active menu contribution identifiers:
+SpyDialog_contributingPluginId_title = The contributing plug-in:
+SpyDialog_contributingPluginId_desc = The active {0} identifier:
+SpyDialog_activeSelection_title = Active Selection
+SpyDialog_activeSelection_desc = The selection class:
+SpyDialog_activeSelectionInterfaces_desc = The interfaces valid for the selection:
+SpyDialog_activeSelectedElement_desc = The type of the selected element:
+SpyDialog_activeSelectedElementInterfaces_desc = The interfaces valid for the selected element:
+SpyDialog_activeSelectedElementsCount_desc = {0} elements selected
+SpyDialog_activeDialogPageSection_title = Active Page ({0})
+SpyDialog_activeDialogPageSection_title2 = Active Page
+SpyDialog_activeDialogPageSection_desc = The active page class:
+SpyDialog_activeHelpSection_title = Active Help
+SpyDialog_activeHelpSection_desc = The active help context identifiers:
+SpyIDEUtil_noSourceFound_title = Source Lookup Error
+SpyIDEUtil_noSourceFound_message = Unable to find source for class ''{0}''
+
+SpyDialog_activePageBook_title=The active page:
+
+SpyFormToolkit_saveImageAs_title = Save Image As...
SpyFormToolkit_copyQualifiedName = Copy Qualified Name
\ No newline at end of file
diff --git a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/DiagnosticsDialog.java b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/DiagnosticsDialog.java
index 3922598..cbb6fce 100644
--- a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/DiagnosticsDialog.java
+++ b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/DiagnosticsDialog.java
@@ -1,45 +1,43 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 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
- * Benjamin Muskalla <b.muskalla@gmx.net> - bug 207831
- *******************************************************************************/
-package org.eclipse.pde.internal.runtime.registry;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.swt.widgets.*;
-
-
-public class DiagnosticsDialog extends ErrorDialog {
-
- public DiagnosticsDialog( Shell parentShell,
- String dialogTitle,
- String message,
- IStatus status,
- int displayMask )
- {
- super( parentShell, dialogTitle, message, status, displayMask );
- }
-
- protected Control createDialogArea( Composite parent ) {
- Control area = super.createDialogArea( parent );
- createDropDownList( ( Composite )area );
- return area;
- }
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.jface.dialogs.Dialog#createButtonsForButtonBar(org.eclipse
- * .swt.widgets.Composite)
- */
- protected void createButtonsForButtonBar( Composite parent ) {
- createButton( parent, IDialogConstants.OK_ID, IDialogConstants.get().OK_LABEL, true );
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2007, 2008 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
+ * Benjamin Muskalla <b.muskalla@gmx.net> - bug 207831
+ * Arnaud Mergey <a_mergey@yahoo.fr>
+ *******************************************************************************/
+package org.eclipse.pde.internal.runtime.registry;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jface.dialogs.ErrorDialog;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.swt.widgets.*;
+
+
+public class DiagnosticsDialog extends ErrorDialog {
+
+ public DiagnosticsDialog( Shell parentShell,
+ String dialogTitle,
+ String message,
+ IStatus status,
+ int displayMask )
+ {
+ super( parentShell, dialogTitle, message, status, displayMask );
+ }
+
+ @Override
+ protected Control createDialogArea( Composite parent ) {
+ Control area = super.createDialogArea( parent );
+ createDropDownList( ( Composite )area );
+ return area;
+ }
+
+ @Override
+ protected void createButtonsForButtonBar( Composite parent ) {
+ createButton( parent, IDialogConstants.OK_ID, IDialogConstants.get().OK_LABEL, true );
+ }
+}
diff --git a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/RegistryBrowser.java b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/RegistryBrowser.java
index db422e0..a67408a 100644
--- a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/RegistryBrowser.java
+++ b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/RegistryBrowser.java
@@ -1,728 +1,796 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2009 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
- * Jacek Pospychala <jacek.pospychala@pl.ibm.com> - bug 211127
- *******************************************************************************/
-package org.eclipse.pde.internal.runtime.registry;
-
-import java.util.*;
-import java.util.List;
-import org.eclipse.core.runtime.*;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.action.*;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.viewers.*;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.pde.internal.runtime.*;
-import org.eclipse.pde.internal.runtime.registry.model.*;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.ui.*;
-import org.eclipse.ui.dialogs.FilteredTree;
-import org.eclipse.ui.dialogs.PatternFilter;
-import org.eclipse.ui.part.DrillDownAdapter;
-import org.eclipse.ui.part.ViewPart;
-import org.osgi.framework.BundleException;
-
-
-public class RegistryBrowser extends ViewPart {
-
- private class GroupByAction extends Action {
-
- private int actionGroupBy;
-
- public GroupByAction( String name, int groupBy ) {
- super( name, AS_RADIO_BUTTON );
- this.actionGroupBy = groupBy;
- }
-
- public void run() {
- if( isChecked() ) {
- fMemento.putInteger( GROUP_BY, actionGroupBy );
- // refreshAction takes into account checked state of
- // fShowExtensionsOnlyAction
- // (via updateItems(true)
- fRefreshAction.run();
- }
- }
- }
-
- public static final String SHOW_RUNNING_PLUGINS = "RegistryView.showRunning.label"; //$NON-NLS-1$
- public static final String SHOW_ADVANCED_MODE = "RegistryView.showAdvancedMode.label"; //$NON-NLS-1$
- public static final String GROUP_BY = "RegistryView.groupBy"; //$NON-NLS-1$
- public static final String SHOW_DISABLED_MODE = "RegistryView.showDisabledMode.label"; //$NON-NLS-1$
- public static final int BUNDLES = 0;
- public static final int EXTENSION_REGISTRY = 1;
- public static final int SERVICES = 2;
- private FilteredTree fFilteredTree;
- private TreeViewer fTreeViewer;
- private IMemento fMemento;
- private RegistryModel model;
- private ModelChangeListener listener;
- private Job initializeModelJob;
- private RegistryBrowserContentProvider fContentProvider;
- private RegistryBrowserLabelProvider fLabelProvider;
- private static final int REFRESH_DELAY = 50;
- private long lastRefresh = 0;
- private Thread refreshThread;
- // menus and action items
- private Action fRefreshAction;
- private Action fShowPluginsAction;
- private Action fCollapseAllAction;
- private Action fShowAdvancedOperationsAction;
- private Action fGroupByBundlesAction;
- private Action fGroupByExtensionPointsAction;
- private Action fGroupByServicesAction;
- private Action fShowDisabledAction;
- // private Action fCopyAction;
- // advanced actions
- private Action fStartAction;
- private Action fStopAction;
- private Action fEnableAction;
- private Action fDisableAction;
- private Action fDiagnoseAction;
- // private Clipboard fClipboard;
- private DrillDownAdapter fDrillDownAdapter;
- private ViewerFilter fActiveFilter = new ViewerFilter() {
-
- public boolean select( Viewer viewer, Object parentElement, Object element ) {
- if( element instanceof ExtensionPoint )
- element = Platform.getBundle( ( ( ExtensionPoint )element ).getNamespaceIdentifier() );
- else if( element instanceof Extension )
- element = Platform.getBundle( ( ( Extension )element ).getNamespaceIdentifier() );
- if( element instanceof Bundle )
- return ( ( Bundle )element ).getState() == Bundle.ACTIVE;
- return true;
- }
- };
- private ViewerFilter fDisabledFilter = new ViewerFilter() {
-
- public boolean select( Viewer viewer, Object parentElement, Object element ) {
- if( element instanceof Bundle ) {
- return !( ( Bundle )element ).isEnabled();
- }
- return false;
- }
- };
-
- /*
- * customized DrillDownAdapter which modifies enabled state of showing active/inactive plug-ins
- * action - see Bug 58467
- */
- class RegistryDrillDownAdapter extends DrillDownAdapter {
-
- public RegistryDrillDownAdapter( TreeViewer tree ) {
- super( tree );
- }
-
- public void goInto() {
- super.goInto();
- fShowPluginsAction.setEnabled( !canGoHome() );
- fShowDisabledAction.setEnabled( !canGoHome() );
- }
-
- public void goBack() {
- super.goBack();
- fShowPluginsAction.setEnabled( !canGoHome() );
- fShowDisabledAction.setEnabled( !canGoHome() );
- }
-
- public void goHome() {
- super.goHome();
- fShowPluginsAction.setEnabled( !canGoHome() );
- fShowDisabledAction.setEnabled( !canGoHome() );
- }
-
- public void goInto( Object newInput ) {
- super.goInto( newInput );
- fShowPluginsAction.setEnabled( !canGoHome() );
- fShowDisabledAction.setEnabled( !canGoHome() );
- }
- }
-
- private void initializeModel() {
- model = RegistryModelFactory.getRegistryModel( "local" ); //$NON-NLS-1$
- fTreeViewer.setInput( model );
- listener = new RegistryBrowserModelChangeListener( RegistryBrowser.this, Display.getCurrent() );
- model.addModelChangeListener( listener );
- initializeModelJob = new Job( PDERuntimeMessages.get().RegistryBrowser_InitializingView ) {
-
- public IStatus run( IProgressMonitor monitor ) {
- model.connect( monitor, true );
- initializeModelJob = null;
- return monitor.isCanceled()
- ? Status.CANCEL_STATUS
- : Status.OK_STATUS;
- }
- };
- initializeModelJob.schedule();
- }
-
- public void init( IViewSite site, IMemento memento ) throws PartInitException {
- super.init( site, memento );
- if( memento == null )
- this.fMemento = XMLMemento.createWriteRoot( "REGISTRYVIEW" ); //$NON-NLS-1$
- else
- this.fMemento = memento;
- initializeMemento();
- }
-
- private void initializeMemento() {
- // show all bundles by default (i.e. not just activated ones)
- if( fMemento.getString( SHOW_RUNNING_PLUGINS ) == null )
- fMemento.putString( SHOW_RUNNING_PLUGINS, "false" ); //$NON-NLS-1$
- if( fMemento.getInteger( GROUP_BY ) == null )
- fMemento.putInteger( GROUP_BY, BUNDLES );
- if( fMemento.getString( SHOW_DISABLED_MODE ) == null )
- fMemento.putString( SHOW_DISABLED_MODE, "false" ); //$NON-NLS-1$
- // default to not showing advanced options to users
- if( fMemento.getString( SHOW_ADVANCED_MODE ) == null )
- fMemento.putString( SHOW_ADVANCED_MODE, "false" ); //$NON-NLS-1$
- }
-
- public void dispose() {
- if( initializeModelJob != null ) {
- initializeModelJob.cancel();
- }
- model.disconnect();
- model.removeModelChangeListener( listener );
- // if (fClipboard != null) {
- // fClipboard.dispose();
- // }
- super.dispose();
- }
-
- public void createPartControl( Composite parent ) {
- // create the sash form that will contain the tree viewer & text viewer
- Composite composite = new Composite( parent, SWT.NONE );
- GridLayout layout = new GridLayout();
- layout.marginHeight = layout.marginWidth = 0;
- composite.setLayout( layout );
- // composite.setLayoutData(new GridData(GridData.FILL_BOTH));
- makeActions();
- createTreeViewer( composite );
- // fClipboard = new Clipboard(fTreeViewer.getTree().getDisplay());
- fillToolBar();
- }
-
- private void createTreeViewer( Composite parent ) {
- Composite composite = new Composite( parent, SWT.NONE );
- GridLayout layout = new GridLayout();
- layout.marginHeight = layout.marginWidth = 0;
- composite.setLayout( layout );
- composite.setLayoutData( new GridData( GridData.FILL_BOTH ) );
- fFilteredTree = new RegistryFilteredTree( this, composite, SWT.MULTI, new PatternFilter() );
- fFilteredTree.setBackground( parent.getDisplay().getSystemColor( SWT.COLOR_LIST_BACKGROUND ) );
- Tree tree = fFilteredTree.getViewer().getTree();
- GridData gd = new GridData( GridData.FILL_BOTH );
- fFilteredTree.setLayoutData( gd );
- fTreeViewer = fFilteredTree.getViewer();
- fContentProvider = new RegistryBrowserContentProvider( this );
- fTreeViewer.setContentProvider( fContentProvider );
- fLabelProvider = new RegistryBrowserLabelProvider( this );
- fTreeViewer.setLabelProvider( fLabelProvider );
- fTreeViewer.setUseHashlookup( true );
- fTreeViewer.setComparator( new ViewerComparator() {
-
- public int compare( Viewer viewer, Object e1, Object e2 ) {
- // let Comparables compare themselves
- if( e1 instanceof Comparable
- && e2 instanceof Comparable
- && e1.getClass().equals( e2.getClass() ) )
- {
- Comparable c1 = ( Comparable )e1;
- Comparable c2 = ( Comparable )e2;
- return c1.compareTo( c2 );
- }
- if( e1 instanceof Folder && e2 instanceof Folder )
- return ( ( Folder )e1 ).getId() - ( ( Folder )e2 ).getId();
- if( e1 instanceof Bundle && e2 instanceof Bundle ) {
- e1 = ( ( Bundle )e1 ).getSymbolicName();
- e2 = ( ( Bundle )e2 ).getSymbolicName();
- }
- return super.compare( viewer, e1, e2 );
- }
- } );
- if( fShowPluginsAction.isChecked() )
- fTreeViewer.addFilter( fActiveFilter );
- if( fShowDisabledAction.isChecked() )
- fTreeViewer.addFilter( fDisabledFilter );
- initializeModel();
- PlatformUI.getWorkbench()
- .getHelpSystem()
- .setHelp( fTreeViewer.getControl(), IHelpContextIds.REGISTRY_VIEW );
- getViewSite().setSelectionProvider( fTreeViewer );
- MenuManager popupMenuManager = new MenuManager();
- IMenuListener listener = new IMenuListener() {
-
- public void menuAboutToShow( IMenuManager mng ) {
- fillContextMenu( mng );
- }
- };
- popupMenuManager.setRemoveAllWhenShown( true );
- popupMenuManager.addMenuListener( listener );
- Menu menu = popupMenuManager.createContextMenu( tree );
- tree.setMenu( menu );
- }
-
- private void fillToolBar() {
- fDrillDownAdapter = new RegistryDrillDownAdapter( fTreeViewer );
- IActionBars bars = getViewSite().getActionBars();
- // bars.setGlobalActionHandler(ActionFactory.COPY.getId(), fCopyAction);
- IToolBarManager mng = bars.getToolBarManager();
- fDrillDownAdapter.addNavigationActions( mng );
- mng.add( fRefreshAction );
- mng.add( new Separator() );
- mng.add( fCollapseAllAction );
- IMenuManager mgr = bars.getMenuManager();
- IMenuManager manager = new MenuManager( PDERuntimeMessages.get().RegistryBrowser_GroupBy );
- manager.add( fGroupByBundlesAction );
- manager.add( fGroupByExtensionPointsAction );
- manager.add( fGroupByServicesAction );
- mgr.add( manager );
- mgr.add( new Separator() );
- mgr.add( fShowPluginsAction );
- mgr.add( fShowDisabledAction );
- mgr.add( new Separator() );
- mgr.add( fShowAdvancedOperationsAction );
- }
-
- private void fillContextMenu( IMenuManager manager ) {
- manager.add( fRefreshAction );
- manager.add( new Separator() );
- // manager.add(fCopyAction);
- // manager.add(new Separator());
- fDrillDownAdapter.addNavigationActions( manager );
- manager.add( new Separator() );
- // check if we should enable advanced actions
- if( fShowAdvancedOperationsAction.isChecked() && isBundleSelected() ) {
- // control bundle state actions
- if( selectedBundlesStopped() )
- manager.add( fStartAction );
- if( selectedBundlesStarted() )
- manager.add( fStopAction );
- if( getSelectedBundles().size() == 1 )
- manager.add( fDiagnoseAction );
- // security related actions
- if( selectedBundlesDisabled() )
- manager.add( fEnableAction );
- if( selectedBundlesEnabled() )
- manager.add( fDisableAction );
- }
- manager.add( new Separator() );
- manager.add( fShowPluginsAction );
- manager.add( fShowDisabledAction );
- manager.add( new Separator() );
- manager.add( fShowAdvancedOperationsAction );
- }
-
- public void saveState( IMemento memento ) {
- if( memento == null || fMemento == null || fTreeViewer == null )
- return;
- fMemento.putString( SHOW_RUNNING_PLUGINS, Boolean.toString( fShowPluginsAction.isChecked() ) );
- fMemento.putString( SHOW_DISABLED_MODE, Boolean.toString( fShowDisabledAction.isChecked() ) );
- fMemento.putBoolean( SHOW_ADVANCED_MODE, fShowAdvancedOperationsAction.isChecked() );
- memento.putMemento( fMemento );
- }
-
- public void setFocus() {
- Text filterText = fFilteredTree.getFilterControl();
- if( filterText != null ) {
- filterText.setFocus();
- }
- }
-
- /*
- * toolbar and context menu actions
- */
- private void makeActions() {
- fRefreshAction = new Action( "refresh" ) { //$NON-NLS-1$
-
- public void run() {
- BusyIndicator.showWhile( fTreeViewer.getTree().getDisplay(), new Runnable() {
-
- public void run() {
- refresh( fTreeViewer.getInput() );
- }
- } );
- }
- };
- fRefreshAction.setText( PDERuntimeMessages.get().RegistryView_refresh_label );
- fRefreshAction.setToolTipText( PDERuntimeMessages.get().RegistryView_refresh_tooltip );
- fRefreshAction.setImageDescriptor( PDERuntimePluginImages.DESC_REFRESH );
- fRefreshAction.setDisabledImageDescriptor( PDERuntimePluginImages.DESC_REFRESH_DISABLED );
- fShowPluginsAction = new Action( PDERuntimeMessages.get().RegistryView_showRunning_label ) {
-
- public void run() {
- if( fShowPluginsAction.isChecked() ) {
- fTreeViewer.addFilter( fActiveFilter );
- } else {
- fTreeViewer.removeFilter( fActiveFilter );
- }
- updateTitle();
- }
- };
- fShowPluginsAction.setChecked( fMemento.getString( SHOW_RUNNING_PLUGINS ).equals( "true" ) ); //$NON-NLS-1$
- fShowDisabledAction = new Action( PDERuntimeMessages.get().RegistryView_showDisabled_label ) {
-
- public void run() {
- if( fShowDisabledAction.isChecked() ) {
- fTreeViewer.addFilter( fDisabledFilter );
- } else {
- fTreeViewer.removeFilter( fDisabledFilter );
- }
- updateTitle();
- }
- };
- fShowDisabledAction.setChecked( fMemento.getString( SHOW_DISABLED_MODE ).equals( "true" ) ); //$NON-NLS-1$
- // fCopyAction = new Action(
- // PDERuntimeMessages.get().RegistryBrowser_copy_label) {
- // public void run() {
- // ITreeSelection selection = (ITreeSelection) fFilteredTree
- // .getViewer().getSelection();
- // if (selection.isEmpty()) {
- // return;
- // }
- //
- // String textVersion = ((ILabelProvider) fTreeViewer
- // .getLabelProvider()).getText(selection
- // .getFirstElement());
- // if ((textVersion != null) && (textVersion.trim().length() > 0)) {
- // // set the clipboard contents
- // fClipboard.setContents(new Object[] { textVersion },
- // new Transfer[] { TextTransfer.getInstance() });
- // }
- // }
- // };
- // fCopyAction.setImageDescriptor(PDERuntimePluginImages.COPY_QNAME);
- fGroupByBundlesAction = new GroupByAction( PDERuntimeMessages.get().RegistryBrowser_Bundle,
- BUNDLES );
- int groupBy = getGroupBy();
- fGroupByBundlesAction.setChecked( groupBy == BUNDLES );
- fGroupByExtensionPointsAction = new GroupByAction( PDERuntimeMessages.get().RegistryBrowser_ExtensionPoint,
- EXTENSION_REGISTRY );
- fGroupByExtensionPointsAction.setChecked( groupBy == EXTENSION_REGISTRY );
- fGroupByServicesAction = new GroupByAction( PDERuntimeMessages.get().RegistryBrowser_Service,
- SERVICES );
- fGroupByServicesAction.setChecked( groupBy == SERVICES );
- fShowAdvancedOperationsAction = new Action( PDERuntimeMessages.get().RegistryView_showAdvanced_label )
- {
-
- public void run() { // do nothing
- }
- };
- fShowAdvancedOperationsAction.setChecked( fMemento.getString( SHOW_ADVANCED_MODE )
- .equals( "true" ) ); //$NON-NLS-1$
- fStartAction = new Action( PDERuntimeMessages.get().RegistryView_startAction_label ) {
-
- public void run() {
- try {
- List bundles = getSelectedBundles();
- for( Iterator it = bundles.iterator(); it.hasNext(); ) {
- Bundle bundle = ( Bundle )it.next();
- bundle.start();
- }
- } catch( BundleException e ) {
- PDERuntimePlugin.log( e );
- }
- }
- };
- fStopAction = new Action( PDERuntimeMessages.get().RegistryView_stopAction_label ) {
-
- public void run() {
- try {
- List bundles = getSelectedBundles();
- for( Iterator it = bundles.iterator(); it.hasNext(); ) {
- Bundle bundle = ( Bundle )it.next();
- bundle.stop();
- }
- } catch( BundleException e ) {
- PDERuntimePlugin.log( e );
- }
- }
- };
- fEnableAction = new Action( PDERuntimeMessages.get().RegistryView_enableAction_label ) {
-
- public void run() {
- List bundles = getSelectedBundles();
- for( Iterator it = bundles.iterator(); it.hasNext(); ) {
- Bundle bundle = ( Bundle )it.next();
- bundle.enable();
- }
- }
- };
- fDisableAction = new Action( PDERuntimeMessages.get().RegistryView_disableAction_label ) {
-
- public void run() {
- List bundles = getSelectedBundles();
- for( Iterator it = bundles.iterator(); it.hasNext(); ) {
- Bundle bundle = ( Bundle )it.next();
- bundle.disable();
- }
- }
- };
- fDiagnoseAction = new Action( PDERuntimeMessages.get().RegistryView_diagnoseAction_label ) {
-
- public void run() {
- List bundles = getSelectedBundles();
- for( Iterator it = bundles.iterator(); it.hasNext(); ) {
- Bundle bundle = ( Bundle )it.next();
- MultiStatus problems = bundle.diagnose();
- Dialog dialog;
- if( ( problems != null ) && ( problems.getChildren().length > 0 ) ) {
- dialog = new DiagnosticsDialog( getSite().getShell(),
- PDERuntimeMessages.get().RegistryView_diag_dialog_title,
- null,
- problems,
- IStatus.WARNING );
- dialog.open();
- } else {
- MessageDialog.openInformation( getSite().getShell(),
- PDERuntimeMessages.get().RegistryView_diag_dialog_title,
- PDERuntimeMessages.get().RegistryView_no_unresolved_constraints );
- }
- }
- }
- };
- fCollapseAllAction = new Action( "collapseAll" ) { //$NON-NLS-1$
-
- public void run() {
- fTreeViewer.collapseAll();
- }
- };
- fCollapseAllAction.setText( PDERuntimeMessages.get().RegistryView_collapseAll_label );
- fCollapseAllAction.setImageDescriptor( PDERuntimePluginImages.DESC_COLLAPSE_ALL );
- fCollapseAllAction.setToolTipText( PDERuntimeMessages.get().RegistryView_collapseAll_tooltip );
- }
-
- public int getGroupBy() {
- return fMemento.getInteger( GROUP_BY ).intValue();
- }
-
- public void updateTitle() {
- setContentDescription( getTitleSummary() );
- }
-
- protected Tree getUndisposedTree() {
- if( fTreeViewer == null || fTreeViewer.getTree() == null || fTreeViewer.getTree().isDisposed() )
- return null;
- return fTreeViewer.getTree();
- }
-
- public String getTitleSummary() {
- Tree tree = getUndisposedTree();
- String type;
- int total = 0;
- switch( getGroupBy() ) {
- default:
- case BUNDLES:
- type = PDERuntimeMessages.get().RegistryBrowser_plugins;
- total = model.getBundles().length;
- break;
- case EXTENSION_REGISTRY:
- type = PDERuntimeMessages.get().RegistryBrowser_extensionPoints;
- total = model.getExtensionPoints().length;
- break;
- case SERVICES:
- type = PDERuntimeMessages.get().RegistryBrowser_Services;
- total = model.getServiceNames().length;
- break;
- }
- if( tree == null )
- return NLS.bind( PDERuntimeMessages.get().RegistryView_titleSummary, ( new String[] {
- "0", "0", type} ) ); //$NON-NLS-1$ //$NON-NLS-2$
- return NLS.bind( PDERuntimeMessages.get().RegistryView_titleSummary, ( new String[] {
- Integer.toString( tree.getItemCount() ), Integer.toString( total ), type
- } ) );
- }
-
- private boolean isBundleSelected() {
- IStructuredSelection selection = ( IStructuredSelection )fTreeViewer.getSelection();
- if( selection != null ) {
- Object[] elements = selection.toArray();
- for( int i = 0; i < elements.length; i++ ) {
- if( !( elements[ i ] instanceof Bundle ) ) {
- return false;
- }
- }
- }
- return true;
- }
-
- private List getSelectedBundles() {
- List bundles = new ArrayList();
- IStructuredSelection selection = ( IStructuredSelection )fTreeViewer.getSelection();
- if( selection != null ) {
- Object[] elements = selection.toArray();
- for( int i = 0; i < elements.length; i++ ) {
- if( elements[ i ] instanceof Bundle ) {
- bundles.add( elements[ i ] );
- }
- }
- }
- return bundles;
- }
-
- /**
- * @return true if none is stopped, false if at least one is stopped
- */
- private boolean selectedBundlesStarted() {
- List bundles = getSelectedBundles();
- for( Iterator it = bundles.iterator(); it.hasNext(); ) {
- Bundle bundle = ( Bundle )it.next();
- if( bundle.getState() != Bundle.ACTIVE )
- return false;
- }
- return true;
- }
-
- /**
- * @return true if none is active, false if at least one is active
- */
- private boolean selectedBundlesStopped() {
- List bundles = getSelectedBundles();
- for( Iterator it = bundles.iterator(); it.hasNext(); ) {
- Bundle bundle = ( Bundle )it.next();
- if( bundle.getState() == Bundle.ACTIVE )
- return false;
- }
- return true;
- }
-
- /**
- * @return true if none is enabled, false if at least one is enabled
- */
- private boolean selectedBundlesDisabled() {
- List bundles = getSelectedBundles();
- for( Iterator it = bundles.iterator(); it.hasNext(); ) {
- Bundle bundle = ( Bundle )it.next();
- if( bundle.isEnabled() )
- return false;
- }
- return true;
- }
-
- /**
- * @return true if none is disabled, false if at least one is disabled
- */
- private boolean selectedBundlesEnabled() {
- List bundles = getSelectedBundles();
- for( Iterator it = bundles.iterator(); it.hasNext(); ) {
- Bundle bundle = ( Bundle )it.next();
- if( !bundle.isEnabled() )
- return false;
- }
- return true;
- }
-
- public void add( Object object ) {
- Object parent = fContentProvider.getParent( object );
- if( parent == null ) {
- add( fTreeViewer.getInput(), object );
- } else {
- refresh( parent );
- }
- }
-
- protected void add( Object parent, Object object ) {
- if( fTreeViewer.getTree().isDisposed() )
- return;
- if( fDrillDownAdapter.canGoHome() )
- return;
- fTreeViewer.add( parent, object );
- updateTitle();
- }
-
- public void remove( Object object ) {
- if( fTreeViewer.getTree().isDisposed() )
- return;
- if( fDrillDownAdapter.canGoHome() )
- return;
- fTreeViewer.remove( object );
- updateTitle();
- }
-
- private boolean filtersEnabled() {
- return fTreeViewer.getFilters().length > 0;
- }
-
- private void deferredRefresh() {
- if( refreshThread != null )
- return;
- long now = System.currentTimeMillis();
- if( now - lastRefresh > REFRESH_DELAY ) {
- fTreeViewer.refresh();
- updateTitle();
- lastRefresh = now;
- } else {
- Runnable runnable = new Runnable() {
-
- public void run() {
- try {
- Thread.sleep( REFRESH_DELAY );
- } catch( InterruptedException e ) {
- return;
- }
- refreshThread = null;
- if( fTreeViewer.getTree().isDisposed() )
- return;
- fTreeViewer.getTree().getDisplay().asyncExec( new Runnable() {
-
- public void run() {
- if( !fTreeViewer.getTree().isDisposed() ) {
- fTreeViewer.refresh();
- updateTitle();
- }
- }
- } );
- }
- };
- refreshThread = new Thread( runnable );
- refreshThread.start();
- }
- }
-
- void refresh( Object[] objects ) {
- if( fTreeViewer.getTree().isDisposed() )
- return;
- if( filtersEnabled() ) {
- deferredRefresh();
- } else {
- for( int i = 0; i < objects.length; i++ ) {
- fTreeViewer.refresh( objects[ i ] );
- }
- }
- updateTitle();
- }
-
- void refresh( Object object ) {
- if( fTreeViewer.getTree().isDisposed() )
- return;
- if( filtersEnabled() ) {
- deferredRefresh();
- } else {
- fTreeViewer.refresh( object );
- updateTitle();
- }
- }
-
- public Object getAdapter( Class clazz ) {
- if( ILabelProvider.class.equals( clazz ) ) {
- return fLabelProvider;
- }
- if( IContentProvider.class.equals( clazz ) ) {
- return fContentProvider;
- }
- return super.getAdapter( clazz );
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2000, 2015 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
+ * Jacek Pospychala <jacek.pospychala@pl.ibm.com> - bug 211127
+ * Arnaud Mergey <a_mergey@yahoo.fr>
+ *******************************************************************************/
+package org.eclipse.pde.internal.runtime.registry;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.core.runtime.*;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.action.*;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.*;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.pde.internal.runtime.*;
+import org.eclipse.pde.internal.runtime.registry.model.*;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.BusyIndicator;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.*;
+import org.eclipse.ui.*;
+import org.eclipse.ui.actions.ActionFactory;
+import org.eclipse.ui.dialogs.FilteredTree;
+import org.eclipse.ui.dialogs.PatternFilter;
+import org.eclipse.ui.part.DrillDownAdapter;
+import org.eclipse.ui.part.ViewPart;
+import org.osgi.framework.BundleException;
+
+
+public class RegistryBrowser extends ViewPart {
+
+ private class GroupByAction extends Action {
+
+ private int actionGroupBy;
+
+ public GroupByAction( String name, int groupBy ) {
+ super( name, AS_RADIO_BUTTON );
+ this.actionGroupBy = groupBy;
+ }
+
+ @Override
+ public void run() {
+ if( isChecked() ) {
+ fMemento.putInteger( GROUP_BY, actionGroupBy );
+ // refreshAction takes into account checked state of fShowExtensionsOnlyAction
+ // (via updateItems(true)
+ fRefreshAction.run();
+ }
+ }
+ }
+
+ public static final String SHOW_RUNNING_PLUGINS = "RegistryView.showRunning.label"; //$NON-NLS-1$
+ public static final String SHOW_ADVANCED_MODE = "RegistryView.showAdvancedMode.label"; //$NON-NLS-1$
+ public static final String GROUP_BY = "RegistryView.groupBy"; //$NON-NLS-1$
+ public static final String SHOW_DISABLED_MODE = "RegistryView.showDisabledMode.label"; //$NON-NLS-1$
+ public static final int BUNDLES = 0;
+ public static final int EXTENSION_REGISTRY = 1;
+ public static final int SERVICES = 2;
+ private FilteredTree fFilteredTree;
+ private TreeViewer fTreeViewer;
+ private IMemento fMemento;
+ private RegistryModel model;
+ private ModelChangeListener listener;
+ private Job initializeModelJob;
+ private RegistryBrowserContentProvider fContentProvider;
+ private RegistryBrowserLabelProvider fLabelProvider;
+ private static final int REFRESH_DELAY = 50;
+ private long lastRefresh = 0;
+ private Thread refreshThread;
+ // menus and action items
+ private Action fRefreshAction;
+ private Action fShowPluginsAction;
+ private Action fCollapseAllAction;
+ private Action fShowAdvancedOperationsAction;
+ private Action fGroupByBundlesAction;
+ private Action fGroupByExtensionPointsAction;
+ private Action fGroupByServicesAction;
+ private Action fShowDisabledAction;
+ private Action fCopyAction;
+ // advanced actions
+ private Action fStartAction;
+ private Action fStopAction;
+ private Action fEnableAction;
+ private Action fDisableAction;
+ private Action fDiagnoseAction;
+// private Clipboard fClipboard;
+ private DrillDownAdapter fDrillDownAdapter;
+ private ViewerFilter fActiveFilter = new ViewerFilter() {
+
+ @Override
+ public boolean select( Viewer viewer, Object parentElement, Object element ) {
+ if( element instanceof ExtensionPoint )
+ element = Platform.getBundle( ( ( ExtensionPoint )element ).getNamespaceIdentifier() );
+ else if( element instanceof Extension )
+ element = Platform.getBundle( ( ( Extension )element ).getNamespaceIdentifier() );
+ if( element instanceof Bundle )
+ return ( ( Bundle )element ).getState() == Bundle.ACTIVE;
+ return true;
+ }
+ };
+ private ViewerFilter fDisabledFilter = new ViewerFilter() {
+
+ @Override
+ public boolean select( Viewer viewer, Object parentElement, Object element ) {
+ if( element instanceof Bundle ) {
+ return !( ( Bundle )element ).isEnabled();
+ }
+ return false;
+ }
+ };
+
+ /*
+ * customized DrillDownAdapter which modifies enabled state of showing active/inactive plug-ins
+ * action - see Bug 58467
+ */
+ class RegistryDrillDownAdapter extends DrillDownAdapter {
+
+ public RegistryDrillDownAdapter( TreeViewer tree ) {
+ super( tree );
+ }
+
+ @Override
+ public void goInto() {
+ super.goInto();
+ fShowPluginsAction.setEnabled( !canGoHome() );
+ fShowDisabledAction.setEnabled( !canGoHome() );
+ }
+
+ @Override
+ public void goBack() {
+ super.goBack();
+ fShowPluginsAction.setEnabled( !canGoHome() );
+ fShowDisabledAction.setEnabled( !canGoHome() );
+ }
+
+ @Override
+ public void goHome() {
+ super.goHome();
+ fShowPluginsAction.setEnabled( !canGoHome() );
+ fShowDisabledAction.setEnabled( !canGoHome() );
+ }
+
+ @Override
+ public void goInto( Object newInput ) {
+ super.goInto( newInput );
+ fShowPluginsAction.setEnabled( !canGoHome() );
+ fShowDisabledAction.setEnabled( !canGoHome() );
+ }
+ }
+
+ private void initializeModel() {
+ model = RegistryModelFactory.getRegistryModel( "local" ); //$NON-NLS-1$
+ fTreeViewer.setInput( model );
+ listener = new RegistryBrowserModelChangeListener( RegistryBrowser.this );
+ model.addModelChangeListener( listener );
+ initializeModelJob = new Job( PDERuntimeMessages.get().RegistryBrowser_InitializingView) {
+
+ @Override
+ public IStatus run( IProgressMonitor monitor ) {
+ model.connect( monitor, true );
+ initializeModelJob = null;
+ return monitor.isCanceled( )
+ ? Status.CANCEL_STATUS
+ : Status.OK_STATUS;
+ }
+ };
+ initializeModelJob.schedule();
+ }
+
+ @Override
+ public void init( IViewSite site, IMemento memento ) throws PartInitException {
+ super.init( site, memento );
+ if( memento == null )
+ this.fMemento = XMLMemento.createWriteRoot( "REGISTRYVIEW" ); //$NON-NLS-1$
+ else
+ this.fMemento = memento;
+ initializeMemento();
+ }
+
+ private void initializeMemento() {
+ // show all bundles by default (i.e. not just activated ones)
+ if( fMemento.getString( SHOW_RUNNING_PLUGINS ) == null )
+ fMemento.putString( SHOW_RUNNING_PLUGINS, "false" ); //$NON-NLS-1$
+ if( fMemento.getInteger( GROUP_BY ) == null )
+ fMemento.putInteger( GROUP_BY, BUNDLES );
+ if( fMemento.getString( SHOW_DISABLED_MODE ) == null )
+ fMemento.putString( SHOW_DISABLED_MODE, "false" ); //$NON-NLS-1$
+ // default to not showing advanced options to users
+ if( fMemento.getString( SHOW_ADVANCED_MODE ) == null )
+ fMemento.putString( SHOW_ADVANCED_MODE, "false" ); //$NON-NLS-1$
+ }
+
+ @Override
+ public void dispose() {
+ if( initializeModelJob != null ) {
+ initializeModelJob.cancel();
+ }
+ model.disconnect();
+ model.removeModelChangeListener( listener );
+// if( fClipboard != null ) {
+// fClipboard.dispose();
+// }
+ super.dispose();
+ }
+
+ @Override
+ public void createPartControl( Composite parent ) {
+ // create the sash form that will contain the tree viewer & text viewer
+ Composite composite = new Composite( parent, SWT.NONE );
+ GridLayout layout = new GridLayout();
+ layout.marginHeight = layout.marginWidth = 0;
+ composite.setLayout( layout );
+ composite.setLayoutData( new GridData( GridData.FILL_BOTH ) );
+ makeActions();
+ createTreeViewer( composite );
+ hookDoubleClickAction();
+ // fClipboard = new Clipboard( fTreeViewer.getTree().getDisplay() );
+ fillToolBar();
+ }
+
+ private void createTreeViewer( Composite parent ) {
+ Composite composite = new Composite( parent, SWT.NONE );
+ GridLayout layout = new GridLayout();
+ layout.marginHeight = layout.marginWidth = 0;
+ composite.setLayout( layout );
+ composite.setLayoutData( new GridData( GridData.FILL_BOTH ) );
+ fFilteredTree = new RegistryFilteredTree( this, composite, SWT.MULTI, new PatternFilter() );
+ fFilteredTree.setBackground( parent.getDisplay().getSystemColor( SWT.COLOR_LIST_BACKGROUND ) );
+ Tree tree = fFilteredTree.getViewer().getTree();
+ GridData gd = new GridData( GridData.FILL_BOTH );
+ fFilteredTree.setLayoutData( gd );
+ fTreeViewer = fFilteredTree.getViewer();
+ fContentProvider = new RegistryBrowserContentProvider( this );
+ fTreeViewer.setContentProvider( fContentProvider );
+ fLabelProvider = new RegistryBrowserLabelProvider( this );
+ fTreeViewer.setLabelProvider( fLabelProvider );
+ fTreeViewer.setUseHashlookup( true );
+ fTreeViewer.setComparator( new ViewerComparator() {
+
+ @Override
+ public int compare( Viewer viewer, Object e1, Object e2 ) {
+ // let Comparables compare themselves
+ if( e1 instanceof Comparable
+ && e2 instanceof Comparable
+ && e1.getClass().equals( e2.getClass() ) )
+ {
+ Comparable c1 = ( Comparable )e1;
+ Comparable c2 = ( Comparable )e2;
+ return c1.compareTo( c2 );
+ }
+ if( e1 instanceof Folder && e2 instanceof Folder )
+ return ( ( Folder )e1 ).getId() - ( ( Folder )e2 ).getId();
+ if( e1 instanceof Bundle && e2 instanceof Bundle ) {
+ e1 = ( ( Bundle )e1 ).getSymbolicName();
+ e2 = ( ( Bundle )e2 ).getSymbolicName();
+ }
+ return super.compare( viewer, e1, e2 );
+ }
+ } );
+ if( fShowPluginsAction.isChecked() )
+ fTreeViewer.addFilter( fActiveFilter );
+ if( fShowDisabledAction.isChecked() )
+ fTreeViewer.addFilter( fDisabledFilter );
+ initializeModel();
+ PlatformUI.getWorkbench().getHelpSystem().setHelp( fTreeViewer.getControl(),
+ IHelpContextIds.REGISTRY_VIEW );
+ getViewSite().setSelectionProvider( fTreeViewer );
+ MenuManager popupMenuManager = new MenuManager();
+ IMenuListener listener = new IMenuListener() {
+
+ @Override
+ public void menuAboutToShow( IMenuManager mng ) {
+ fillContextMenu( mng );
+ }
+ };
+ popupMenuManager.setRemoveAllWhenShown( true );
+ popupMenuManager.addMenuListener( listener );
+ Menu menu = popupMenuManager.createContextMenu( tree );
+ tree.setMenu( menu );
+ }
+
+ private void hookDoubleClickAction() {
+ fTreeViewer.addDoubleClickListener( new IDoubleClickListener() {
+
+ @Override
+ public void doubleClick( DoubleClickEvent event ) {
+// IStructuredSelection selection = ( IStructuredSelection )fTreeViewer.getSelection();
+// if( selection.size() == 1 ) {
+// Object obj = selection.getFirstElement();
+// if( obj instanceof Bundle )
+// ManifestEditor.openPluginEditor( ( ( Bundle )obj ).getSymbolicName() );
+// }
+ }
+ } );
+ }
+
+ private void fillToolBar() {
+ fDrillDownAdapter = new RegistryDrillDownAdapter( fTreeViewer );
+ IActionBars bars = getViewSite().getActionBars();
+ bars.setGlobalActionHandler( ActionFactory.COPY.getId(), fCopyAction );
+ IToolBarManager mng = bars.getToolBarManager();
+ fDrillDownAdapter.addNavigationActions( mng );
+ mng.add( fRefreshAction );
+ mng.add( new Separator() );
+ mng.add( fCollapseAllAction );
+ IMenuManager mgr = bars.getMenuManager();
+ IMenuManager manager = new MenuManager( PDERuntimeMessages.get().RegistryBrowser_GroupBy );
+ manager.add( fGroupByBundlesAction );
+ manager.add( fGroupByExtensionPointsAction );
+ manager.add( fGroupByServicesAction );
+ mgr.add( manager );
+ mgr.add( new Separator() );
+ mgr.add( fShowPluginsAction );
+ mgr.add( fShowDisabledAction );
+ mgr.add( new Separator() );
+ mgr.add( fShowAdvancedOperationsAction );
+ }
+
+ private void fillContextMenu( IMenuManager manager ) {
+ manager.add( fRefreshAction );
+ manager.add( new Separator() );
+ manager.add( fCopyAction );
+ manager.add( new Separator() );
+ fDrillDownAdapter.addNavigationActions( manager );
+ manager.add( new Separator() );
+ // check if we should enable advanced actions
+ if( fShowAdvancedOperationsAction.isChecked() && isBundleSelected() ) {
+ // control bundle state actions
+ if( selectedBundlesStopped() )
+ manager.add( fStartAction );
+ if( selectedBundlesStarted() )
+ manager.add( fStopAction );
+ if( getSelectedBundles().size() == 1 )
+ manager.add( fDiagnoseAction );
+ // security related actions
+ if( selectedBundlesDisabled() )
+ manager.add( fEnableAction );
+ if( selectedBundlesEnabled() )
+ manager.add( fDisableAction );
+ }
+ manager.add( new Separator() );
+ manager.add( fShowPluginsAction );
+ manager.add( fShowDisabledAction );
+ manager.add( new Separator() );
+ manager.add( fShowAdvancedOperationsAction );
+ }
+
+ @Override
+ public void saveState( IMemento memento ) {
+ if( memento == null || fMemento == null || fTreeViewer == null )
+ return;
+ fMemento.putString( SHOW_RUNNING_PLUGINS, Boolean.toString( fShowPluginsAction.isChecked() ) );
+ fMemento.putString( SHOW_DISABLED_MODE, Boolean.toString( fShowDisabledAction.isChecked() ) );
+ fMemento.putBoolean( SHOW_ADVANCED_MODE, fShowAdvancedOperationsAction.isChecked() );
+ memento.putMemento( fMemento );
+ }
+
+ @Override
+ public void setFocus() {
+ Text filterText = fFilteredTree.getFilterControl();
+ if( filterText != null ) {
+ filterText.setFocus();
+ }
+ }
+
+ /*
+ * toolbar and context menu actions
+ */
+ private void makeActions() {
+ fRefreshAction = new Action( "refresh") { //$NON-NLS-1$
+
+ @Override
+ public void run() {
+ BusyIndicator.showWhile( fTreeViewer.getTree().getDisplay(), new Runnable() {
+
+ @Override
+ public void run() {
+ refresh( fTreeViewer.getInput() );
+ }
+ } );
+ }
+ };
+ fRefreshAction.setText( PDERuntimeMessages.get().RegistryView_refresh_label );
+ fRefreshAction.setToolTipText( PDERuntimeMessages.get().RegistryView_refresh_tooltip );
+ fRefreshAction.setImageDescriptor( PDERuntimePluginImages.DESC_REFRESH );
+ fRefreshAction.setDisabledImageDescriptor( PDERuntimePluginImages.DESC_REFRESH_DISABLED );
+ fShowPluginsAction = new Action( PDERuntimeMessages.get().RegistryView_showRunning_label) {
+
+ @Override
+ public void run() {
+ if( fShowPluginsAction.isChecked() ) {
+ fTreeViewer.addFilter( fActiveFilter );
+ } else {
+ fTreeViewer.removeFilter( fActiveFilter );
+ }
+ updateTitle( );
+ }
+ };
+ fShowPluginsAction.setChecked( fMemento.getString( SHOW_RUNNING_PLUGINS ).equals( "true" ) ); //$NON-NLS-1$
+ fShowDisabledAction = new Action( PDERuntimeMessages.get().RegistryView_showDisabled_label) {
+
+ @Override
+ public void run() {
+ if( fShowDisabledAction.isChecked() ) {
+ fTreeViewer.addFilter( fDisabledFilter );
+ } else {
+ fTreeViewer.removeFilter( fDisabledFilter );
+ }
+ updateTitle( );
+ }
+ };
+ fShowDisabledAction.setChecked( fMemento.getString( SHOW_DISABLED_MODE ).equals( "true" ) ); //$NON-NLS-1$
+ fCopyAction = new Action( PDERuntimeMessages.get().RegistryBrowser_copy_label) {
+
+ @Override
+ public void run() {
+ ITreeSelection selection = ( ITreeSelection )fFilteredTree.getViewer().getSelection();
+ if( selection.isEmpty() ) {
+ return;
+ }
+// String textVersion = ( ( ILabelProvider )fTreeViewer.getLabelProvider() )
+// .getText( selection.getFirstElement() );
+// if( ( textVersion != null ) && ( textVersion.trim().length() > 0 ) ) {
+// // set the clipboard contents
+// fClipboard.setContents( new Object[] {
+// textVersion
+// }, new Transfer[] {
+// TextTransfer.getInstance()
+// } );
+// }
+ }
+ };
+ fCopyAction.setImageDescriptor( PDERuntimePluginImages.COPY_QNAME );
+ fGroupByBundlesAction = new GroupByAction( PDERuntimeMessages.get().RegistryBrowser_Bundle,
+ BUNDLES );
+ int groupBy = getGroupBy();
+ fGroupByBundlesAction.setChecked( groupBy == BUNDLES );
+ fGroupByExtensionPointsAction = new GroupByAction( PDERuntimeMessages
+ .get().RegistryBrowser_ExtensionPoint, EXTENSION_REGISTRY );
+ fGroupByExtensionPointsAction.setChecked( groupBy == EXTENSION_REGISTRY );
+ fGroupByServicesAction = new GroupByAction( PDERuntimeMessages.get().RegistryBrowser_Service,
+ SERVICES );
+ fGroupByServicesAction.setChecked( groupBy == SERVICES );
+ fShowAdvancedOperationsAction = new Action( PDERuntimeMessages
+ .get().RegistryView_showAdvanced_label)
+ {
+
+ @Override
+ public void run( ) { // do nothing
+ }
+ };
+ fShowAdvancedOperationsAction
+ .setChecked( fMemento.getString( SHOW_ADVANCED_MODE ).equals( "true" ) ); //$NON-NLS-1$
+ fStartAction = new Action( PDERuntimeMessages.get().RegistryView_startAction_label) {
+
+ @Override
+ public void run() {
+ try {
+ List bundles = getSelectedBundles();
+ for( Iterator it = bundles.iterator(); it.hasNext(); ) {
+ Bundle bundle = ( Bundle )it.next();
+ bundle.start();
+ }
+ } catch( BundleException e ) {
+ PDERuntimePlugin.log( e );
+ }
+ }
+ };
+ fStopAction = new Action( PDERuntimeMessages.get().RegistryView_stopAction_label) {
+
+ @Override
+ public void run() {
+ try {
+ List bundles = getSelectedBundles();
+ for( Iterator it = bundles.iterator(); it.hasNext(); ) {
+ Bundle bundle = ( Bundle )it.next();
+ bundle.stop();
+ }
+ } catch( BundleException e ) {
+ PDERuntimePlugin.log( e );
+ }
+ }
+ };
+ fEnableAction = new Action( PDERuntimeMessages.get().RegistryView_enableAction_label) {
+
+ @Override
+ public void run() {
+ List bundles = getSelectedBundles();
+ for( Iterator it = bundles.iterator(); it.hasNext(); ) {
+ Bundle bundle = ( Bundle )it.next();
+ bundle.enable( );
+ }
+ }
+ };
+ fDisableAction = new Action( PDERuntimeMessages.get().RegistryView_disableAction_label) {
+
+ @Override
+ public void run() {
+ List bundles = getSelectedBundles();
+ for( Iterator it = bundles.iterator(); it.hasNext(); ) {
+ Bundle bundle = ( Bundle )it.next();
+ bundle.disable( );
+ }
+ }
+ };
+ fDiagnoseAction = new Action( PDERuntimeMessages.get().RegistryView_diagnoseAction_label) {
+
+ @Override
+ public void run() {
+ List bundles = getSelectedBundles();
+ for( Iterator it = bundles.iterator(); it.hasNext(); ) {
+ Bundle bundle = ( Bundle )it.next();
+ MultiStatus problems = bundle.diagnose();
+ Dialog dialog;
+ if( ( problems != null ) && ( problems.getChildren().length > 0 ) ) {
+ dialog = new DiagnosticsDialog( getSite().getShell(),
+ PDERuntimeMessages.get().RegistryView_diag_dialog_title,
+ null,
+ problems,
+ IStatus.WARNING );
+ dialog.open();
+ } else {
+ MessageDialog
+ .openInformation( getSite().getShell(),
+ PDERuntimeMessages.get().RegistryView_diag_dialog_title,
+ PDERuntimeMessages.get().RegistryView_no_unresolved_constraints );
+ }
+ }
+ }
+ };
+ fCollapseAllAction = new Action( "collapseAll") { //$NON-NLS-1$
+
+ @Override
+ public void run() {
+ fTreeViewer.collapseAll( );
+ }
+ };
+ fCollapseAllAction.setText( PDERuntimeMessages.get().RegistryView_collapseAll_label );
+ fCollapseAllAction.setImageDescriptor( PDERuntimePluginImages.DESC_COLLAPSE_ALL );
+ fCollapseAllAction.setToolTipText( PDERuntimeMessages.get().RegistryView_collapseAll_tooltip );
+ }
+
+ public int getGroupBy() {
+ return fMemento.getInteger( GROUP_BY ).intValue();
+ }
+
+ public void updateTitle() {
+ setContentDescription( getTitleSummary() );
+ }
+
+ protected Tree getUndisposedTree() {
+ if( fTreeViewer == null || fTreeViewer.getTree() == null || fTreeViewer.getTree().isDisposed() )
+ return null;
+ return fTreeViewer.getTree();
+ }
+
+ public String getTitleSummary() {
+ Tree tree = getUndisposedTree();
+ String type;
+ int total = 0;
+ switch( getGroupBy() ) {
+ default:
+ case BUNDLES:
+ type = PDERuntimeMessages.get().RegistryBrowser_plugins;
+ total = model.getBundles().length;
+ break;
+ case EXTENSION_REGISTRY:
+ type = PDERuntimeMessages.get().RegistryBrowser_extensionPoints;
+ total = model.getExtensionPoints().length;
+ break;
+ case SERVICES:
+ type = PDERuntimeMessages.get().RegistryBrowser_Services;
+ total = model.getServiceNames().length;
+ break;
+ }
+ if( tree == null )
+ return NLS.bind( PDERuntimeMessages.get().RegistryView_titleSummary, ( new String[] {
+ "0", //$NON-NLS-1$
+ "0", //$NON-NLS-1$
+ type
+ } ) );
+ return NLS.bind( PDERuntimeMessages.get().RegistryView_titleSummary, ( new String[] {
+ Integer.toString( tree.getItemCount() ),
+ Integer.toString( total ),
+ type
+ } ) );
+ }
+
+ private boolean isBundleSelected() {
+ IStructuredSelection selection = ( IStructuredSelection )fTreeViewer.getSelection();
+ if( selection != null ) {
+ Object[] elements = selection.toArray();
+ for( int i = 0; i < elements.length; i++ ) {
+ if( !( elements[ i ] instanceof Bundle ) ) {
+ return false;
+ }
+ }
+ }
+ return true;
+ }
+
+ private List getSelectedBundles() {
+ List bundles = new ArrayList();
+ IStructuredSelection selection = ( IStructuredSelection )fTreeViewer.getSelection();
+ if( selection != null ) {
+ Object[] elements = selection.toArray();
+ for( int i = 0; i < elements.length; i++ ) {
+ if( elements[ i ] instanceof Bundle ) {
+ bundles.add( elements[ i ] );
+ }
+ }
+ }
+ return bundles;
+ }
+
+ /**
+ * @return true if none is stopped, false if at least one is stopped
+ */
+ private boolean selectedBundlesStarted() {
+ List bundles = getSelectedBundles();
+ for( Iterator it = bundles.iterator(); it.hasNext(); ) {
+ Bundle bundle = ( Bundle )it.next();
+ if( bundle.getState() != Bundle.ACTIVE )
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * @return true if none is active, false if at least one is active
+ */
+ private boolean selectedBundlesStopped() {
+ List bundles = getSelectedBundles();
+ for( Iterator it = bundles.iterator(); it.hasNext(); ) {
+ Bundle bundle = ( Bundle )it.next();
+ if( bundle.getState() == Bundle.ACTIVE )
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * @return true if none is enabled, false if at least one is enabled
+ */
+ private boolean selectedBundlesDisabled() {
+ List bundles = getSelectedBundles();
+ for( Iterator it = bundles.iterator(); it.hasNext(); ) {
+ Bundle bundle = ( Bundle )it.next();
+ if( bundle.isEnabled() )
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * @return true if none is disabled, false if at least one is disabled
+ */
+ private boolean selectedBundlesEnabled() {
+ List bundles = getSelectedBundles();
+ for( Iterator it = bundles.iterator(); it.hasNext(); ) {
+ Bundle bundle = ( Bundle )it.next();
+ if( !bundle.isEnabled() )
+ return false;
+ }
+ return true;
+ }
+
+ public void add( Object object ) {
+ Object parent = fContentProvider.getParent( object );
+ if( parent == null ) {
+ add( fTreeViewer.getInput(), object );
+ } else {
+ refresh( parent );
+ }
+ }
+
+ protected void add( Object parent, Object object ) {
+ if( fTreeViewer.getTree().isDisposed() )
+ return;
+ if( fDrillDownAdapter.canGoHome() )
+ return;
+ fTreeViewer.add( parent, object );
+ updateTitle();
+ }
+
+ public void remove( Object object ) {
+ if( fTreeViewer.getTree().isDisposed() )
+ return;
+ if( fDrillDownAdapter.canGoHome() )
+ return;
+ fTreeViewer.remove( object );
+ updateTitle();
+ }
+
+ private boolean filtersEnabled() {
+ return fTreeViewer.getFilters().length > 0;
+ }
+
+ private void deferredRefresh() {
+ if( refreshThread != null )
+ return;
+ long now = System.currentTimeMillis();
+ if( now - lastRefresh > REFRESH_DELAY ) {
+ fTreeViewer.refresh();
+ updateTitle();
+ lastRefresh = now;
+ } else {
+ Runnable runnable = new Runnable() {
+
+ @Override
+ public void run() {
+ try {
+ Thread.sleep( REFRESH_DELAY );
+ } catch( InterruptedException e ) {
+ return;
+ }
+ refreshThread = null;
+ if( fTreeViewer.getTree().isDisposed() )
+ return;
+ fTreeViewer.getTree().getDisplay().asyncExec( new Runnable() {
+
+ @Override
+ public void run() {
+ if( !fTreeViewer.getTree().isDisposed() ) {
+ fTreeViewer.refresh();
+ updateTitle();
+ }
+ }
+ } );
+ }
+ };
+ refreshThread = new Thread( runnable );
+ refreshThread.start();
+ }
+ }
+
+ void refresh( Object[] objects ) {
+ if( fTreeViewer.getTree().isDisposed() )
+ return;
+ if( filtersEnabled() ) {
+ deferredRefresh();
+ } else {
+ for( int i = 0; i < objects.length; i++ ) {
+ fTreeViewer.refresh( objects[ i ] );
+ }
+ }
+ updateTitle();
+ }
+
+ void refresh( Object object ) {
+ if( fTreeViewer.getTree().isDisposed() )
+ return;
+ if( filtersEnabled() ) {
+ deferredRefresh();
+ } else {
+ fTreeViewer.refresh( object );
+ updateTitle();
+ }
+ }
+
+ @Override
+ public Object getAdapter( Class clazz ) {
+ if( ILabelProvider.class.equals( clazz ) ) {
+ return fLabelProvider;
+ }
+ if( IContentProvider.class.equals( clazz ) ) {
+ return fContentProvider;
+ }
+ return super.getAdapter( clazz );
+ }
+
+ /**
+ * Internal api to set group_by value
+ *
+ * @param newGroupBy returns the old group_by value.
+ */
+ public int showGroupBy( int newGroupBy ) {
+ int previousGroupBy = getGroupBy();
+ if( fTreeViewer != null && !fTreeViewer.getControl().isDisposed() ) {
+ fMemento.putInteger( GROUP_BY, newGroupBy );
+ fRefreshAction.run();
+ }
+ return previousGroupBy;
+ }
+}
diff --git a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/RegistryBrowserContentProvider.java b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/RegistryBrowserContentProvider.java
index f9798b6..4ed6cb9 100644
--- a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/RegistryBrowserContentProvider.java
+++ b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/RegistryBrowserContentProvider.java
@@ -1,145 +1,177 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2009 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
- * Wolfgang Schell <ws@jetztgrad.net> - bug 259348
- *******************************************************************************/
-package org.eclipse.pde.internal.runtime.registry;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.jface.viewers.*;
-import org.eclipse.pde.internal.runtime.registry.model.*;
-
-
-public class RegistryBrowserContentProvider implements ITreeContentProvider {
-
- public boolean isInExtensionSet;
- private RegistryBrowser fRegistryBrowser;
-
- public RegistryBrowserContentProvider( RegistryBrowser registryBrowser ) {
- fRegistryBrowser = registryBrowser;
- }
-
- public void dispose() { // nothing to dispose
- }
-
- public Object[] getElements( Object element ) {
- return getChildren( element );
- }
-
- public Object[] getChildren( Object element ) {
- if( element instanceof RegistryModel ) {
- RegistryModel model = ( RegistryModel )element;
- switch( fRegistryBrowser.getGroupBy() ) {
- case ( RegistryBrowser.BUNDLES ):
- return model.getBundles();
- case ( RegistryBrowser.EXTENSION_REGISTRY ):
- return model.getExtensionPoints();
- case ( RegistryBrowser.SERVICES ):
- return model.getServiceNames();
- }
- return null;
- }
- if( element instanceof Extension )
- return ( ( Extension )element ).getConfigurationElements();
- isInExtensionSet = false;
- if( element instanceof ExtensionPoint )
- return ( ( ExtensionPoint )element ).getExtensions().toArray();
- if( element instanceof ConfigurationElement )
- return ( ( ConfigurationElement )element ).getElements();
- if( element instanceof Bundle ) {
- if( fRegistryBrowser.getGroupBy() != RegistryBrowser.BUNDLES ) // expands only in Bundles mode
- return null;
- Bundle bundle = ( Bundle )element;
- List folders = new ArrayList( 9 );
- folders.add( new Attribute( Attribute.F_LOCATION, bundle.getLocation() ) );
- if( bundle.getImports().length > 0 )
- folders.add( new Folder( Folder.F_IMPORTS, bundle ) );
- if( bundle.getImportedPackages().length > 0 )
- folders.add( new Folder( Folder.F_IMPORTED_PACKAGES, bundle ) );
- if( bundle.getExportedPackages().length > 0 )
- folders.add( new Folder( Folder.F_EXPORTED_PACKAGES, bundle ) );
- if( bundle.getLibraries().length > 0 )
- folders.add( new Folder( Folder.F_LIBRARIES, bundle ) );
- if( bundle.getExtensionPoints().length > 0 )
- folders.add( new Folder( Folder.F_EXTENSION_POINTS, bundle ) );
- if( bundle.getExtensions().length > 0 )
- folders.add( new Folder( Folder.F_EXTENSIONS, bundle ) );
- if( bundle.getRegisteredServices().length > 0 )
- folders.add( new Folder( Folder.F_REGISTERED_SERVICES, bundle ) );
- if( bundle.getServicesInUse().length > 0 )
- folders.add( new Folder( Folder.F_SERVICES_IN_USE, bundle ) );
- if( bundle.getFragments().length > 0 )
- folders.add( new Folder( Folder.F_FRAGMENTS, bundle ) );
- return folders.toArray();
- }
- isInExtensionSet = false;
- if( element instanceof Folder ) {
- Folder folder = ( Folder )element;
- isInExtensionSet = folder.getId() == Folder.F_EXTENSIONS;
- ModelObject[] objs = folder.getChildren();
- if( folder.getId() == Folder.F_USING_BUNDLES ) {
- ModelObject[] result = new ModelObject[ objs.length ];
- ILabelProvider labelProvider = ( ILabelProvider )fRegistryBrowser.getAdapter( ILabelProvider.class );
- for( int i = 0; i < objs.length; i++ ) {
- result[ i ] = new Attribute( Attribute.F_BUNDLE, labelProvider.getText( objs[ i ] ) );
- }
- objs = result;
- }
- return objs;
- }
- if( element instanceof ConfigurationElement ) {
- return ( ( ConfigurationElement )element ).getElements();
- }
- if( element instanceof ExtensionPoint ) {
- ExtensionPoint extensionPoint = ( ExtensionPoint )element;
- Object[] objs = extensionPoint.getExtensions().toArray();
- return objs;
- }
- if( element instanceof ServiceName ) {
- return ( ( ServiceName )element ).getChildren();
- }
- if( element instanceof ServiceRegistration ) {
- ServiceRegistration service = ( ServiceRegistration )element;
- List folders = new ArrayList();
- if( service.getProperties().length > 0 )
- folders.add( new Folder( Folder.F_PROPERTIES, service ) );
- if( service.getUsingBundleIds().length > 0 )
- folders.add( new Folder( Folder.F_USING_BUNDLES, service ) );
- return folders.toArray();
- }
- if( element instanceof Object[] ) {
- return ( Object[] )element;
- }
- return null;
- }
-
- public Object getParent( Object element ) {
- if( !( element instanceof ModelObject ) ) {
- return null;
- }
- if( element instanceof Folder ) {
- return ( ( Folder )element ).getParent();
- }
- return null;
- }
-
- public boolean hasChildren( Object element ) {
- // Bundle and ServiceRegistration always have children
- if( element instanceof Bundle )
- return true;
- if( element instanceof ServiceRegistration )
- return true;
- Object[] children = getChildren( element );
- return children != null && children.length > 0;
- }
-
- public void inputChanged( Viewer viewer, Object oldInput, Object newInput ) { // do nothing
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2000, 2009 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
+ * Wolfgang Schell <ws@jetztgrad.net> - bug 259348
+ *******************************************************************************/
+package org.eclipse.pde.internal.runtime.registry;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.eclipse.jface.viewers.*;
+import org.eclipse.pde.internal.runtime.registry.model.*;
+
+public class RegistryBrowserContentProvider implements ITreeContentProvider {
+
+ public boolean isInExtensionSet;
+
+ private RegistryBrowser fRegistryBrowser;
+
+ public RegistryBrowserContentProvider(RegistryBrowser registryBrowser) {
+ fRegistryBrowser = registryBrowser;
+ }
+
+ @Override
+ public void dispose() { // nothing to dispose
+ }
+
+ @Override
+ public Object[] getElements(Object element) {
+ return getChildren(element);
+ }
+
+ @Override
+ public Object[] getChildren(Object element) {
+ if (element instanceof RegistryModel) {
+ RegistryModel model = (RegistryModel) element;
+
+ switch (fRegistryBrowser.getGroupBy()) {
+ case (RegistryBrowser.BUNDLES) :
+ return model.getBundles();
+ case (RegistryBrowser.EXTENSION_REGISTRY) :
+ return model.getExtensionPoints();
+ case (RegistryBrowser.SERVICES) :
+ return model.getServiceNames();
+ }
+
+ return null;
+ }
+
+ if (element instanceof Extension)
+ return ((Extension) element).getConfigurationElements();
+
+ isInExtensionSet = false;
+ if (element instanceof ExtensionPoint)
+ return ((ExtensionPoint) element).getExtensions().toArray();
+
+ if (element instanceof ConfigurationElement)
+ return ((ConfigurationElement) element).getElements();
+
+ if (element instanceof Bundle) {
+ if (fRegistryBrowser.getGroupBy() != RegistryBrowser.BUNDLES) // expands only in Bundles mode
+ return null;
+
+ Bundle bundle = (Bundle) element;
+
+ List folders = new ArrayList(9);
+
+ folders.add(new Attribute(Attribute.F_LOCATION, bundle.getLocation()));
+ if (bundle.getImports().length > 0)
+ folders.add(new Folder(Folder.F_IMPORTS, bundle));
+ if (bundle.getImportedPackages().length > 0)
+ folders.add(new Folder(Folder.F_IMPORTED_PACKAGES, bundle));
+ if (bundle.getExportedPackages().length > 0)
+ folders.add(new Folder(Folder.F_EXPORTED_PACKAGES, bundle));
+ if (bundle.getLibraries().length > 0)
+ folders.add(new Folder(Folder.F_LIBRARIES, bundle));
+ if (bundle.getExtensionPoints().length > 0)
+ folders.add(new Folder(Folder.F_EXTENSION_POINTS, bundle));
+ if (bundle.getExtensions().length > 0)
+ folders.add(new Folder(Folder.F_EXTENSIONS, bundle));
+ if (bundle.getRegisteredServices().length > 0)
+ folders.add(new Folder(Folder.F_REGISTERED_SERVICES, bundle));
+ if (bundle.getServicesInUse().length > 0)
+ folders.add(new Folder(Folder.F_SERVICES_IN_USE, bundle));
+ if (bundle.getFragments().length > 0)
+ folders.add(new Folder(Folder.F_FRAGMENTS, bundle));
+
+ return folders.toArray();
+ }
+
+ isInExtensionSet = false;
+
+ if (element instanceof Folder) {
+ Folder folder = (Folder) element;
+ isInExtensionSet = folder.getId() == Folder.F_EXTENSIONS;
+ ModelObject[] objs = folder.getChildren();
+ if (folder.getId() == Folder.F_USING_BUNDLES) {
+ ModelObject[] result = new ModelObject[objs.length];
+ ILabelProvider labelProvider = (ILabelProvider) fRegistryBrowser.getAdapter(ILabelProvider.class);
+
+ for (int i = 0; i < objs.length; i++) {
+ result[i] = new Attribute(Attribute.F_BUNDLE, labelProvider.getText(objs[i]));
+ }
+
+ objs = result;
+ }
+ return objs;
+ }
+ if (element instanceof ConfigurationElement) {
+ return ((ConfigurationElement) element).getElements();
+ }
+
+ if (element instanceof ExtensionPoint) {
+ ExtensionPoint extensionPoint = (ExtensionPoint) element;
+ Object[] objs = extensionPoint.getExtensions().toArray();
+ return objs;
+ }
+
+ if (element instanceof ServiceName) {
+ return ((ServiceName) element).getChildren();
+ }
+
+ if (element instanceof ServiceRegistration) {
+ ServiceRegistration service = (ServiceRegistration) element;
+
+ List folders = new ArrayList();
+
+ if (service.getProperties().length > 0)
+ folders.add(new Folder(Folder.F_PROPERTIES, service));
+ if (service.getUsingBundleIds().length > 0)
+ folders.add(new Folder(Folder.F_USING_BUNDLES, service));
+
+ return folders.toArray();
+ }
+
+ if (element instanceof Object[]) {
+ return (Object[]) element;
+ }
+
+ return null;
+ }
+
+ @Override
+ public Object getParent(Object element) {
+ if (!(element instanceof ModelObject)) {
+ return null;
+ }
+
+ if (element instanceof Folder) {
+ return ((Folder) element).getParent();
+ }
+
+ return null;
+ }
+
+ @Override
+ public boolean hasChildren(Object element) {
+ // Bundle and ServiceRegistration always have children
+ if (element instanceof Bundle)
+ return true;
+ if (element instanceof ServiceRegistration)
+ return true;
+
+ Object[] children = getChildren(element);
+ return children != null && children.length > 0;
+ }
+
+ @Override
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { // do nothing
+ }
+
+}
diff --git a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/RegistryBrowserModelChangeListener.java b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/RegistryBrowserModelChangeListener.java
index a577d75..25cdbb9 100644
--- a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/RegistryBrowserModelChangeListener.java
+++ b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/RegistryBrowserModelChangeListener.java
@@ -1,143 +1,143 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2009 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.pde.internal.runtime.registry;
-
-import org.eclipse.pde.internal.runtime.registry.model.*;
-import org.eclipse.swt.widgets.Display;
-
-
-public class RegistryBrowserModelChangeListener implements ModelChangeListener {
-
- private RegistryBrowser fRegistryBrowser;
- private Display fDisplay;
-
- public RegistryBrowserModelChangeListener( RegistryBrowser registryBrowser, Display display ) {
- fRegistryBrowser = registryBrowser;
- fDisplay = display;
- }
-
- public void modelChanged( final ModelChangeDelta[] delta ) {
- fDisplay.asyncExec( new Runnable() {
-
- public void run() {
- update( delta );
- }
- } );
- }
-
- private boolean topLevelElement( Object object ) {
- switch( fRegistryBrowser.getGroupBy() ) {
- case ( RegistryBrowser.BUNDLES ):
- return object instanceof Bundle;
- case ( RegistryBrowser.EXTENSION_REGISTRY ):
- return object instanceof ExtensionPoint;
- case ( RegistryBrowser.SERVICES ):
- return object instanceof ServiceName;
- }
- return false;
- }
-
- /**
- * TODO FIXME this should be moved to content provider getParent
- *
- * @param object
- * @return if returns array, then appears under all top level elements of that array
- */
- private Object getTopLevelElement( Object object ) {
- if( fRegistryBrowser.getGroupBy() == RegistryBrowser.BUNDLES ) {
- if( object instanceof Bundle ) {
- return object;
- } else if( object instanceof ExtensionPoint ) {
- ExtensionPoint ext = ( ExtensionPoint )object;
- return ext.getContributor();
- } else if( object instanceof Extension ) {
- Extension ext = ( Extension )object;
- return ext.getContributor();
- } else if( object instanceof ServiceRegistration ) {
- ServiceRegistration reg = ( ServiceRegistration )object;
- Bundle[] bundles = reg.getUsingBundles();
- if( bundles.length == 0 ) {
- return reg.getBundle();
- }
- Object[] result = new Object[ bundles.length + 1 ];
- result[ 0 ] = reg.getBundle();
- System.arraycopy( bundles, 0, result, 1, bundles.length );
- return result;
- }
- } else if( fRegistryBrowser.getGroupBy() == RegistryBrowser.EXTENSION_REGISTRY ) {
- if( object instanceof ExtensionPoint ) {
- return object;
- } else if( object instanceof Extension ) {
- Extension ext = ( Extension )object;
- return ext.getExtensionPoint();
- }
- } else if( fRegistryBrowser.getGroupBy() == RegistryBrowser.SERVICES ) {
- if( object instanceof ServiceRegistration ) {
- ServiceRegistration service = ( ServiceRegistration )object;
- return service.getName();
- } else if( object instanceof Bundle ) {
- Object[] services = ( ( Bundle )object ).getServicesInUse();
- for( int i = 0; i < services.length; i++ ) {
- ServiceRegistration service = ( ( ServiceRegistration )services[ i ] );
- services[ i ] = service.getName();
- }
- return services;
- }
- }
- return null;
- }
-
- private void refreshTopLevelElements( Object object ) {
- Object topLevelElement = getTopLevelElement( object );
- if( topLevelElement == null )
- return;
- if( topLevelElement.getClass().isArray() ) {
- Object[] array = ( Object[] )topLevelElement;
- fRegistryBrowser.refresh( array );
- } else {
- fRegistryBrowser.refresh( topLevelElement );
- }
- }
-
- protected void update( ModelChangeDelta[] deltas ) {
- for( int i = 0; i < deltas.length; i++ ) {
- ModelObject object = deltas[ i ].getModelObject();
- int flag = deltas[ i ].getFlag();
- switch( flag ) {
- case ModelChangeDelta.ADDED:
- if( topLevelElement( object ) ) {
- fRegistryBrowser.add( object );
- } else {
- refreshTopLevelElements( object );
- }
- break;
- case ModelChangeDelta.REMOVED:
- if( topLevelElement( object ) ) {
- fRegistryBrowser.remove( object );
- } else {
- refreshTopLevelElements( object );
- }
- break;
- case ModelChangeDelta.STARTED:
- case ModelChangeDelta.STOPPED:
- case ModelChangeDelta.RESOLVED:
- case ModelChangeDelta.UNRESOLVED:
- case ModelChangeDelta.UPDATED:
- if( topLevelElement( object ) ) {
- fRegistryBrowser.refresh( object );
- } else {
- refreshTopLevelElements( object );
- }
- break;
- }
- }
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2008, 2015 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.pde.internal.runtime.registry;
+
+import org.eclipse.pde.internal.runtime.registry.model.*;
+
+public class RegistryBrowserModelChangeListener implements ModelChangeListener {
+
+ private RegistryBrowser fRegistryBrowser;
+
+ public RegistryBrowserModelChangeListener(RegistryBrowser registryBrowser) {
+ fRegistryBrowser = registryBrowser;
+ }
+
+ @Override
+ public void modelChanged(final ModelChangeDelta[] delta) {
+ fRegistryBrowser.getSite().getWorkbenchWindow().getWorkbench().getDisplay().asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ update(delta);
+ }
+ });
+ }
+
+ private boolean topLevelElement(Object object) {
+ switch (fRegistryBrowser.getGroupBy()) {
+ case (RegistryBrowser.BUNDLES) :
+ return object instanceof Bundle;
+ case (RegistryBrowser.EXTENSION_REGISTRY) :
+ return object instanceof ExtensionPoint;
+ case (RegistryBrowser.SERVICES) :
+ return object instanceof ServiceName;
+ }
+
+ return false;
+ }
+
+ /**
+ * TODO FIXME this should be moved to content provider getParent
+ *
+ * @param object
+ * @return if returns array, then appears under all top level elements of that array
+ */
+ private Object getTopLevelElement(Object object) {
+ if (fRegistryBrowser.getGroupBy() == RegistryBrowser.BUNDLES) {
+ if (object instanceof Bundle) {
+ return object;
+ } else if (object instanceof ExtensionPoint) {
+ ExtensionPoint ext = (ExtensionPoint) object;
+ return ext.getContributor();
+ } else if (object instanceof Extension) {
+ Extension ext = (Extension) object;
+ return ext.getContributor();
+ } else if (object instanceof ServiceRegistration) {
+ ServiceRegistration reg = (ServiceRegistration) object;
+
+ Bundle[] bundles = reg.getUsingBundles();
+ if (bundles.length == 0) {
+ return reg.getBundle();
+ }
+
+ Object[] result = new Object[bundles.length + 1];
+ result[0] = reg.getBundle();
+ System.arraycopy(bundles, 0, result, 1, bundles.length);
+
+ return result;
+ }
+ } else if (fRegistryBrowser.getGroupBy() == RegistryBrowser.EXTENSION_REGISTRY) {
+ if (object instanceof ExtensionPoint) {
+ return object;
+ } else if (object instanceof Extension) {
+ Extension ext = (Extension) object;
+ return ext.getExtensionPoint();
+ }
+ } else if (fRegistryBrowser.getGroupBy() == RegistryBrowser.SERVICES) {
+ if (object instanceof ServiceRegistration) {
+ ServiceRegistration service = (ServiceRegistration) object;
+ return service.getName();
+ } else if (object instanceof Bundle) {
+ return ((Bundle) object).getServicesInUse();
+ }
+ }
+
+ return null;
+ }
+
+ private void refreshTopLevelElements(Object object) {
+ Object topLevelElement = getTopLevelElement(object);
+
+ if (topLevelElement == null)
+ return;
+
+ if (topLevelElement.getClass().isArray()) {
+ Object[] array = (Object[]) topLevelElement;
+ fRegistryBrowser.refresh(array);
+ } else {
+ fRegistryBrowser.refresh(topLevelElement);
+ }
+ }
+
+ protected void update(ModelChangeDelta[] deltas) {
+ for (int i = 0; i < deltas.length; i++) {
+ ModelObject object = deltas[i].getModelObject();
+ int flag = deltas[i].getFlag();
+
+ switch (flag) {
+ case ModelChangeDelta.ADDED :
+ if (topLevelElement(object)) {
+ fRegistryBrowser.add(object);
+ } else {
+ refreshTopLevelElements(object);
+ }
+ break;
+ case ModelChangeDelta.REMOVED :
+ if (topLevelElement(object)) {
+ fRegistryBrowser.remove(object);
+ } else {
+ refreshTopLevelElements(object);
+ }
+ break;
+ case ModelChangeDelta.STARTED :
+ case ModelChangeDelta.STOPPED :
+ case ModelChangeDelta.RESOLVED :
+ case ModelChangeDelta.UNRESOLVED :
+ case ModelChangeDelta.UPDATED :
+ if (topLevelElement(object)) {
+ fRegistryBrowser.refresh(object);
+ } else {
+ refreshTopLevelElements(object);
+ }
+ break;
+ }
+ }
+ }
+}
diff --git a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/RegistryFilteredTree.java b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/RegistryFilteredTree.java
index 0e8d4be..3028be3 100644
--- a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/RegistryFilteredTree.java
+++ b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/RegistryFilteredTree.java
@@ -1,61 +1,62 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 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.pde.internal.runtime.registry;
-
-import org.eclipse.swt.layout.*;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.dialogs.FilteredTree;
-import org.eclipse.ui.dialogs.PatternFilter;
-
-
-public class RegistryFilteredTree extends FilteredTree {
-
- private RegistryBrowser browser;
-
- public RegistryFilteredTree( RegistryBrowser browser,
- Composite parent,
- int treeStyle,
- PatternFilter filter )
- {
- super( parent, treeStyle, filter, true );
- this.browser = browser;
- }
-
- protected void createControl( Composite parent, int treeStyle ) {
- super.createControl( parent, treeStyle );
- // add 2px margin around filter text
- FormLayout layout = new FormLayout();
- layout.marginHeight = 0;
- layout.marginWidth = 0;
- setLayout( layout );
- FormData data = new FormData();
- data.left = new FormAttachment( 0, 0 );
- data.right = new FormAttachment( 100, 0 );
- data.bottom = new FormAttachment( 100, 0 );
- if( showFilterControls ) {
- FormData filterData = new FormData();
- filterData.top = new FormAttachment( 0, 2 );
- filterData.left = new FormAttachment( 0, 2 );
- filterData.right = new FormAttachment( 100, -2 );
- filterComposite.setLayoutData( filterData );
- data.top = new FormAttachment( filterComposite, 2 );
- } else {
- data.top = new FormAttachment( 0, 0 );
- }
- treeComposite.setLayoutData( data );
- }
-
- protected void updateToolbar( boolean visible ) {
- super.updateToolbar( visible );
- // update view title on viewer's toolbar update
- browser.updateTitle();
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2006, 2009 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.pde.internal.runtime.registry;
+
+import org.eclipse.swt.layout.*;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.dialogs.FilteredTree;
+import org.eclipse.ui.dialogs.PatternFilter;
+
+public class RegistryFilteredTree extends FilteredTree {
+
+ private RegistryBrowser browser;
+
+ public RegistryFilteredTree(RegistryBrowser browser, Composite parent, int treeStyle, PatternFilter filter) {
+ super(parent, treeStyle, filter, true);
+ this.browser = browser;
+ }
+
+ @Override
+ protected void createControl(Composite parent, int treeStyle) {
+ super.createControl(parent, treeStyle);
+
+ // add 2px margin around filter text
+
+ FormLayout layout = new FormLayout();
+ layout.marginHeight = 0;
+ layout.marginWidth = 0;
+ setLayout(layout);
+
+ FormData data = new FormData();
+ data.left = new FormAttachment(0, 0);
+ data.right = new FormAttachment(100, 0);
+ data.bottom = new FormAttachment(100, 0);
+ if (showFilterControls) {
+ FormData filterData= new FormData();
+ filterData.top = new FormAttachment(0, 2);
+ filterData.left = new FormAttachment(0, 2);
+ filterData.right = new FormAttachment(100, -2);
+ filterComposite.setLayoutData(filterData);
+ data.top = new FormAttachment(filterComposite, 2);
+ } else {
+ data.top = new FormAttachment(0, 0);
+ }
+ treeComposite.setLayoutData(data);
+ }
+
+ @Override
+ protected void updateToolbar(boolean visible) {
+ super.updateToolbar(visible);
+
+ // update view title on viewer's toolbar update
+ browser.updateTitle();
+ }
+}
diff --git a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/Attribute.java b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/Attribute.java
index e51533d..cc153d1 100644
--- a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/Attribute.java
+++ b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/Attribute.java
@@ -1,44 +1,45 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2009 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.pde.internal.runtime.registry.model;
-
-public class Attribute extends ModelObject {
-
- public static final String F_LOCATION = "Location"; //$NON-NLS-1$
- public static final String F_BUNDLE = "Bundle"; //$NON-NLS-1$
- private String name;
- private String value;
-
- public Attribute() {
- // empty
- }
-
- public Attribute( String name, String value ) {
- this.name = name;
- this.value = value;
- }
-
- public String getValue() {
- return value;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName( String name ) {
- this.name = name;
- }
-
- public void setValue( String value ) {
- this.value = value;
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 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.pde.internal.runtime.registry.model;
+
+public class Attribute extends ModelObject {
+ public static final String F_LOCATION = "Location"; //$NON-NLS-1$
+
+ public static final String F_BUNDLE = "Bundle"; //$NON-NLS-1$
+
+ private String name;
+ private String value;
+
+ public Attribute() {
+ // empty
+ }
+
+ public Attribute(String name, String value) {
+ this.name = name;
+ this.value = value;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+}
diff --git a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/BackendChangeListener.java b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/BackendChangeListener.java
index 033d955..91fcb86 100644
--- a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/BackendChangeListener.java
+++ b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/BackendChangeListener.java
@@ -1,38 +1,39 @@
-/*******************************************************************************
- * Copyright (c) 2009 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.pde.internal.runtime.registry.model;
-
-/**
- * Notifies on any changes coming from backend. Usually RegistryModel is only interested in
- * receiving news about that.
- */
-public interface BackendChangeListener {
-
- void addBundle( Bundle adapter );
-
- void removeBundle( Bundle adapter );
-
- void updateBundle( Bundle adapter, int updated );
-
- void addService( ServiceRegistration adapter );
-
- void removeService( ServiceRegistration adapter );
-
- void updateService( ServiceRegistration adapter );
-
- void addExtensions( Extension[] extensions );
-
- void removeExtensions( Extension[] extensions );
-
- void addExtensionPoints( ExtensionPoint[] extensionPoints );
-
- void removeExtensionPoints( ExtensionPoint[] extensionPoints );
-}
+/*******************************************************************************
+ * Copyright (c) 2009 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.pde.internal.runtime.registry.model;
+
+/**
+ * Notifies on any changes coming from backend. Usually RegistryModel is only interested in receiving
+ * news about that.
+ *
+ */
+public interface BackendChangeListener {
+
+ void addBundle(Bundle adapter);
+
+ void removeBundle(Bundle adapter);
+
+ void updateBundle(Bundle adapter, int updated);
+
+ void addService(ServiceRegistration adapter);
+
+ void removeService(ServiceRegistration adapter);
+
+ void updateService(ServiceRegistration adapter);
+
+ void addExtensions(Extension[] extensions);
+
+ void removeExtensions(Extension[] extensions);
+
+ void addExtensionPoints(ExtensionPoint[] extensionPoints);
+
+ void removeExtensionPoints(ExtensionPoint[] extensionPoints);
+}
diff --git a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/Bundle.java b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/Bundle.java
index 4d78ecf..81bf264 100644
--- a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/Bundle.java
+++ b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/Bundle.java
@@ -1,234 +1,244 @@
-/*******************************************************************************
- * Copyright (c) 2009 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.pde.internal.runtime.registry.model;
-
-import java.util.*;
-import org.eclipse.core.runtime.MultiStatus;
-import org.osgi.framework.BundleException;
-
-
-public class Bundle extends ModelObject {
-
- public static final int ACTIVE = org.osgi.framework.Bundle.ACTIVE;
- public static final int UNINSTALLED = org.osgi.framework.Bundle.UNINSTALLED;
- public static final int INSTALLED = org.osgi.framework.Bundle.INSTALLED;
- private String symbolicName;
- private String location;
- private boolean isEnabled;
- private BundlePrerequisite[] imports = new BundlePrerequisite[ 0 ];
- private String version;
- private int state;
- private long id;
- private BundleLibrary[] libraries = new BundleLibrary[ 0 ];
- private BundlePrerequisite[] importedPackages = new BundlePrerequisite[ 0 ];
- private BundlePrerequisite[] exportedPackages = new BundlePrerequisite[ 0 ];
- private String fragmentHost;
- private String fragmentHostVersion;
-
- public void setFragmentHost( String fragmentHost ) {
- this.fragmentHost = fragmentHost;
- }
-
- public String getFragmentHost() {
- return fragmentHost;
- }
-
- public String getFragmentHostVersion() {
- return fragmentHostVersion;
- }
-
- public void setFragmentHostVersion( String fragmentHostVersion ) {
- this.fragmentHostVersion = fragmentHostVersion;
- }
-
- public void setSymbolicName( String symbolicName ) {
- this.symbolicName = symbolicName;
- }
-
- public void setLocation( String location ) {
- this.location = location;
- }
-
- public void setImports( BundlePrerequisite[] imports ) {
- if( imports == null )
- throw new IllegalArgumentException();
- this.imports = imports;
- }
-
- public void setVersion( String version ) {
- this.version = version;
- }
-
- public void setState( int state ) {
- this.state = state;
- }
-
- public void setId( long id ) {
- this.id = id;
- }
-
- public void setEnabled( boolean enabled ) {
- isEnabled = enabled;
- }
-
- public void setLibraries( BundleLibrary[] libraries ) {
- if( libraries == null )
- throw new IllegalArgumentException();
- this.libraries = libraries;
- }
-
- public String getSymbolicName() {
- return symbolicName;
- }
-
- public boolean isEnabled() {
- return isEnabled;
- }
-
- public BundlePrerequisite[] getImports() {
- return imports;
- }
-
- public BundleLibrary[] getLibraries() {
- return libraries;
- }
-
- public String getLocation() {
- return location;
- }
-
- public String getVersion() {
- return version;
- }
-
- public int getState() {
- return state;
- }
-
- public long getId() {
- return id;
- }
-
- public void start() throws BundleException {
- if( model == null )
- return;
- model.backend.start( id );
- }
-
- public void stop() throws BundleException {
- if( model == null )
- return;
- model.backend.stop( id );
- }
-
- public void enable() {
- if( model == null )
- return;
- model.backend.setEnabled( id, true );
- }
-
- public void disable() {
- if( model == null )
- return;
- model.backend.setEnabled( id, false );
- }
-
- public MultiStatus diagnose() {
- if( model == null )
- return null;
- return model.backend.diagnose( id );
- }
-
- public ExtensionPoint[] getExtensionPoints() {
- if( model == null )
- return new ExtensionPoint[ 0 ];
- ExtensionPoint[] extPoints = model.getExtensionPoints();
- List result = new ArrayList();
- for( int i = 0; i < extPoints.length; i++ ) {
- if( extPoints[ i ].getContributorId().longValue() == id )
- result.add( extPoints[ i ] );
- }
- return ( ExtensionPoint[] )result.toArray( new ExtensionPoint[ result.size() ] );
- }
-
- public Extension[] getExtensions() {
- if( model == null )
- return new Extension[ 0 ];
- ExtensionPoint[] extPoints = model.getExtensionPoints();
- List result = new ArrayList();
- for( int i = 0; i < extPoints.length; i++ ) {
- for( Iterator it = extPoints[ i ].getExtensions().iterator(); it.hasNext(); ) {
- Extension a = ( Extension )it.next();
- if( a.getContributorId().longValue() == id )
- result.add( a );
- }
- }
- return ( Extension[] )result.toArray( new Extension[ result.size() ] );
- }
-
- public ServiceRegistration[] getRegisteredServices() {
- if( model == null )
- return new ServiceRegistration[ 0 ];
- ServiceRegistration[] services = model.getServices();
- List result = new ArrayList();
- for( int i = 0; i < services.length; i++ ) {
- if( symbolicName.equals( services[ i ].getBundle() ) )
- result.add( services[ i ] );
- }
- return ( ServiceRegistration[] )result.toArray( new ServiceRegistration[ result.size() ] );
- }
-
- public ServiceRegistration[] getServicesInUse() {
- if( model == null )
- return new ServiceRegistration[ 0 ];
- ServiceRegistration[] services = model.getServices();
- List result = new ArrayList();
- for( int i = 0; i < services.length; i++ ) {
- long[] usingBundles = services[ i ].getUsingBundleIds();
- if( usingBundles != null ) {
- for( int j = 0; j < usingBundles.length; j++ )
- if( id == usingBundles[ j ] )
- result.add( services[ i ] );
- }
- }
- return ( ServiceRegistration[] )result.toArray( new ServiceRegistration[ result.size() ] );
- }
-
- public boolean equals( Object obj ) {
- return ( obj instanceof Bundle ) && ( id == ( ( Bundle )obj ).id );
- }
-
- public int hashCode() {
- return ( int )id;
- }
-
- public Bundle[] getFragments() {
- if( model == null )
- return new Bundle[ 0 ];
- return model.getFragments( this );
- }
-
- public void setImportedPackages( BundlePrerequisite[] importedPackages ) {
- this.importedPackages = importedPackages;
- }
-
- public BundlePrerequisite[] getImportedPackages() {
- return importedPackages;
- }
-
- public void setExportedPackages( BundlePrerequisite[] exportedPackages ) {
- this.exportedPackages = exportedPackages;
- }
-
- public BundlePrerequisite[] getExportedPackages() {
- return exportedPackages;
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2009 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.pde.internal.runtime.registry.model;
+
+import java.util.*;
+import org.eclipse.core.runtime.MultiStatus;
+import org.osgi.framework.BundleException;
+
+public class Bundle extends ModelObject {
+
+ public static final int ACTIVE = org.osgi.framework.Bundle.ACTIVE;
+ public static final int UNINSTALLED = org.osgi.framework.Bundle.UNINSTALLED;
+ public static final int INSTALLED = org.osgi.framework.Bundle.INSTALLED;
+
+ private String symbolicName;
+ private String location;
+ private boolean isEnabled;
+ private BundlePrerequisite[] imports = new BundlePrerequisite[0];
+ private String version;
+ private int state;
+ private long id;
+ private BundleLibrary[] libraries = new BundleLibrary[0];
+ private BundlePrerequisite[] importedPackages = new BundlePrerequisite[0];
+ private BundlePrerequisite[] exportedPackages = new BundlePrerequisite[0];
+
+ private String fragmentHost;
+ private String fragmentHostVersion;
+
+ public void setFragmentHost(String fragmentHost) {
+ this.fragmentHost = fragmentHost;
+ }
+
+ public String getFragmentHost() {
+ return fragmentHost;
+ }
+
+ public String getFragmentHostVersion() {
+ return fragmentHostVersion;
+ }
+
+ public void setFragmentHostVersion(String fragmentHostVersion) {
+ this.fragmentHostVersion = fragmentHostVersion;
+ }
+
+ public void setSymbolicName(String symbolicName) {
+ this.symbolicName = symbolicName;
+ }
+
+ public void setLocation(String location) {
+ this.location = location;
+ }
+
+ public void setImports(BundlePrerequisite[] imports) {
+ if (imports == null)
+ throw new IllegalArgumentException();
+
+ this.imports = imports;
+ }
+
+ public void setVersion(String version) {
+ this.version = version;
+ }
+
+ public void setState(int state) {
+ this.state = state;
+ }
+
+ public void setId(long id) {
+ this.id = id;
+ }
+
+ public void setEnabled(boolean enabled) {
+ isEnabled = enabled;
+ }
+
+ public void setLibraries(BundleLibrary[] libraries) {
+ if (libraries == null)
+ throw new IllegalArgumentException();
+
+ this.libraries = libraries;
+ }
+
+ public String getSymbolicName() {
+ return symbolicName;
+ }
+
+ public boolean isEnabled() {
+ return isEnabled;
+ }
+
+ public BundlePrerequisite[] getImports() {
+ return imports;
+ }
+
+ public BundleLibrary[] getLibraries() {
+ return libraries;
+ }
+
+ public String getLocation() {
+ return location;
+ }
+
+ public String getVersion() {
+ return version;
+ }
+
+ public int getState() {
+ return state;
+ }
+
+ public long getId() {
+ return id;
+ }
+
+ public void start() throws BundleException {
+ if (model == null)
+ return;
+ model.backend.start(id);
+ }
+
+ public void stop() throws BundleException {
+ if (model == null)
+ return;
+ model.backend.stop(id);
+ }
+
+ public void enable() {
+ if (model == null)
+ return;
+ model.backend.setEnabled(id, true);
+ }
+
+ public void disable() {
+ if (model == null)
+ return;
+ model.backend.setEnabled(id, false);
+ }
+
+ public MultiStatus diagnose() {
+ if (model == null)
+ return null;
+ return model.backend.diagnose(id);
+ }
+
+ public ExtensionPoint[] getExtensionPoints() {
+ if (model == null)
+ return new ExtensionPoint[0];
+ ExtensionPoint[] extPoints = model.getExtensionPoints();
+ List result = new ArrayList();
+
+ for (int i = 0; i < extPoints.length; i++) {
+ if (extPoints[i].getContributorId().longValue() == id)
+ result.add(extPoints[i]);
+ }
+ return (ExtensionPoint[]) result.toArray(new ExtensionPoint[result.size()]);
+ }
+
+ public Extension[] getExtensions() {
+ if (model == null)
+ return new Extension[0];
+ ExtensionPoint[] extPoints = model.getExtensionPoints();
+ List result = new ArrayList();
+
+ for (int i = 0; i < extPoints.length; i++) {
+ for (Iterator it = extPoints[i].getExtensions().iterator(); it.hasNext();) {
+ Extension a = (Extension) it.next();
+ if (a.getContributorId().longValue() == id)
+ result.add(a);
+ }
+
+ }
+ return (Extension[]) result.toArray(new Extension[result.size()]);
+ }
+
+ public ServiceRegistration[] getRegisteredServices() {
+ if (model == null)
+ return new ServiceRegistration[0];
+ ServiceRegistration[] services = model.getServices();
+ List result = new ArrayList();
+
+ for (int i = 0; i < services.length; i++) {
+ if (symbolicName.equals(services[i].getBundle()))
+ result.add(services[i]);
+ }
+ return (ServiceRegistration[]) result.toArray(new ServiceRegistration[result.size()]);
+ }
+
+ public ServiceRegistration[] getServicesInUse() {
+ if (model == null)
+ return new ServiceRegistration[0];
+ ServiceRegistration[] services = model.getServices();
+ List result = new ArrayList();
+
+ for (int i = 0; i < services.length; i++) {
+ long[] usingBundles = services[i].getUsingBundleIds();
+ if (usingBundles != null) {
+ for (int j = 0; j < usingBundles.length; j++)
+ if (id == usingBundles[j])
+ result.add(services[i]);
+ }
+ }
+ return (ServiceRegistration[]) result.toArray(new ServiceRegistration[result.size()]);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ return (obj instanceof Bundle) && (id == ((Bundle) obj).id);
+ }
+
+ @Override
+ public int hashCode() {
+ return (int) id;
+ }
+
+ public Bundle[] getFragments() {
+ if (model == null)
+ return new Bundle[0];
+ return model.getFragments(this);
+ }
+
+ public void setImportedPackages(BundlePrerequisite[] importedPackages) {
+ this.importedPackages = importedPackages;
+ }
+
+ public BundlePrerequisite[] getImportedPackages() {
+ return importedPackages;
+ }
+
+ public void setExportedPackages(BundlePrerequisite[] exportedPackages) {
+ this.exportedPackages = exportedPackages;
+ }
+
+ public BundlePrerequisite[] getExportedPackages() {
+ return exportedPackages;
+ }
+}
diff --git a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/BundleLibrary.java b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/BundleLibrary.java
index 1cc003f..17d54d0 100644
--- a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/BundleLibrary.java
+++ b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/BundleLibrary.java
@@ -1,24 +1,24 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 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.pde.internal.runtime.registry.model;
-
-public class BundleLibrary extends ModelObject {
-
- private String library;
-
- public String getLibrary() {
- return library;
- }
-
- public void setLibrary( String name ) {
- library = name;
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2006, 2008 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.pde.internal.runtime.registry.model;
+
+public class BundleLibrary extends ModelObject {
+
+ private String library;
+
+ public String getLibrary() {
+ return library;
+ }
+
+ public void setLibrary(String name) {
+ library = name;
+ }
+}
diff --git a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/BundlePrerequisite.java b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/BundlePrerequisite.java
index 8b031cb..9bc623f 100644
--- a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/BundlePrerequisite.java
+++ b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/BundlePrerequisite.java
@@ -1,51 +1,51 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 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.pde.internal.runtime.registry.model;
-
-public class BundlePrerequisite extends ModelObject {
-
- private boolean isExported;
- private String name;
- private String version;
- private boolean isPackage;
-
- public void setPackage( boolean isPackage ) {
- this.isPackage = isPackage;
- }
-
- public boolean isPackage() {
- return isPackage;
- }
-
- public void setExported( boolean isExported ) {
- this.isExported = isExported;
- }
-
- public void setName( String name ) {
- this.name = name;
- }
-
- public void setVersion( String version ) {
- this.version = version;
- }
-
- public boolean isExported() {
- return isExported;
- }
-
- public String getName() {
- return name;
- }
-
- public String getVersion() {
- return version;
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2006, 2009 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.pde.internal.runtime.registry.model;
+
+public class BundlePrerequisite extends ModelObject {
+
+ private boolean isExported;
+ private String name;
+ private String version;
+ private boolean isPackage;
+
+ public void setPackage(boolean isPackage) {
+ this.isPackage = isPackage;
+ }
+
+ public boolean isPackage() {
+ return isPackage;
+ }
+
+ public void setExported(boolean isExported) {
+ this.isExported = isExported;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public void setVersion(String version) {
+ this.version = version;
+ }
+
+ public boolean isExported() {
+ return isExported;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getVersion() {
+ return version;
+ }
+}
diff --git a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/ConfigurationElement.java b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/ConfigurationElement.java
index b87c65c..aa416eb 100644
--- a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/ConfigurationElement.java
+++ b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/ConfigurationElement.java
@@ -1,26 +1,27 @@
-/*******************************************************************************
- * Copyright (c) 2009 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.pde.internal.runtime.registry.model;
-
-public class ConfigurationElement extends Attribute {
-
- private Attribute[] elements = new Attribute[ 0 ];
-
- public void setElements( Attribute[] elements ) {
- if( elements == null )
- throw new IllegalArgumentException();
- this.elements = elements;
- }
-
- public Attribute[] getElements() {
- return elements;
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2009 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.pde.internal.runtime.registry.model;
+
+public class ConfigurationElement extends Attribute {
+
+ private Attribute[] elements = new Attribute[0];
+
+ public void setElements(Attribute[] elements) {
+ if (elements == null)
+ throw new IllegalArgumentException();
+
+ this.elements = elements;
+ }
+
+ public Attribute[] getElements() {
+ return elements;
+ }
+}
diff --git a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/Extension.java b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/Extension.java
index 04035a5..6c987a5 100644
--- a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/Extension.java
+++ b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/Extension.java
@@ -1,131 +1,124 @@
-/*******************************************************************************
- * Copyright (c) 2009 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.pde.internal.runtime.registry.model;
-
-public class Extension extends ModelObject {
-
- private String namespaceIdentifier;
- private String label;
- private String extensionPointUniqueIdentifier;
- private ConfigurationElement[] configurationElements = new ConfigurationElement[ 0 ];
- private Long contributor;
-
- public void setNamespaceIdentifier( String namespaceIdentifier ) {
- this.namespaceIdentifier = namespaceIdentifier;
- }
-
- public void setLabel( String label ) {
- this.label = label;
- }
-
- public void setExtensionPointUniqueIdentifier( String extensionPointUniqueIdentifier ) {
- this.extensionPointUniqueIdentifier = extensionPointUniqueIdentifier;
- }
-
- public void setConfigurationElements( ConfigurationElement[] configurationElements ) {
- if( configurationElements == null )
- throw new IllegalArgumentException();
- this.configurationElements = configurationElements;
- }
-
- public void setContributor( Long contributor ) {
- this.contributor = contributor;
- }
-
- public ConfigurationElement[] getConfigurationElements() {
- return configurationElements;
- }
-
- public String getExtensionPointUniqueIdentifier() {
- return extensionPointUniqueIdentifier;
- }
-
- public String getLabel() {
- return label;
- }
-
- public String getNamespaceIdentifier() {
- return namespaceIdentifier;
- }
-
- /**
- * @return contributor id or <code>null</code> if contributor not present
- */
- public Long getContributorId() {
- return contributor;
- }
-
- public boolean equals( Object obj ) {
- if( this == obj )
- return true;
- if( obj == null )
- return false;
- if( getClass() != obj.getClass() )
- return false;
- Extension other = ( Extension )obj;
- if( contributor == null ) {
- if( other.contributor != null )
- return false;
- } else if( !contributor.equals( other.contributor ) )
- return false;
- if( extensionPointUniqueIdentifier == null ) {
- if( other.extensionPointUniqueIdentifier != null )
- return false;
- } else if( !extensionPointUniqueIdentifier.equals( other.extensionPointUniqueIdentifier ) )
- return false;
- if( label == null ) {
- if( other.label != null )
- return false;
- } else if( !label.equals( other.label ) )
- return false;
- if( namespaceIdentifier == null ) {
- if( other.namespaceIdentifier != null )
- return false;
- } else if( !namespaceIdentifier.equals( other.namespaceIdentifier ) )
- return false;
- return true;
- }
-
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ( ( contributor == null )
- ? 0
- : contributor.hashCode() );
- result = prime
- * result
- + ( ( extensionPointUniqueIdentifier == null )
- ? 0
- : extensionPointUniqueIdentifier.hashCode() );
- result = prime * result + ( ( label == null )
- ? 0
- : label.hashCode() );
- result = prime * result + ( ( namespaceIdentifier == null )
- ? 0
- : namespaceIdentifier.hashCode() );
- return result;
- }
-
- public ExtensionPoint getExtensionPoint() {
- if( model == null )
- return null;
- return model.getExtensionPoint( extensionPointUniqueIdentifier );
- }
-
- /**
- * @return contributor or <code>null</code> if contributor not present
- */
- public Bundle getContributor() {
- if( model == null || contributor == null )
- return null;
- return model.getBundle( contributor );
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2009 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.pde.internal.runtime.registry.model;
+
+public class Extension extends ModelObject {
+
+ private String namespaceIdentifier;
+ private String label;
+ private String extensionPointUniqueIdentifier;
+ private ConfigurationElement[] configurationElements = new ConfigurationElement[0];
+ private Long contributor;
+
+ public void setNamespaceIdentifier(String namespaceIdentifier) {
+ this.namespaceIdentifier = namespaceIdentifier;
+ }
+
+ public void setLabel(String label) {
+ this.label = label;
+ }
+
+ public void setExtensionPointUniqueIdentifier(String extensionPointUniqueIdentifier) {
+ this.extensionPointUniqueIdentifier = extensionPointUniqueIdentifier;
+ }
+
+ public void setConfigurationElements(ConfigurationElement[] configurationElements) {
+ if (configurationElements == null)
+ throw new IllegalArgumentException();
+
+ this.configurationElements = configurationElements;
+ }
+
+ public void setContributor(Long contributor) {
+ this.contributor = contributor;
+ }
+
+ public ConfigurationElement[] getConfigurationElements() {
+ return configurationElements;
+ }
+
+ public String getExtensionPointUniqueIdentifier() {
+ return extensionPointUniqueIdentifier;
+ }
+
+ public String getLabel() {
+ return label;
+ }
+
+ public String getNamespaceIdentifier() {
+ return namespaceIdentifier;
+ }
+
+ /**
+ * @return contributor id or <code>null</code> if contributor not present
+ */
+ public Long getContributorId() {
+ return contributor;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ Extension other = (Extension) obj;
+ if (contributor == null) {
+ if (other.contributor != null)
+ return false;
+ } else if (!contributor.equals(other.contributor))
+ return false;
+ if (extensionPointUniqueIdentifier == null) {
+ if (other.extensionPointUniqueIdentifier != null)
+ return false;
+ } else if (!extensionPointUniqueIdentifier.equals(other.extensionPointUniqueIdentifier))
+ return false;
+ if (label == null) {
+ if (other.label != null)
+ return false;
+ } else if (!label.equals(other.label))
+ return false;
+ if (namespaceIdentifier == null) {
+ if (other.namespaceIdentifier != null)
+ return false;
+ } else if (!namespaceIdentifier.equals(other.namespaceIdentifier))
+ return false;
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((contributor == null) ? 0 : contributor.hashCode());
+ result = prime * result + ((extensionPointUniqueIdentifier == null) ? 0 : extensionPointUniqueIdentifier.hashCode());
+ result = prime * result + ((label == null) ? 0 : label.hashCode());
+ result = prime * result + ((namespaceIdentifier == null) ? 0 : namespaceIdentifier.hashCode());
+ return result;
+ }
+
+ public ExtensionPoint getExtensionPoint() {
+ if (model == null)
+ return null;
+ return model.getExtensionPoint(extensionPointUniqueIdentifier);
+ }
+
+ /**
+ * @return contributor or <code>null</code> if contributor not present
+ */
+ public Bundle getContributor() {
+ if (model == null || contributor == null)
+ return null;
+ return model.getBundle(contributor);
+ }
+}
diff --git a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/ExtensionPoint.java b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/ExtensionPoint.java
index ca26d9a..f02f9e7 100644
--- a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/ExtensionPoint.java
+++ b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/ExtensionPoint.java
@@ -1,101 +1,100 @@
-/*******************************************************************************
- * Copyright (c) 2009 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.pde.internal.runtime.registry.model;
-
-import java.util.ArrayList;
-import java.util.List;
-
-
-public class ExtensionPoint extends ModelObject {
-
- private String label;
- private String uniqueIdentifier;
- private String namespaceIdentifier;
- private Long contributor;
- private List extensions = new ArrayList();
-
- public void setLabel( String label ) {
- this.label = label;
- }
-
- public void setUniqueIdentifier( String uniqueIdentifier ) {
- this.uniqueIdentifier = uniqueIdentifier;
- }
-
- public void setNamespaceIdentifier( String namespaceIdentifier ) {
- this.namespaceIdentifier = namespaceIdentifier;
- }
-
- public void setContributor( Long contributor ) {
- this.contributor = contributor;
- }
-
- public void setExtensions( List extensions ) {
- this.extensions = extensions;
- }
-
- public List getExtensions() {
- return extensions;
- }
-
- public String getLabel() {
- return label;
- }
-
- public String getUniqueIdentifier() {
- return uniqueIdentifier;
- }
-
- public String getNamespaceIdentifier() {
- return namespaceIdentifier;
- }
-
- /**
- * @return contributor id or <code>null</code> if contributor not present
- */
- public Long getContributorId() {
- return contributor;
- }
-
- /**
- * @return contributor or <code>null</code> if contributor not present
- */
- public Bundle getContributor() {
- if( model == null || contributor == null )
- return null;
- return model.getBundle( contributor );
- }
-
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ( ( uniqueIdentifier == null )
- ? 0
- : uniqueIdentifier.hashCode() );
- return result;
- }
-
- public boolean equals( Object obj ) {
- if( this == obj )
- return true;
- if( obj == null )
- return false;
- if( getClass() != obj.getClass() )
- return false;
- ExtensionPoint other = ( ExtensionPoint )obj;
- if( uniqueIdentifier == null ) {
- if( other.uniqueIdentifier != null )
- return false;
- } else if( !uniqueIdentifier.equals( other.uniqueIdentifier ) )
- return false;
- return true;
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2009 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.pde.internal.runtime.registry.model;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class ExtensionPoint extends ModelObject {
+
+ private String label;
+ private String uniqueIdentifier;
+ private String namespaceIdentifier;
+ private Long contributor;
+ private List extensions = new ArrayList();
+
+ public void setLabel(String label) {
+ this.label = label;
+ }
+
+ public void setUniqueIdentifier(String uniqueIdentifier) {
+ this.uniqueIdentifier = uniqueIdentifier;
+ }
+
+ public void setNamespaceIdentifier(String namespaceIdentifier) {
+ this.namespaceIdentifier = namespaceIdentifier;
+ }
+
+ public void setContributor(Long contributor) {
+ this.contributor = contributor;
+ }
+
+ public void setExtensions(List extensions) {
+ this.extensions = extensions;
+ }
+
+ public List getExtensions() {
+ return extensions;
+ }
+
+ public String getLabel() {
+ return label;
+ }
+
+ public String getUniqueIdentifier() {
+ return uniqueIdentifier;
+ }
+
+ public String getNamespaceIdentifier() {
+ return namespaceIdentifier;
+ }
+
+ /**
+ * @return contributor id or <code>null</code> if contributor not present
+ */
+ public Long getContributorId() {
+ return contributor;
+ }
+
+ /**
+ * @return contributor or <code>null</code> if contributor not present
+ */
+ public Bundle getContributor() {
+ if (model == null || contributor == null)
+ return null;
+ return model.getBundle(contributor);
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((uniqueIdentifier == null) ? 0 : uniqueIdentifier.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ ExtensionPoint other = (ExtensionPoint) obj;
+ if (uniqueIdentifier == null) {
+ if (other.uniqueIdentifier != null)
+ return false;
+ } else if (!uniqueIdentifier.equals(other.uniqueIdentifier))
+ return false;
+ return true;
+ }
+}
diff --git a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/Folder.java b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/Folder.java
index 14638e9..fbd575b 100644
--- a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/Folder.java
+++ b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/Folder.java
@@ -1,83 +1,85 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2009 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.pde.internal.runtime.registry.model;
-
-public class Folder {
-
- public static final int F_EXTENSIONS = 1;
- public static final int F_EXTENSION_POINTS = 2;
- public static final int F_IMPORTS = 3;
- public static final int F_LIBRARIES = 4;
- public static final int F_REGISTERED_SERVICES = 5;
- public static final int F_SERVICES_IN_USE = 6;
- public static final int F_PROPERTIES = 7;
- public static final int F_USING_BUNDLES = 8;
- public static final int F_FRAGMENTS = 9;
- public static final int F_IMPORTED_PACKAGES = 10;
- public static final int F_EXPORTED_PACKAGES = 11;
- private int id;
- private Object parent;
-
- public Folder( int id, Object parent ) {
- this.id = id;
- this.parent = parent;
- }
-
- public int getId() {
- return id;
- }
-
- public Object getParent() {
- return parent;
- }
-
- public ModelObject[] getChildren() {
- switch( id ) {
- case F_EXTENSION_POINTS:
- return ( ( Bundle )parent ).getExtensionPoints();
- case F_EXTENSIONS:
- return ( ( Bundle )parent ).getExtensions();
- case F_IMPORTS:
- return ( ( Bundle )parent ).getImports();
- case F_LIBRARIES:
- return ( ( Bundle )parent ).getLibraries();
- case F_REGISTERED_SERVICES:
- return ( ( Bundle )parent ).getRegisteredServices();
- case F_SERVICES_IN_USE:
- return ( ( Bundle )parent ).getServicesInUse();
- case F_PROPERTIES:
- return ( ( ServiceRegistration )parent ).getProperties();
- case F_USING_BUNDLES:
- return ( ( ServiceRegistration )parent ).getUsingBundles();
- case F_FRAGMENTS:
- return ( ( Bundle )parent ).getFragments();
- case F_IMPORTED_PACKAGES:
- return ( ( Bundle )parent ).getImportedPackages();
- case F_EXPORTED_PACKAGES:
- return ( ( Bundle )parent ).getExportedPackages();
- }
- return null;
- }
-
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + id;
- result = prime * result + ( ( parent == null )
- ? 0
- : parent.hashCode() );
- return result;
- }
-
- public boolean equals( Object obj ) {
- return( ( obj instanceof Folder ) && ( ( ( Folder )obj ).id == id ) && ( ( ( Folder )obj ).parent.equals( parent ) ) );
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2000, 2009 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.pde.internal.runtime.registry.model;
+
+public class Folder {
+
+ public static final int F_EXTENSIONS = 1;
+ public static final int F_EXTENSION_POINTS = 2;
+ public static final int F_IMPORTS = 3;
+ public static final int F_LIBRARIES = 4;
+ public static final int F_REGISTERED_SERVICES = 5;
+ public static final int F_SERVICES_IN_USE = 6;
+ public static final int F_PROPERTIES = 7;
+ public static final int F_USING_BUNDLES = 8;
+ public static final int F_FRAGMENTS = 9;
+ public static final int F_IMPORTED_PACKAGES = 10;
+ public static final int F_EXPORTED_PACKAGES = 11;
+
+ private int id;
+ private Object parent;
+
+ public Folder(int id, Object parent) {
+ this.id = id;
+ this.parent = parent;
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public Object getParent() {
+ return parent;
+ }
+
+ public ModelObject[] getChildren() {
+ switch (id) {
+ case F_EXTENSION_POINTS :
+ return ((Bundle) parent).getExtensionPoints();
+ case F_EXTENSIONS :
+ return ((Bundle) parent).getExtensions();
+ case F_IMPORTS :
+ return ((Bundle) parent).getImports();
+ case F_LIBRARIES :
+ return ((Bundle) parent).getLibraries();
+ case F_REGISTERED_SERVICES :
+ return ((Bundle) parent).getRegisteredServices();
+ case F_SERVICES_IN_USE :
+ return ((Bundle) parent).getServicesInUse();
+ case F_PROPERTIES :
+ return ((ServiceRegistration) parent).getProperties();
+ case F_USING_BUNDLES :
+ return ((ServiceRegistration) parent).getUsingBundles();
+ case F_FRAGMENTS :
+ return ((Bundle) parent).getFragments();
+ case F_IMPORTED_PACKAGES :
+ return ((Bundle) parent).getImportedPackages();
+ case F_EXPORTED_PACKAGES :
+ return ((Bundle) parent).getExportedPackages();
+ }
+
+ return null;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + id;
+ result = prime * result + ((parent == null) ? 0 : parent.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ return ((obj instanceof Folder) && (((Folder) obj).id == id) && (((Folder) obj).parent.equals(parent)));
+ }
+}
diff --git a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/LocalRegistryBackend.java b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/LocalRegistryBackend.java
index dde9b18..7523483 100644
--- a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/LocalRegistryBackend.java
+++ b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/LocalRegistryBackend.java
@@ -8,6 +8,7 @@
* Contributors:
* IBM Corporation - initial API and implementation
* Wolfgang Schell <ws@jetztgrad.net> - bug 259348
+ * Arnaud Mergey <a_mergey@yahoo.fr>
*******************************************************************************/
package org.eclipse.pde.internal.runtime.registry.model;
@@ -28,14 +29,12 @@
private BackendChangeListener listener;
+ @Override
public void setRegistryListener( BackendChangeListener listener ) {
this.listener = listener;
}
- /*
- * (non-Javadoc)
- * @see org.eclipse.pde.internal.runtime.registry.model.local.RegistryBackend#connect()
- */
+ @Override
public void connect( IProgressMonitor monitor ) {
if( monitor.isCanceled() )
return;
@@ -44,10 +43,7 @@
PDERuntimePlugin.getDefault().getBundleContext().addServiceListener( this );
}
- /*
- * (non-Javadoc)
- * @see org.eclipse.pde.internal.runtime.registry.model.local.RegistryBackend#disconnect()
- */
+ @Override
public void disconnect() {
Platform.getExtensionRegistry().removeListener( this );
PDERuntimePlugin.getDefault().getBundleContext().removeBundleListener( this );
@@ -60,38 +56,24 @@
return bundle.equals( ref.getBundle() );
}
- protected static boolean isServiceInUse( org.osgi.framework.Bundle bundle, ServiceReference ref )
+ protected static boolean isServiceInUse( org.osgi.framework.Bundle bundle,
+ ServiceReference ref )
{
org.osgi.framework.Bundle[] usingBundles = ref.getUsingBundles();
return( usingBundles != null && Arrays.asList( usingBundles ).contains( bundle ) );
}
- /*
- * (non-Javadoc)
- * @see
- * org.eclipse.pde.internal.runtime.registry.model.local.RegistryBackend#start(org.osgi.framework
- * .Bundle)
- */
+ @Override
public void start( long id ) throws BundleException {
PDERuntimePlugin.getDefault().getBundleContext().getBundle( id ).start();
}
- /*
- * (non-Javadoc)
- * @see
- * org.eclipse.pde.internal.runtime.registry.model.local.RegistryBackend#stop(org.osgi.framework
- * .Bundle)
- */
+ @Override
public void stop( long id ) throws BundleException {
PDERuntimePlugin.getDefault().getBundleContext().getBundle( id ).stop();
}
- /*
- * (non-Javadoc)
- * @see
- * org.eclipse.pde.internal.runtime.registry.model.local.RegistryBackend#diagnose(org.osgi.framework
- * .Bundle)
- */
+ @Override
public MultiStatus diagnose( long id ) {
PlatformAdmin plaformAdmin = PDERuntimePlugin.getDefault().getPlatformAdmin();
State state = plaformAdmin.getState( false );
@@ -105,9 +87,11 @@
PDERuntimeMessages.get().RegistryView_found_problems,
null );
for( int i = 0; i < resolverErrors.length; i++ ) {
- if( ( resolverErrors[ i ].getType() & ( ResolverError.MISSING_FRAGMENT_HOST
- | ResolverError.MISSING_GENERIC_CAPABILITY
- | ResolverError.MISSING_IMPORT_PACKAGE | ResolverError.MISSING_REQUIRE_BUNDLE ) ) != 0 )
+ if( ( resolverErrors[ i ].getType()
+ & ( ResolverError.MISSING_FRAGMENT_HOST
+ | ResolverError.MISSING_GENERIC_CAPABILITY
+ | ResolverError.MISSING_IMPORT_PACKAGE
+ | ResolverError.MISSING_REQUIRE_BUNDLE ) ) != 0 )
continue;
IStatus status = new Status( IStatus.WARNING,
PDERuntimePlugin.ID,
@@ -123,6 +107,7 @@
return problems;
}
+ @Override
public void initializeBundles( IProgressMonitor monitor ) {
if( monitor.isCanceled() )
return;
@@ -137,6 +122,7 @@
}
}
+ @Override
public void initializeExtensionPoints( IProgressMonitor monitor ) {
if( monitor.isCanceled() )
return;
@@ -150,14 +136,14 @@
listener.addExtensionPoints( extPts );
}
+ @Override
public void initializeServices( IProgressMonitor monitor ) {
if( monitor.isCanceled() )
return;
ServiceReference[] references = null;
try {
- references = PDERuntimePlugin.getDefault()
- .getBundleContext()
- .getAllServiceReferences( null, null );
+ references = PDERuntimePlugin.getDefault().getBundleContext().getAllServiceReferences( null,
+ null );
} catch( InvalidSyntaxException e ) { // nothing
}
if( references == null ) {
@@ -168,7 +154,7 @@
return;
ServiceRegistration service = createServiceReferenceAdapter( references[ i ] );
// The list of registered services is volatile, avoid adding unregistered services to the
-// listener
+ // listener
if( service.getBundle() != null ) {
listener.addService( service );
}
@@ -252,8 +238,8 @@
.getState( false )
.getBundle( name, null );
return descr == null
- ? null
- : new Long( descr.getBundleId() );
+ ? null
+ : new Long( descr.getBundleId() );
}
private ExtensionPoint createExtensionPointAdapter( IExtensionPoint extensionPoint ) {
@@ -270,13 +256,14 @@
/**
* Returns a new {@link ServiceRegistration} for the given service reference. If the service being
* referenced is unregistered, the returned service registration will not have a bundle set.
- *
+ *
* @param ref the service reference to get the registration for
* @return a new service registration containing information from the service reference
*/
private ServiceRegistration createServiceReferenceAdapter( ServiceReference ref ) {
ServiceRegistration service = new ServiceRegistration();
- service.setId( ( ( Long )ref.getProperty( org.osgi.framework.Constants.SERVICE_ID ) ).longValue() );
+ service
+ .setId( ( ( Long )ref.getProperty( org.osgi.framework.Constants.SERVICE_ID ) ).longValue() );
org.osgi.framework.Bundle bundle = ref.getBundle();
if( bundle != null ) {
service.setBundle( bundle.getSymbolicName() );
@@ -403,8 +390,8 @@
if( label == null && config.getAttribute( "id" ) != null ) { //$NON-NLS-1$
String[] labelSplit = config.getAttribute( "id" ).split( "\\." ); //$NON-NLS-1$ //$NON-NLS-2$
label = labelSplit.length == 0
- ? null
- : labelSplit[ labelSplit.length - 1 ];
+ ? null
+ : labelSplit[ labelSplit.length - 1 ];
}
return label;
}
@@ -417,6 +404,7 @@
return extensionAdapters;
}
+ @Override
public void bundleChanged( BundleEvent event ) {
Bundle adapter = createBundleAdapter( event.getBundle() );
switch( event.getType() ) {
@@ -452,6 +440,7 @@
}
}
+ @Override
public void serviceChanged( ServiceEvent event ) {
ServiceReference ref = event.getServiceReference();
ServiceRegistration adapter = createServiceReferenceAdapter( ref );
@@ -477,22 +466,27 @@
return result;
}
+ @Override
public void added( IExtension[] extensions ) {
listener.addExtensions( createExtensionAdapters( extensions ) );
}
+ @Override
public void removed( IExtension[] extensions ) {
listener.removeExtensions( createExtensionAdapters( extensions ) );
}
+ @Override
public void added( IExtensionPoint[] extensionPoints ) {
listener.addExtensionPoints( createExtensionPointAdapters( extensionPoints ) );
}
+ @Override
public void removed( IExtensionPoint[] extensionPoints ) {
listener.removeExtensionPoints( createExtensionPointAdapters( extensionPoints ) );
}
+ @Override
public void setEnabled( long id, boolean enabled ) {
State state = PDERuntimePlugin.getDefault().getState();
BundleDescription desc = state.getBundle( id );
diff --git a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/ModelChangeDelta.java b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/ModelChangeDelta.java
index 2a80255..2156b91 100644
--- a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/ModelChangeDelta.java
+++ b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/ModelChangeDelta.java
@@ -1,42 +1,43 @@
-/*******************************************************************************
- * Copyright (c) 2008 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.pde.internal.runtime.registry.model;
-
-/**
- * Delta model objects are of type IBundle, IService, IExtension, IExtensionPoint
- */
-public class ModelChangeDelta {
-
- public static final int ADDED = 0;
- public static final int UPDATED = 1;
- public static final int REMOVED = 2;
- public static final int STARTING = 3;
- public static final int STARTED = 4;
- public static final int STOPPING = 5;
- public static final int STOPPED = 6;
- public static final int RESOLVED = 7;
- public static final int UNRESOLVED = 8;
- private ModelObject fObject;
- private int fFlag;
-
- public ModelChangeDelta( ModelObject object, int flag ) {
- fObject = object;
- fFlag = flag;
- }
-
- public ModelObject getModelObject() {
- return fObject;
- }
-
- public int getFlag() {
- return fFlag;
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2008 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.pde.internal.runtime.registry.model;
+
+/**
+ * Delta model objects are of type IBundle, IService, IExtension, IExtensionPoint
+ */
+public class ModelChangeDelta {
+
+ public static final int ADDED = 0;
+ public static final int UPDATED = 1;
+ public static final int REMOVED = 2;
+ public static final int STARTING = 3;
+ public static final int STARTED = 4;
+ public static final int STOPPING = 5;
+ public static final int STOPPED = 6;
+ public static final int RESOLVED = 7;
+ public static final int UNRESOLVED = 8;
+
+ private ModelObject fObject;
+ private int fFlag;
+
+ public ModelChangeDelta(ModelObject object, int flag) {
+ fObject = object;
+ fFlag = flag;
+ }
+
+ public ModelObject getModelObject() {
+ return fObject;
+ }
+
+ public int getFlag() {
+ return fFlag;
+ }
+}
diff --git a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/ModelChangeListener.java b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/ModelChangeListener.java
index 16bf3ac..acd483a 100644
--- a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/ModelChangeListener.java
+++ b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/ModelChangeListener.java
@@ -1,21 +1,22 @@
-/*******************************************************************************
- * Copyright (c) 2008 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.pde.internal.runtime.registry.model;
-
-/**
- * Event provides a list of objects that have changed. Possible objects on the list are IBundle,
- * IService, IExtension, IExtensionPoint. This is temporary solution and is subject to future
- * changes.
- */
-public interface ModelChangeListener {
-
- void modelChanged( ModelChangeDelta[] deltas );
-}
+/*******************************************************************************
+ * Copyright (c) 2008 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.pde.internal.runtime.registry.model;
+
+/**
+ * Event provides a list of objects that have changed.
+ * Possible objects on the list are IBundle, IService, IExtension, IExtensionPoint.
+ *
+ * This is temporary solution and is subject to future changes.
+ */
+public interface ModelChangeListener {
+
+ void modelChanged(ModelChangeDelta[] deltas);
+}
diff --git a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/ModelObject.java b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/ModelObject.java
index 7ceb962..53337f7 100644
--- a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/ModelObject.java
+++ b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/ModelObject.java
@@ -1,23 +1,23 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2011 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.pde.internal.runtime.registry.model;
-
-public abstract class ModelObject {
-
- /**
- * The registry model, possibly <code>null</code>
- */
- protected RegistryModel model;
-
- public void setModel( RegistryModel model ) {
- this.model = model;
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2008, 2011 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.pde.internal.runtime.registry.model;
+
+public abstract class ModelObject {
+
+ /**
+ * The registry model, possibly <code>null</code>
+ */
+ protected RegistryModel model;
+
+ public void setModel(RegistryModel model) {
+ this.model = model;
+ }
+}
diff --git a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/Property.java b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/Property.java
index dd49a50..51908cc 100644
--- a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/Property.java
+++ b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/Property.java
@@ -1,120 +1,135 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2009 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
- * Wolfgang Schell <ws@jetztgrad.net> - bug 260055
- *******************************************************************************/
-package org.eclipse.pde.internal.runtime.registry.model;
-
-import org.osgi.framework.Constants;
-
-
-public class Property extends ModelObject implements Comparable {
-
- public static final String PREFIX_SERVICE = "service."; //$NON-NLS-1$
- public static final String PREFIX_COMPONENT = "component."; //$NON-NLS-1$
- private String name;
- private String value;
-
- public Property() {
- // empty
- }
-
- // TODO should we merge this with Attribute somehow?
- public Property( String name, String value ) {
- this.name = name;
- this.value = value;
- }
-
- public String getValue() {
- return value;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName( String name ) {
- this.name = name;
- }
-
- public void setValue( String value ) {
- this.value = value;
- }
-
- /**
- * Compare properties for order. Returns a negative integer, zero, or a positive integer as the
- * first argument is less than, equal to, or greater than the second.
- * <p>
- * The {@link Property}s are compared according to the following rules:
- * <ul>
- * <li>objectClass is always less than everything else</li>
- * <li>properties with names starting with "service." are considered "less" than other properties.
- * </li>
- * <li>regular properties are considered "more" than other properties</li>
- * </ul>
- * </p>
- * <p>
- * When sorting an array of properties with the following code:
- *
- * <pre>
- * Property[] properties = ...;
- * Arrays.sort(properties, PropertyComparator.INSTANCE);
- * </pre>
- *
- * the result is something like this:
- * <ul>
- * <li>objectClass</li>
- * <li>service.id</li>
- * <li>service.id</li>
- * </ul>
- * </p>
- *
- * @param obj other property to be compared against
- * @return a negative integer, zero, or a positive integer as the first argument is less than,
- * equal to, or greater than the second.
- */
- public int compareTo( Object obj ) {
- if( !( obj instanceof Property ) ) {
- return 0;
- }
- Property other = ( Property )obj;
- String name0 = getName();
- String name1 = other.getName();
- if( Constants.OBJECTCLASS.equals( name0 ) ) {
- return -1;
- }
- if( Constants.OBJECTCLASS.equals( name1 ) ) {
- return 1;
- }
- if( name0.startsWith( PREFIX_COMPONENT ) && name1.startsWith( PREFIX_COMPONENT ) ) {
- // both are service properties
- // simply compare them
- return name0.compareTo( name1 );
- }
- if( name0.startsWith( PREFIX_COMPONENT ) ) {
- return -1;
- }
- if( name1.startsWith( PREFIX_COMPONENT ) ) {
- return 1;
- }
- if( name0.startsWith( PREFIX_SERVICE ) && name1.startsWith( PREFIX_SERVICE ) ) {
- // both are service properties
- // simply compare them
- return name0.compareTo( name1 );
- }
- if( name0.startsWith( PREFIX_SERVICE ) ) {
- return -1;
- }
- if( name1.startsWith( PREFIX_SERVICE ) ) {
- return 1;
- }
- // simply compare strings
- return name0.compareTo( name1 );
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 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
+ * Wolfgang Schell <ws@jetztgrad.net> - bug 260055
+ *******************************************************************************/
+package org.eclipse.pde.internal.runtime.registry.model;
+
+import org.osgi.framework.Constants;
+
+public class Property extends ModelObject implements Comparable {
+ public static final String PREFIX_SERVICE = "service."; //$NON-NLS-1$
+ public static final String PREFIX_COMPONENT = "component."; //$NON-NLS-1$
+
+ private String name;
+ private String value;
+
+ public Property() {
+ // empty
+ }
+
+ // TODO should we merge this with Attribute somehow?
+ public Property(String name, String value) {
+ this.name = name;
+ this.value = value;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Compare properties for order. Returns a negative integer, zero, or a positive
+ * integer as the first argument is less than, equal to, or greater than the second.
+ *
+ * <p>
+ * The {@link Property}s are compared according to the following rules:
+ * <ul>
+ * <li>objectClass is always less than everything else</li>
+ * <li>properties with names starting with "service." are considered "less"
+ * than other properties.</li>
+ * <li>regular properties are considered "more" than other properties</li>
+ * </ul>
+ * </p>
+ *
+ * <p>
+ * When sorting an array of properties with the following code:
+ *
+ * <pre>
+ * Property[] properties = ...;
+ * Arrays.sort(properties, PropertyComparator.INSTANCE);
+ * </pre>
+ *
+ * the result is something like this:
+ * <ul>
+ * <li>objectClass</li>
+ * <li>service.id</li>
+ * <li>service.id</li>
+ * </ul>
+ * </p>
+ *
+ * @param obj other property to be compared against
+ *
+ * @return a negative integer, zero, or a positive integer as the first
+ * argument is less than, equal to, or greater than the second.
+ */
+ @Override
+ public int compareTo(Object obj) {
+ if (!(obj instanceof Property)) {
+ return 0;
+ }
+
+ Property other = (Property) obj;
+
+ String name0 = getName();
+ String name1 = other.getName();
+
+ if (Constants.OBJECTCLASS.equals(name0)) {
+ return -1;
+ }
+
+ if (Constants.OBJECTCLASS.equals(name1)) {
+ return 1;
+ }
+
+ if (name0.startsWith(PREFIX_COMPONENT) && name1.startsWith(PREFIX_COMPONENT)) {
+ // both are service properties
+ // simply compare them
+ return name0.compareTo(name1);
+ }
+
+ if (name0.startsWith(PREFIX_COMPONENT)) {
+ return -1;
+ }
+
+ if (name1.startsWith(PREFIX_COMPONENT)) {
+ return 1;
+ }
+
+ if (name0.startsWith(PREFIX_SERVICE) && name1.startsWith(PREFIX_SERVICE)) {
+ // both are service properties
+ // simply compare them
+ return name0.compareTo(name1);
+ }
+
+ if (name0.startsWith(PREFIX_SERVICE)) {
+ return -1;
+ }
+
+ if (name1.startsWith(PREFIX_SERVICE)) {
+ return 1;
+ }
+
+ // simply compare strings
+ return name0.compareTo(name1);
+ }
+
+}
diff --git a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/RegistryBackend.java b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/RegistryBackend.java
index d75356b..552da20 100644
--- a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/RegistryBackend.java
+++ b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/RegistryBackend.java
@@ -1,39 +1,39 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2009 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.pde.internal.runtime.registry.model;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.MultiStatus;
-import org.osgi.framework.BundleException;
-
-
-public interface RegistryBackend {
-
- public void connect( IProgressMonitor monitor );
-
- public void disconnect();
-
- public void setEnabled( long id, boolean enabled );
-
- public void start( long id ) throws BundleException;
-
- public void stop( long id ) throws BundleException;
-
- public MultiStatus diagnose( long id );
-
- public void initializeBundles( IProgressMonitor monitor );
-
- public void initializeExtensionPoints( IProgressMonitor monitor );
-
- public void setRegistryListener( BackendChangeListener listener );
-
- public void initializeServices( IProgressMonitor monitor );
-}
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 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.pde.internal.runtime.registry.model;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.MultiStatus;
+import org.osgi.framework.BundleException;
+
+public interface RegistryBackend {
+
+ public void connect(IProgressMonitor monitor);
+
+ public void disconnect();
+
+ public void setEnabled(long id, boolean enabled);
+
+ public void start(long id) throws BundleException;
+
+ public void stop(long id) throws BundleException;
+
+ public MultiStatus diagnose(long id);
+
+ public void initializeBundles(IProgressMonitor monitor);
+
+ public void initializeExtensionPoints(IProgressMonitor monitor);
+
+ public void setRegistryListener(BackendChangeListener listener);
+
+ public void initializeServices(IProgressMonitor monitor);
+
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/RegistryModel.java b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/RegistryModel.java
index 03a61ac..8069274 100644
--- a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/RegistryModel.java
+++ b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/RegistryModel.java
@@ -1,375 +1,408 @@
-/*******************************************************************************
- * Copyright (c) 2008, 20012 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.pde.internal.runtime.registry.model;
-
-import java.util.*;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.osgi.service.resolver.VersionRange;
-import org.osgi.framework.Version;
-
-
-/**
- * Model entry point for Eclipse runtime. Provides information about runtime bundles, services and
- * extension points.
- */
-public class RegistryModel {
-
- private BackendChangeListener backendListener = new BackendChangeListener() {
-
- public void addBundle( Bundle adapter ) {
- adapter.setModel( RegistryModel.this );
- ModelChangeDelta delta = new ModelChangeDelta( adapter, ModelChangeDelta.ADDED );
- bundles.put( new Long( adapter.getId() ), adapter );
- if( adapter.getFragmentHost() != null ) {
- addFragment( adapter );
- Bundle host = getBundle( adapter.getFragmentHost(), adapter.getFragmentHostVersion() );
- if( host != null ) {
- ModelChangeDelta d2 = new ModelChangeDelta( host, ModelChangeDelta.UPDATED );
- fireModelChangeEvent( new ModelChangeDelta[] {
- delta, d2
- } );
- return;
- }
- }
- fireModelChangeEvent( new ModelChangeDelta[] {
- delta
- } );
- }
-
- public void removeBundle( Bundle adapter ) {
- ModelChangeDelta delta = new ModelChangeDelta( adapter, ModelChangeDelta.REMOVED );
- bundles.remove( new Long( adapter.getId() ) );
- if( adapter.getFragmentHost() != null ) {
- removeFragment( adapter );
- Bundle host = getBundle( adapter.getFragmentHost(), adapter.getFragmentHostVersion() );
- if( host != null ) {
- ModelChangeDelta d2 = new ModelChangeDelta( host, ModelChangeDelta.UPDATED );
- fireModelChangeEvent( new ModelChangeDelta[] {
- delta, d2
- } );
- return;
- }
- }
- fireModelChangeEvent( new ModelChangeDelta[] {
- delta
- } );
- adapter.setModel( null );
- }
-
- public void updateBundle( Bundle adapter, int updated ) {
- adapter.setModel( RegistryModel.this );
- ModelChangeDelta delta = new ModelChangeDelta( adapter, updated );
- bundles.put( new Long( adapter.getId() ), adapter ); // replace old with new one
- if( adapter.getFragmentHost() != null ) {
- addFragment( adapter );
- }
- fireModelChangeEvent( new ModelChangeDelta[] {
- delta
- } );
- }
-
- public void addService( ServiceRegistration adapter ) {
- ModelChangeDelta serviceNameDelta = null;
- if( !serviceNames.contains( adapter.getName() ) ) {
- ServiceName name = adapter.getName();
- name.setModel( RegistryModel.this );
- serviceNames.add( name );
- serviceNameDelta = new ModelChangeDelta( name, ModelChangeDelta.ADDED );
- }
- adapter.setModel( RegistryModel.this );
- services.put( new Long( adapter.getId() ), adapter );
- ModelChangeDelta delta = new ModelChangeDelta( adapter, ModelChangeDelta.ADDED );
- if( serviceNameDelta != null ) {
- fireModelChangeEvent( new ModelChangeDelta[] {
- serviceNameDelta, delta
- } );
- } else {
- fireModelChangeEvent( new ModelChangeDelta[] {
- delta
- } );
- }
- }
-
- public void removeService( ServiceRegistration adapter ) {
- ModelChangeDelta serviceNameDelta = null;
- if( getServices( adapter.getName().getClasses() ).length == 0 ) {
- serviceNames.remove( adapter.getName() );
- serviceNameDelta = new ModelChangeDelta( adapter.getName(), ModelChangeDelta.REMOVED );
- }
- services.remove( new Long( adapter.getId() ) );
- ModelChangeDelta delta = new ModelChangeDelta( adapter, ModelChangeDelta.REMOVED );
- if( serviceNameDelta != null ) {
- fireModelChangeEvent( new ModelChangeDelta[] {
- serviceNameDelta, delta
- } );
- adapter.getName().setModel( null );
- adapter.setModel( null );
- } else {
- fireModelChangeEvent( new ModelChangeDelta[] {
- delta
- } );
- adapter.setModel( null );
- }
- }
-
- public void updateService( ServiceRegistration adapter ) {
- adapter.setModel( RegistryModel.this );
- services.put( new Long( adapter.getId() ), adapter );
- ModelChangeDelta delta = new ModelChangeDelta( adapter, ModelChangeDelta.UPDATED );
- fireModelChangeEvent( new ModelChangeDelta[] {
- delta
- } );
- }
-
- public void addExtensions( Extension[] extensionAdapters ) {
- for( int i = 0; i < extensionAdapters.length; i++ ) {
- extensionAdapters[ i ].setModel( RegistryModel.this );
- String id = extensionAdapters[ i ].getExtensionPointUniqueIdentifier();
- ExtensionPoint extPoint = ( ExtensionPoint )extensionPoints.get( id );
- extPoint.getExtensions().add( extensionAdapters[ i ] );
- }
- ModelChangeDelta[] delta = new ModelChangeDelta[ extensionAdapters.length ];
- for( int i = 0; i < delta.length; i++ ) {
- delta[ i ] = new ModelChangeDelta( extensionAdapters[ i ], ModelChangeDelta.ADDED );
- }
- fireModelChangeEvent( delta );
- }
-
- public void removeExtensions( Extension[] extensionAdapters ) {
- for( int i = 0; i < extensionAdapters.length; i++ ) {
- String id = extensionAdapters[ i ].getExtensionPointUniqueIdentifier();
- ExtensionPoint extPoint = ( ExtensionPoint )extensionPoints.get( id );
- extPoint.getExtensions().remove( extensionAdapters[ i ] );
- }
- ModelChangeDelta[] delta = new ModelChangeDelta[ extensionAdapters.length ];
- for( int i = 0; i < delta.length; i++ ) {
- delta[ i ] = new ModelChangeDelta( extensionAdapters[ i ], ModelChangeDelta.REMOVED );
- }
- fireModelChangeEvent( delta );
- for( int i = 0; i < extensionAdapters.length; i++ ) {
- extensionAdapters[ i ].setModel( null );
- }
- }
-
- public void addExtensionPoints( ExtensionPoint[] extensionPointAdapters ) {
- for( int i = 0; i < extensionPointAdapters.length; i++ ) {
- extensionPointAdapters[ i ].setModel( RegistryModel.this );
- extensionPoints.put( extensionPointAdapters[ i ].getUniqueIdentifier(),
- extensionPointAdapters[ i ] );
- }
- ModelChangeDelta[] delta = new ModelChangeDelta[ extensionPointAdapters.length ];
- for( int i = 0; i < delta.length; i++ ) {
- delta[ i ] = new ModelChangeDelta( extensionPointAdapters[ i ], ModelChangeDelta.ADDED );
- }
- fireModelChangeEvent( delta );
- }
-
- public void removeExtensionPoints( ExtensionPoint[] extensionPointAdapters ) {
- for( int i = 0; i < extensionPointAdapters.length; i++ ) {
- extensionPoints.remove( extensionPointAdapters[ i ].getUniqueIdentifier() );
- }
- ModelChangeDelta[] delta = new ModelChangeDelta[ extensionPointAdapters.length ];
- for( int i = 0; i < delta.length; i++ ) {
- delta[ i ] = new ModelChangeDelta( extensionPointAdapters[ i ], ModelChangeDelta.REMOVED );
- }
- fireModelChangeEvent( delta );
- for( int i = 0; i < extensionPointAdapters.length; i++ ) {
- extensionPointAdapters[ i ].setModel( null );
- }
- }
- };
- private List listeners = new ArrayList();
- private Map bundles;
- private Map services;
- private Map extensionPoints;
- private Set serviceNames;
- private Map fragments;
- protected RegistryBackend backend;
-
- public RegistryModel( RegistryBackend backend ) {
- bundles = Collections.synchronizedMap( new HashMap() );
- services = Collections.synchronizedMap( new HashMap() );
- extensionPoints = Collections.synchronizedMap( new HashMap() );
- serviceNames = Collections.synchronizedSet( new HashSet() );
- fragments = Collections.synchronizedMap( new HashMap() );
- this.backend = backend;
- backend.setRegistryListener( backendListener );
- }
-
- protected void addFragment( Bundle fragment ) {
- Set hostFragments = ( Set )fragments.get( fragment.getFragmentHost() );
- if( hostFragments == null ) {
- hostFragments = Collections.synchronizedSet( new HashSet() );
- fragments.put( fragment.getFragmentHost(), hostFragments );
- }
- if( !hostFragments.add( fragment ) ) {
- // not added if element already exists. So remove old and add it again.
- hostFragments.remove( fragment );
- hostFragments.add( fragment );
- }
- }
-
- protected void removeFragment( Bundle fragment ) {
- Set hostFragments = ( Set )fragments.get( fragment.getFragmentHost() );
- if( hostFragments == null ) {
- return;
- }
- hostFragments.remove( fragment );
- }
-
- public void connect( IProgressMonitor monitor, boolean forceInit ) {
- backend.connect( monitor );
- if( forceInit ) {
- initialize( monitor );
- }
- }
-
- public void initialize( IProgressMonitor monitor ) {
- backend.initializeBundles( monitor );
- backend.initializeServices( monitor );
- backend.initializeExtensionPoints( monitor );
- }
-
- public void disconnect() {
- backend.disconnect();
- }
-
- public Bundle[] getBundles() {
- return ( Bundle[] )bundles.values().toArray( new Bundle[ bundles.values().size() ] );
- }
-
- public ExtensionPoint[] getExtensionPoints() {
- return ( ExtensionPoint[] )extensionPoints.values()
- .toArray( new ExtensionPoint[ extensionPoints.values().size() ] );
- }
-
- public ServiceRegistration[] getServices() {
- return ( ServiceRegistration[] )services.values()
- .toArray( new ServiceRegistration[ services.values().size() ] );
- }
-
- public ServiceName[] getServiceNames() {
- return ( ServiceName[] )serviceNames.toArray( new ServiceName[ serviceNames.size() ] );
- }
-
- public ServiceRegistration[] getServices( String[] classes ) {
- List result = new ArrayList();
- synchronized( services ) {
- for( Iterator i = services.values().iterator(); i.hasNext(); ) {
- ServiceRegistration sr = ( ServiceRegistration )i.next();
- if( Arrays.equals( classes, sr.getName().getClasses() ) )
- result.add( sr );
- }
- }
- return ( ServiceRegistration[] )result.toArray( new ServiceRegistration[ result.size() ] );
- }
-
- public void addModelChangeListener( ModelChangeListener listener ) {
- listeners.add( listener );
- }
-
- public void removeModelChangeListener( ModelChangeListener listener ) {
- listeners.remove( listener );
- }
-
- /**
- * For received domain types: Bundle, IExtension, IExtensionPoint, ServiceReference, generates
- * delta with model types: IBundle, IExtensionAdapter, IExtensionPointAdapter, IService
- *
- * @param objects
- */
- protected void fireModelChangeEvent( ModelChangeDelta[] delta ) {
- for( Iterator i = listeners.iterator(); i.hasNext(); ) {
- ModelChangeListener listener = ( ModelChangeListener )i.next();
- listener.modelChanged( delta );
- }
- }
-
- public Bundle getBundle( Long id ) {
- return ( Bundle )bundles.get( id );
- }
-
- public Bundle getBundle( String symbolicName, String versionRange ) {
- synchronized( bundles ) {
- for( Iterator i = bundles.values().iterator(); i.hasNext(); ) {
- Bundle bundle = ( Bundle )i.next();
- if( bundle.getSymbolicName().equals( symbolicName ) ) {
- if( versionMatches( bundle.getVersion(), versionRange ) )
- return bundle;
- }
- }
- }
- return null;
- }
-
- public ExtensionPoint getExtensionPoint( String extensionPointUniqueIdentifier ) {
- return ( ExtensionPoint )extensionPoints.get( extensionPointUniqueIdentifier );
- }
-
- public Bundle[] getFragments( Bundle bundle ) {
- Set set = ( Set )fragments.get( bundle.getSymbolicName() );
- if( set == null )
- return new Bundle[ 0 ];
- List result = new ArrayList( set.size() );
- Version hostVersion = Version.parseVersion( bundle.getVersion() );
- for( Iterator i = set.iterator(); i.hasNext(); ) {
- Bundle fragment = ( Bundle )i.next();
- String fragmentVersionOrRange = fragment.getFragmentHostVersion();
- if( versionMatches( hostVersion, fragmentVersionOrRange ) )
- result.add( fragment );
- }
- return ( Bundle[] )result.toArray( new Bundle[ result.size() ] );
- }
-
- private boolean versionMatches( String hostVersion, String versionOrRange ) {
- try {
- Version version = Version.parseVersion( hostVersion );
- return versionMatches( version, versionOrRange );
- } catch( IllegalArgumentException e ) {
- // ignore
- }
- return false;
- }
-
- /**
- * Check if hostVersion is greater or equal fragmentVersion, or is included in fragment version
- * range
- *
- * @param hostVersion Version
- * @param versionOrRange Version or VersionRange
- * @return true if matches, false otherwise
- */
- private boolean versionMatches( Version hostVersion, String versionOrRange ) {
- if( versionOrRange == null ) {
- return true;
- }
- try {
- Version version = Version.parseVersion( versionOrRange );
- if( hostVersion.compareTo( version ) >= 0 )
- return true;
- } catch( IllegalArgumentException e ) {
- // wrong formatting, try VersionRange
- }
- try {
- VersionRange range = new VersionRange( versionOrRange );
- if( range.isIncluded( hostVersion ) )
- return true;
- } catch( IllegalArgumentException e2 ) {
- // wrong range formatting
- }
- return false;
- }
- /*
- * void setEnabled(Bundle bundle, boolean enabled); void start(Bundle bundle) throws
- * BundleException; // XXX Create custom Exception void stop(Bundle bundle) throws
- * BundleException; MultiStatus diagnose(Bundle bundle);
- */
-}
+/*******************************************************************************
+ * Copyright (c) 2008, 2012 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.pde.internal.runtime.registry.model;
+
+import java.util.*;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.osgi.service.resolver.VersionRange;
+import org.osgi.framework.Version;
+
+/**
+ * Model entry point for Eclipse runtime. Provides information about runtime bundles, services and extension points.
+ */
+public class RegistryModel {
+
+ private BackendChangeListener backendListener = new BackendChangeListener() {
+ @Override
+ public void addBundle(Bundle adapter) {
+ adapter.setModel(RegistryModel.this);
+ ModelChangeDelta delta = new ModelChangeDelta(adapter, ModelChangeDelta.ADDED);
+
+ bundles.put(new Long(adapter.getId()), adapter);
+
+ if (adapter.getFragmentHost() != null) {
+ addFragment(adapter);
+
+ Bundle host = getBundle(adapter.getFragmentHost(), adapter.getFragmentHostVersion());
+ if (host != null) {
+ ModelChangeDelta d2 = new ModelChangeDelta(host, ModelChangeDelta.UPDATED);
+ fireModelChangeEvent(new ModelChangeDelta[] {delta, d2});
+ return;
+ }
+ }
+
+ fireModelChangeEvent(new ModelChangeDelta[] {delta});
+ }
+
+ @Override
+ public void removeBundle(Bundle adapter) {
+ ModelChangeDelta delta = new ModelChangeDelta(adapter, ModelChangeDelta.REMOVED);
+
+ bundles.remove(new Long(adapter.getId()));
+
+ if (adapter.getFragmentHost() != null) {
+ removeFragment(adapter);
+
+ Bundle host = getBundle(adapter.getFragmentHost(), adapter.getFragmentHostVersion());
+ if (host != null) {
+ ModelChangeDelta d2 = new ModelChangeDelta(host, ModelChangeDelta.UPDATED);
+ fireModelChangeEvent(new ModelChangeDelta[] {delta, d2});
+ return;
+ }
+ }
+
+ fireModelChangeEvent(new ModelChangeDelta[] {delta});
+ adapter.setModel(null);
+ }
+
+ @Override
+ public void updateBundle(Bundle adapter, int updated) {
+ adapter.setModel(RegistryModel.this);
+ ModelChangeDelta delta = new ModelChangeDelta(adapter, updated);
+
+ bundles.put(new Long(adapter.getId()), adapter); // replace old with new one
+
+ if (adapter.getFragmentHost() != null) {
+ addFragment(adapter);
+ }
+
+ fireModelChangeEvent(new ModelChangeDelta[] {delta});
+ }
+
+ @Override
+ public void addService(ServiceRegistration adapter) {
+ ModelChangeDelta serviceNameDelta = null;
+ if (!serviceNames.contains(adapter.getName())) {
+ ServiceName name = adapter.getName();
+ name.setModel(RegistryModel.this);
+
+ serviceNames.add(name);
+
+ serviceNameDelta = new ModelChangeDelta(name, ModelChangeDelta.ADDED);
+ }
+
+ adapter.setModel(RegistryModel.this);
+ services.put(new Long(adapter.getId()), adapter);
+
+ ModelChangeDelta delta = new ModelChangeDelta(adapter, ModelChangeDelta.ADDED);
+
+ if (serviceNameDelta != null) {
+ fireModelChangeEvent(new ModelChangeDelta[] {serviceNameDelta, delta});
+ } else {
+ fireModelChangeEvent(new ModelChangeDelta[] {delta});
+ }
+ }
+
+ @Override
+ public void removeService(ServiceRegistration adapter) {
+ ModelChangeDelta serviceNameDelta = null;
+ if (getServices(adapter.getName().getClasses()).length == 0) {
+ serviceNames.remove(adapter.getName());
+ serviceNameDelta = new ModelChangeDelta(adapter.getName(), ModelChangeDelta.REMOVED);
+ }
+
+ services.remove(new Long(adapter.getId()));
+
+ ModelChangeDelta delta = new ModelChangeDelta(adapter, ModelChangeDelta.REMOVED);
+
+ if (serviceNameDelta != null) {
+ fireModelChangeEvent(new ModelChangeDelta[] {serviceNameDelta, delta});
+ adapter.getName().setModel(null);
+ adapter.setModel(null);
+ } else {
+ fireModelChangeEvent(new ModelChangeDelta[] {delta});
+ adapter.setModel(null);
+ }
+ }
+
+ @Override
+ public void updateService(ServiceRegistration adapter) {
+ adapter.setModel(RegistryModel.this);
+ services.put(new Long(adapter.getId()), adapter);
+
+ ModelChangeDelta delta = new ModelChangeDelta(adapter, ModelChangeDelta.UPDATED);
+
+ fireModelChangeEvent(new ModelChangeDelta[] {delta});
+ }
+
+ @Override
+ public void addExtensions(Extension[] extensionAdapters) {
+ for (int i = 0; i < extensionAdapters.length; i++) {
+ extensionAdapters[i].setModel(RegistryModel.this);
+ String id = extensionAdapters[i].getExtensionPointUniqueIdentifier();
+ ExtensionPoint extPoint = (ExtensionPoint) extensionPoints.get(id);
+ extPoint.getExtensions().add(extensionAdapters[i]);
+ }
+
+ ModelChangeDelta[] delta = new ModelChangeDelta[extensionAdapters.length];
+ for (int i = 0; i < delta.length; i++) {
+ delta[i] = new ModelChangeDelta(extensionAdapters[i], ModelChangeDelta.ADDED);
+ }
+ fireModelChangeEvent(delta);
+ }
+
+ @Override
+ public void removeExtensions(Extension[] extensionAdapters) {
+ for (int i = 0; i < extensionAdapters.length; i++) {
+ String id = extensionAdapters[i].getExtensionPointUniqueIdentifier();
+ ExtensionPoint extPoint = (ExtensionPoint) extensionPoints.get(id);
+ extPoint.getExtensions().remove(extensionAdapters[i]);
+ }
+
+ ModelChangeDelta[] delta = new ModelChangeDelta[extensionAdapters.length];
+ for (int i = 0; i < delta.length; i++) {
+ delta[i] = new ModelChangeDelta(extensionAdapters[i], ModelChangeDelta.REMOVED);
+ }
+ fireModelChangeEvent(delta);
+
+ for (int i = 0; i < extensionAdapters.length; i++) {
+ extensionAdapters[i].setModel(null);
+ }
+ }
+
+ @Override
+ public void addExtensionPoints(ExtensionPoint[] extensionPointAdapters) {
+ for (int i = 0; i < extensionPointAdapters.length; i++) {
+ extensionPointAdapters[i].setModel(RegistryModel.this);
+ extensionPoints.put(extensionPointAdapters[i].getUniqueIdentifier(), extensionPointAdapters[i]);
+ }
+
+ ModelChangeDelta[] delta = new ModelChangeDelta[extensionPointAdapters.length];
+ for (int i = 0; i < delta.length; i++) {
+ delta[i] = new ModelChangeDelta(extensionPointAdapters[i], ModelChangeDelta.ADDED);
+ }
+ fireModelChangeEvent(delta);
+ }
+
+ @Override
+ public void removeExtensionPoints(ExtensionPoint[] extensionPointAdapters) {
+ for (int i = 0; i < extensionPointAdapters.length; i++) {
+ extensionPoints.remove(extensionPointAdapters[i].getUniqueIdentifier());
+ }
+
+ ModelChangeDelta[] delta = new ModelChangeDelta[extensionPointAdapters.length];
+ for (int i = 0; i < delta.length; i++) {
+ delta[i] = new ModelChangeDelta(extensionPointAdapters[i], ModelChangeDelta.REMOVED);
+ }
+ fireModelChangeEvent(delta);
+
+ for (int i = 0; i < extensionPointAdapters.length; i++) {
+ extensionPointAdapters[i].setModel(null);
+ }
+ }
+ };
+
+ private List listeners = new ArrayList();
+ private Map bundles;
+ private Map services;
+ private Map extensionPoints;
+ private Set serviceNames;
+ private Map fragments;
+
+ protected RegistryBackend backend;
+
+ public RegistryModel(RegistryBackend backend) {
+ bundles = Collections.synchronizedMap(new HashMap());
+ services = Collections.synchronizedMap(new HashMap());
+ extensionPoints = Collections.synchronizedMap(new HashMap());
+ serviceNames = Collections.synchronizedSet(new HashSet());
+ fragments = Collections.synchronizedMap(new HashMap());
+
+ this.backend = backend;
+ backend.setRegistryListener(backendListener);
+ }
+
+ protected void addFragment(Bundle fragment) {
+ Set hostFragments = (Set) fragments.get(fragment.getFragmentHost());
+ if (hostFragments == null) {
+ hostFragments = Collections.synchronizedSet(new HashSet());
+ fragments.put(fragment.getFragmentHost(), hostFragments);
+ }
+
+ if (!hostFragments.add(fragment)) {
+ // not added if element already exists. So remove old and add it again.
+ hostFragments.remove(fragment);
+ hostFragments.add(fragment);
+ }
+ }
+
+ protected void removeFragment(Bundle fragment) {
+ Set hostFragments = (Set) fragments.get(fragment.getFragmentHost());
+ if (hostFragments == null) {
+ return;
+ }
+
+ hostFragments.remove(fragment);
+ }
+
+ public void connect(IProgressMonitor monitor, boolean forceInit) {
+ backend.connect(monitor);
+
+ if (forceInit) {
+ initialize(monitor);
+ }
+ }
+
+ public void initialize(IProgressMonitor monitor) {
+ backend.initializeBundles(monitor);
+ backend.initializeServices(monitor);
+ backend.initializeExtensionPoints(monitor);
+ }
+
+ public void disconnect() {
+ backend.disconnect();
+ }
+
+ public Bundle[] getBundles() {
+ return (Bundle[]) bundles.values().toArray(new Bundle[bundles.values().size()]);
+ }
+
+ public ExtensionPoint[] getExtensionPoints() {
+ return (ExtensionPoint[]) extensionPoints.values().toArray(new ExtensionPoint[extensionPoints.values().size()]);
+ }
+
+ public ServiceRegistration[] getServices() {
+ return (ServiceRegistration[]) services.values().toArray(new ServiceRegistration[services.values().size()]);
+ }
+
+ public ServiceName[] getServiceNames() {
+ return (ServiceName[]) serviceNames.toArray(new ServiceName[serviceNames.size()]);
+ }
+
+ public ServiceRegistration[] getServices(String[] classes) {
+ List result = new ArrayList();
+
+ synchronized (services) {
+ for (Iterator i = services.values().iterator(); i.hasNext();) {
+ ServiceRegistration sr = (ServiceRegistration) i.next();
+ if (Arrays.equals(classes, sr.getName().getClasses()))
+ result.add(sr);
+ }
+ }
+
+ return (ServiceRegistration[]) result.toArray(new ServiceRegistration[result.size()]);
+ }
+
+ public void addModelChangeListener(ModelChangeListener listener) {
+ listeners.add(listener);
+ }
+
+ public void removeModelChangeListener(ModelChangeListener listener) {
+ listeners.remove(listener);
+ }
+
+ /**
+ * For received domain types: Bundle, IExtension, IExtensionPoint, ServiceReference,
+ * generates delta with model types: IBundle, IExtensionAdapter, IExtensionPointAdapter, IService
+ *
+ * @param objects
+ */
+ protected void fireModelChangeEvent(ModelChangeDelta[] delta) {
+ for (Iterator i = listeners.iterator(); i.hasNext();) {
+ ModelChangeListener listener = (ModelChangeListener) i.next();
+ listener.modelChanged(delta);
+ }
+ }
+
+ public Bundle getBundle(Long id) {
+ return (Bundle) bundles.get(id);
+ }
+
+ public Bundle getBundle(String symbolicName, String versionRange) {
+ synchronized (bundles) {
+ for (Iterator i = bundles.values().iterator(); i.hasNext();) {
+ Bundle bundle = (Bundle) i.next();
+
+ if (bundle.getSymbolicName().equals(symbolicName)) {
+ if (versionMatches(bundle.getVersion(), versionRange))
+ return bundle;
+ }
+ }
+ }
+
+ return null;
+ }
+
+ public ExtensionPoint getExtensionPoint(String extensionPointUniqueIdentifier) {
+ return (ExtensionPoint) extensionPoints.get(extensionPointUniqueIdentifier);
+ }
+
+ public Bundle[] getFragments(Bundle bundle) {
+ Set set = (Set) fragments.get(bundle.getSymbolicName());
+ if (set == null)
+ return new Bundle[0];
+
+ List result = new ArrayList(set.size());
+ Version hostVersion = Version.parseVersion(bundle.getVersion());
+ for (Iterator i = set.iterator(); i.hasNext();) {
+ Bundle fragment = (Bundle) i.next();
+ String fragmentVersionOrRange = fragment.getFragmentHostVersion();
+
+ if (versionMatches(hostVersion, fragmentVersionOrRange))
+ result.add(fragment);
+ }
+
+ return (Bundle[]) result.toArray(new Bundle[result.size()]);
+ }
+
+ private boolean versionMatches(String hostVersion, String versionOrRange) {
+ try {
+ Version version = Version.parseVersion(hostVersion);
+ return versionMatches(version, versionOrRange);
+
+ } catch (IllegalArgumentException e) {
+ // ignore
+ }
+
+ return false;
+ }
+
+ /**
+ * Check if hostVersion is greater or equal fragmentVersion, or is included in fragment version range
+ * @param hostVersion Version
+ * @param versionOrRange Version or VersionRange
+ * @return true if matches, false otherwise
+ */
+ private boolean versionMatches(Version hostVersion, String versionOrRange) {
+ if (versionOrRange == null) {
+ return true;
+ }
+
+ try {
+ Version version = Version.parseVersion(versionOrRange);
+ if (hostVersion.compareTo(version) >= 0)
+ return true;
+
+ } catch (IllegalArgumentException e) {
+ // wrong formatting, try VersionRange
+ }
+
+ try {
+ VersionRange range = new VersionRange(versionOrRange);
+ if (range.isIncluded(hostVersion))
+ return true;
+
+ } catch (IllegalArgumentException e2) {
+ // wrong range formatting
+ }
+
+ return false;
+ }
+
+ /* void setEnabled(Bundle bundle, boolean enabled);
+
+ void start(Bundle bundle) throws BundleException; // XXX Create custom Exception
+
+ void stop(Bundle bundle) throws BundleException;
+
+ MultiStatus diagnose(Bundle bundle);*/
+
+}
diff --git a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/RegistryModelFactory.java b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/RegistryModelFactory.java
index aa4ada3..ffc43c2 100644
--- a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/RegistryModelFactory.java
+++ b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/RegistryModelFactory.java
@@ -1,25 +1,31 @@
-/*******************************************************************************
- * Copyright (c) 2008 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.pde.internal.runtime.registry.model;
-
-/**
- * Produces RegistryModels for URLs. Valid URLs: local target remote://host:port
- */
-public class RegistryModelFactory {
-
- /**
- * @param uri
- * @return never returns null
- */
- public static RegistryModel getRegistryModel( String uri ) {
- return new RegistryModel( new LocalRegistryBackend() );
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2008 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.pde.internal.runtime.registry.model;
+
+
+/**
+ * Produces RegistryModels for URLs. Valid URLs:
+ * local
+ * target
+ * remote://host:port
+ *
+ */
+public class RegistryModelFactory {
+
+ /**
+ *
+ * @param uri
+ * @return never returns null
+ */
+ public static RegistryModel getRegistryModel(String uri) {
+ return new RegistryModel(new LocalRegistryBackend());
+ }
+}
diff --git a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/ServiceName.java b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/ServiceName.java
index ec8bbf1..345414f 100644
--- a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/ServiceName.java
+++ b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/ServiceName.java
@@ -50,11 +50,13 @@
return result;
}
+ @Override
public int hashCode() {
final int prime = 31;
return prime * ServiceName.hashCode(classes);
}
+ @Override
public boolean equals(Object obj) {
if (this == obj)
return true;
@@ -64,6 +66,7 @@
return Arrays.equals(classes, other.classes);
}
+ @Override
public int compareTo(Object obj) {
if (obj instanceof ServiceName) {
// compare first class
diff --git a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/ServiceRegistration.java b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/ServiceRegistration.java
index 8a5f8ab..6e9c8e2 100644
--- a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/ServiceRegistration.java
+++ b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/registry/model/ServiceRegistration.java
@@ -1,143 +1,150 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2011 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
- * Wolfgang Schell <ws@jetztgrad.net> - bug 259348, 260055
- *******************************************************************************/
-package org.eclipse.pde.internal.runtime.registry.model;
-
-import java.util.HashSet;
-import java.util.Set;
-
-
-public class ServiceRegistration extends ModelObject implements Comparable {
-
- private long id;
- private String bundle;
- private long[] usingBundles = new long[ 0 ];
- private ServiceName name;
- private Property[] properties = new Property[ 0 ];
-
- public void setId( long id ) {
- this.id = id;
- }
-
- public void setBundle( String bundle ) {
- this.bundle = bundle;
- }
-
- public void setUsingBundles( long[] usingBundles ) {
- if( usingBundles == null )
- throw new IllegalArgumentException();
- this.usingBundles = usingBundles;
- }
-
- public void setName( ServiceName name ) {
- if( name == null )
- throw new IllegalArgumentException();
- this.name = name;
- }
-
- public void setProperties( Property[] properties ) {
- if( properties == null )
- throw new IllegalArgumentException();
- this.properties = properties;
- }
-
- public long getId() {
- return id;
- }
-
- public ServiceName getName() {
- return name;
- }
-
- public String getBundle() {
- return bundle;
- }
-
- public long[] getUsingBundleIds() {
- return usingBundles;
- }
-
- public Bundle[] getUsingBundles() {
- if( usingBundles.length == 0 || model == null ) {
- return new Bundle[ 0 ];
- }
- Set bundles = new HashSet();
- for( int i = 0; i < usingBundles.length; i++ ) {
- Bundle bundle = model.getBundle( new Long( usingBundles[ i ] ) );
- if( bundle != null )
- bundles.add( bundle );
- }
- return ( Bundle[] )bundles.toArray( new Bundle[ bundles.size() ] );
- }
-
- public Property[] getProperties() {
- return properties;
- }
-
- public Property getProperty( String name ) {
- for( int p = 0; p < properties.length; p++ ) {
- Property property = properties[ p ];
- if( name.equals( property.getName() ) ) {
- return property;
- }
- }
- return null;
- }
-
- public static String toString( Object value ) {
- if( value == null ) {
- return ""; //$NON-NLS-1$
- } else if( value instanceof CharSequence ) {
- CharSequence charSequence = ( CharSequence )value;
- return charSequence.toString();
- } else if( value instanceof Object[] ) {
- StringBuffer buff = new StringBuffer();
- appendString( buff, value );
- return buff.toString();
- } else {
- return value.toString();
- }
- }
-
- public static void appendString( StringBuffer buff, Object value ) {
- if( value == null ) {
- // ignore
- } else if( value instanceof Object[] ) {
- Object[] objects = ( Object[] )value;
- buff.append( "[" ); //$NON-NLS-1$
- for( int o = 0; o < objects.length; o++ ) {
- Object object = objects[ o ];
- if( o > 0 )
- buff.append( ", " ); //$NON-NLS-1$
- appendString( buff, object );
- }
- buff.append( "]" ); //$NON-NLS-1$
- } else {
- buff.append( value.toString() );
- }
- }
-
- public boolean equals( Object obj ) {
- return ( obj instanceof ServiceRegistration ) && ( id == ( ( ( ServiceRegistration )obj ).id ) );
- }
-
- public int hashCode() {
- return ( int )id;
- }
-
- public int compareTo( Object obj ) {
- if( obj instanceof ServiceRegistration ) {
- ServiceRegistration other = ( ServiceRegistration )obj;
- return name.compareTo( other.getName() );
- }
- return 0;
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2008, 2011 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
+ * Wolfgang Schell <ws@jetztgrad.net> - bug 259348, 260055
+ *******************************************************************************/
+package org.eclipse.pde.internal.runtime.registry.model;
+
+import java.util.HashSet;
+import java.util.Set;
+
+public class ServiceRegistration extends ModelObject implements Comparable {
+
+ private long id;
+ private String bundle;
+ private long[] usingBundles = new long[0];
+ private ServiceName name;
+ private Property[] properties = new Property[0];
+
+ public void setId(long id) {
+ this.id = id;
+ }
+
+ public void setBundle(String bundle) {
+ this.bundle = bundle;
+ }
+
+ public void setUsingBundles(long[] usingBundles) {
+ if (usingBundles == null)
+ throw new IllegalArgumentException();
+
+ this.usingBundles = usingBundles;
+ }
+
+ public void setName(ServiceName name) {
+ if (name == null)
+ throw new IllegalArgumentException();
+
+ this.name = name;
+ }
+
+ public void setProperties(Property[] properties) {
+ if (properties == null)
+ throw new IllegalArgumentException();
+
+ this.properties = properties;
+ }
+
+ public long getId() {
+ return id;
+ }
+
+ public ServiceName getName() {
+ return name;
+ }
+
+ public String getBundle() {
+ return bundle;
+ }
+
+ public long[] getUsingBundleIds() {
+ return usingBundles;
+ }
+
+ public Bundle[] getUsingBundles() {
+ if (usingBundles.length == 0 || model == null) {
+ return new Bundle[0];
+ }
+
+ Set bundles = new HashSet();
+ for (int i = 0; i < usingBundles.length; i++) {
+ Bundle bundle = model.getBundle(new Long(usingBundles[i]));
+ if (bundle != null)
+ bundles.add(bundle);
+ }
+ return (Bundle[]) bundles.toArray(new Bundle[bundles.size()]);
+ }
+
+ public Property[] getProperties() {
+ return properties;
+ }
+
+ public Property getProperty(String name) {
+ for (int p = 0; p < properties.length; p++) {
+ Property property = properties[p];
+ if (name.equals(property.getName())) {
+ return property;
+ }
+ }
+ return null;
+ }
+
+ public static String toString(Object value) {
+ if (value == null) {
+ return ""; //$NON-NLS-1$
+ } else if (value instanceof CharSequence) {
+ CharSequence charSequence = (CharSequence) value;
+ return charSequence.toString();
+ } else if (value instanceof Object[]) {
+ StringBuffer buff = new StringBuffer();
+ appendString(buff, value);
+
+ return buff.toString();
+ } else {
+ return value.toString();
+ }
+ }
+
+ public static void appendString(StringBuffer buff, Object value) {
+ if (value == null) {
+ // ignore
+ } else if (value instanceof Object[]) {
+ Object[] objects = (Object[]) value;
+ buff.append("["); //$NON-NLS-1$
+ for (int o = 0; o < objects.length; o++) {
+ Object object = objects[o];
+ if (o > 0)
+ buff.append(", "); //$NON-NLS-1$
+ appendString(buff, object);
+ }
+ buff.append("]"); //$NON-NLS-1$
+ } else {
+ buff.append(value.toString());
+ }
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ return (obj instanceof ServiceRegistration) && (id == (((ServiceRegistration) obj).id));
+ }
+
+ @Override
+ public int hashCode() {
+ return (int) id;
+ }
+
+ @Override
+ public int compareTo(Object obj) {
+ if (obj instanceof ServiceRegistration) {
+ ServiceRegistration other = (ServiceRegistration) obj;
+ return name.compareTo(other.getName());
+ }
+ return 0;
+ }
+}
diff --git a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/SpyFormToolkit.java b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/SpyFormToolkit.java
index 132b310..7ff1ed5 100644
--- a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/SpyFormToolkit.java
+++ b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/SpyFormToolkit.java
@@ -14,6 +14,7 @@
*******************************************************************************/
package org.eclipse.pde.internal.runtime.spy;
+import java.awt.datatransfer.Clipboard;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.help.IContext;
@@ -24,6 +25,8 @@
import org.eclipse.osgi.util.NLS;
import org.eclipse.pde.internal.runtime.*;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.dnd.TextTransfer;
+import org.eclipse.swt.dnd.Transfer;
import org.eclipse.swt.events.*;
import org.eclipse.swt.graphics.*;
import org.eclipse.swt.widgets.*;
@@ -31,6 +34,7 @@
import org.eclipse.ui.forms.events.HyperlinkEvent;
import org.eclipse.ui.forms.widgets.*;
import org.osgi.framework.Bundle;
+import org.osgi.framework.FrameworkUtil;
/**
@@ -71,6 +75,7 @@
this.image = image;
}
+ @Override
public void run() {
FileDialog fileChooser = new FileDialog( PDERuntimePlugin.getActiveWorkbenchShell(), SWT.SAVE );
// RAP [if] Missing API
@@ -117,6 +122,7 @@
this.dialog = dialog;
}
+ @Override
public FormText createFormText( Composite parent, boolean trackFocus ) {
FormText text = super.createFormText( parent, trackFocus );
// if (PDERuntimePlugin.HAS_IDE_BUNDLES) {
@@ -150,6 +156,7 @@
// copyQNameItem.addSelectionListener(listener);
menu.addMenuListener( new MenuAdapter() {
+ @Override
public void menuShown( MenuEvent e ) {
String href = ( String )formText.getSelectedLinkHref();
copyQNameItem.setEnabled( href != null && href.startsWith( CLASS_PROTOCOL_PREFIX ) );
@@ -298,7 +305,7 @@
}
ToolBarManager manager = new ToolBarManager( SWT.FLAT );
ToolBar toolbar = manager.createControl( section );
- final Cursor handCursor = new Cursor( Display.getCurrent(), SWT.CURSOR_HAND );
+ final Cursor handCursor = Display.getCurrent().getSystemCursor( SWT.CURSOR_HAND );
toolbar.setCursor( handCursor );
section.setTextClient( toolbar );
section.setData( "toolbarmanager", manager ); //$NON-NLS-1$
diff --git a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/dialogs/MenuSpyDialog.java b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/dialogs/MenuSpyDialog.java
index 777f1fe..4c7da19 100644
--- a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/dialogs/MenuSpyDialog.java
+++ b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/dialogs/MenuSpyDialog.java
@@ -1,132 +1,135 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2010 EclipseSource 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:
- * EclipseSource - initial API and implementation
- *******************************************************************************/
-package org.eclipse.pde.internal.runtime.spy.dialogs;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.dialogs.PopupDialog;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.pde.internal.runtime.IHelpContextIds;
-import org.eclipse.pde.internal.runtime.PDERuntimeMessages;
-import org.eclipse.pde.internal.runtime.PDERuntimePluginImages;
-import org.eclipse.pde.internal.runtime.spy.SpyFormToolkit;
-import org.eclipse.pde.internal.runtime.spy.sections.ActiveMenuSection;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Image;
-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.Event;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.forms.widgets.ScrolledForm;
-import org.eclipse.ui.forms.widgets.TableWrapLayout;
-
-
-/**
- * @since 3.5
- */
-public class MenuSpyDialog extends PopupDialog {
-
- private Event event;
- private Point fAnchor;
- private Composite composite;
- private SpyFormToolkit toolkit;
-
- private class CloseAction extends Action {
-
- public ImageDescriptor getImageDescriptor() {
- return PlatformUI.getWorkbench()
- .getSharedImages()
- .getImageDescriptor( ISharedImages.IMG_TOOL_DELETE );
- }
-
- public String getToolTipText() {
- return PDERuntimeMessages.get().SpyDialog_close;
- }
-
- public void run() {
- close();
- }
- }
-
- public MenuSpyDialog( Shell parent, Event event, Point point ) {
- super( parent, SWT.NONE, true, true, false, false, false, null, null );
- this.event = event;
- this.fAnchor = point;
- this.toolkit = new SpyFormToolkit( this );
- }
-
- /*
- * @see org.eclipse.jface.window.Window#configureShell(Shell)
- */
- protected void configureShell( Shell shell ) {
- super.configureShell( shell );
- PlatformUI.getWorkbench().getHelpSystem().setHelp( shell, IHelpContextIds.SPY_DIALOG );
- }
-
- protected Control createContents( Composite parent ) {
- getShell().setBackground( getShell().getDisplay().getSystemColor( SWT.COLOR_DARK_GRAY ) );
- initializeBounds();
- return createDialogArea( parent );
- }
-
- protected Control createDialogArea( Composite parent ) {
- this.composite = ( Composite )super.createDialogArea( parent );
- ScrolledForm form = toolkit.createScrolledForm( composite );
- toolkit.decorateFormHeading( form.getForm() );
- // set title and image
- form.setText( PDERuntimeMessages.get().MenuSpyDialog_title );
- Image image = PDERuntimePluginImages.get( PDERuntimePluginImages.IMG_SPY_OBJ );
- form.setImage( image );
- // add a Close button to the toolbar
- form.getToolBarManager().add( new CloseAction() );
- form.getToolBarManager().update( true );
- TableWrapLayout layout = new TableWrapLayout();
- layout.leftMargin = 10;
- layout.rightMargin = 10;
- layout.topMargin = 10;
- layout.verticalSpacing = 10;
- form.getBody().setLayout( layout );
- // TODO, make this so we use an extension point.
- ActiveMenuSection section = new ActiveMenuSection();
- section.build( form, toolkit, event );
- parent.pack();
- return composite;
- }
-
- protected Point getInitialLocation( Point size ) {
- if( fAnchor == null ) {
- return super.getInitialLocation( size );
- }
- Point point = fAnchor;
- Rectangle monitor = getShell().getMonitor().getClientArea();
- if( monitor.width < point.x + size.x ) {
- point.x = Math.max( 0, point.x - size.x );
- }
- if( monitor.height < point.y + size.y ) {
- point.y = Math.max( 0, point.y - size.y );
- }
- return point;
- }
-
- public boolean close() {
- if( toolkit != null )
- toolkit.dispose();
- toolkit = null;
- return super.close();
- }
-
- protected Control getFocusControl() {
- return this.composite;
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2009, 2010 EclipseSource 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:
+ * EclipseSource - initial API and implementation
+ * Arnaud Mergey - <a_mergey@yahoo.fr>
+ *******************************************************************************/
+package org.eclipse.pde.internal.runtime.spy.dialogs;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.dialogs.PopupDialog;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.pde.internal.runtime.*;
+import org.eclipse.pde.internal.runtime.spy.SpyFormToolkit;
+import org.eclipse.pde.internal.runtime.spy.sections.ActiveMenuSection;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.*;
+import org.eclipse.swt.widgets.*;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.forms.widgets.ScrolledForm;
+import org.eclipse.ui.forms.widgets.TableWrapLayout;
+
+
+/**
+ * @since 3.5
+ */
+public class MenuSpyDialog extends PopupDialog {
+
+ private Event event;
+ private Point fAnchor;
+ private Composite composite;
+ private SpyFormToolkit toolkit;
+
+ private class CloseAction extends Action {
+
+ @Override
+ public ImageDescriptor getImageDescriptor() {
+ return PlatformUI.getWorkbench()
+ .getSharedImages()
+ .getImageDescriptor( ISharedImages.IMG_TOOL_DELETE );
+ }
+
+ @Override
+ public String getToolTipText() {
+ return PDERuntimeMessages.get().SpyDialog_close;
+ }
+
+ @Override
+ public void run() {
+ close();
+ }
+ }
+
+ public MenuSpyDialog( Shell parent, Event event, Point point ) {
+ super( parent, SWT.NONE, true, true, false, false, false, null, null );
+ this.event = event;
+ this.fAnchor = point;
+ this.toolkit = new SpyFormToolkit( this );
+ }
+
+ /*
+ * @see org.eclipse.jface.window.Window#configureShell(Shell)
+ */
+ @Override
+ protected void configureShell( Shell shell ) {
+ super.configureShell( shell );
+ PlatformUI.getWorkbench().getHelpSystem().setHelp( shell, IHelpContextIds.SPY_DIALOG );
+ }
+
+ @Override
+ protected Control createContents( Composite parent ) {
+ getShell().setBackground( getShell().getDisplay().getSystemColor( SWT.COLOR_DARK_GRAY ) );
+ initializeBounds();
+ return createDialogArea( parent );
+ }
+
+ @Override
+ protected Control createDialogArea( Composite parent ) {
+ this.composite = ( Composite )super.createDialogArea( parent );
+ ScrolledForm form = toolkit.createScrolledForm( composite );
+ toolkit.decorateFormHeading( form.getForm() );
+ // set title and image
+ form.setText( PDERuntimeMessages.get().MenuSpyDialog_title );
+ Image image = PDERuntimePluginImages.get( PDERuntimePluginImages.IMG_SPY_OBJ );
+ form.setImage( image );
+ // add a Close button to the toolbar
+ form.getToolBarManager().add( new CloseAction() );
+ form.getToolBarManager().update( true );
+ TableWrapLayout layout = new TableWrapLayout();
+ layout.leftMargin = 10;
+ layout.rightMargin = 10;
+ layout.topMargin = 10;
+ layout.verticalSpacing = 10;
+ form.getBody().setLayout( layout );
+ // TODO, make this so we use an extension point.
+ ActiveMenuSection section = new ActiveMenuSection();
+ section.build( form, toolkit, event );
+ parent.pack();
+ return composite;
+ }
+
+ @Override
+ protected Point getInitialLocation( Point size ) {
+ if( fAnchor == null ) {
+ return super.getInitialLocation( size );
+ }
+ Point point = fAnchor;
+ Rectangle monitor = getShell().getMonitor().getClientArea();
+ if( monitor.width < point.x + size.x ) {
+ point.x = Math.max( 0, point.x - size.x );
+ }
+ if( monitor.height < point.y + size.y ) {
+ point.y = Math.max( 0, point.y - size.y );
+ }
+ return point;
+ }
+
+ @Override
+ public boolean close() {
+ if( toolkit != null )
+ toolkit.dispose();
+ toolkit = null;
+ return super.close();
+ }
+
+ @Override
+ protected Control getFocusControl() {
+ return this.composite;
+ }
+}
diff --git a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/dialogs/SpyDialog.java b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/dialogs/SpyDialog.java
index db9cd6b..ae10bae 100644
--- a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/dialogs/SpyDialog.java
+++ b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/dialogs/SpyDialog.java
@@ -1,140 +1,149 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2013 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:
- * Chris Aniszczyk <zx@us.ibm.com> - initial API and implementation
- * Benjamin Cabe <benjamin.cabe@anyware-tech.com> - bug 211580
- * Arnaud Mergey <a_mergey@yahoo.fr> - RAP port
- *******************************************************************************/
-package org.eclipse.pde.internal.runtime.spy.dialogs;
-
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.dialogs.PopupDialog;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.pde.internal.runtime.*;
-import org.eclipse.pde.internal.runtime.spy.SpyFormToolkit;
-import org.eclipse.pde.internal.runtime.spy.sections.*;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.*;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.forms.widgets.ScrolledForm;
-import org.eclipse.ui.forms.widgets.TableWrapLayout;
-
-
-/**
- * @since 3.4
- */
-public class SpyDialog extends PopupDialog {
-
- private ExecutionEvent event;
- private Point fAnchor;
- private Composite composite;
- private SpyFormToolkit toolkit;
-
- private class CloseAction extends Action {
-
- public ImageDescriptor getImageDescriptor() {
- return PlatformUI.getWorkbench()
- .getSharedImages()
- .getImageDescriptor( ISharedImages.IMG_TOOL_DELETE );
- }
-
- public String getToolTipText() {
- return PDERuntimeMessages.get().SpyDialog_close;
- }
-
- public void run() {
- close();
- }
- }
-
- public SpyDialog( Shell parent, ExecutionEvent event, Point point ) {
- super( parent, SWT.NONE, true, true, false, false, false, null, null );
- this.event = event;
- this.fAnchor = point;
- this.toolkit = new SpyFormToolkit( this );
- }
-
- /*
- * @see org.eclipse.jface.window.Window#configureShell(Shell)
- */
- protected void configureShell( Shell shell ) {
- super.configureShell( shell );
- PlatformUI.getWorkbench().getHelpSystem().setHelp( shell, IHelpContextIds.SPY_DIALOG );
- }
-
- protected Control createContents( Composite parent ) {
- getShell().setBackground( getShell().getDisplay().getSystemColor( SWT.COLOR_DARK_GRAY ) );
- initializeBounds();
- return createDialogArea( parent );
- }
-
- protected Control createDialogArea( Composite parent ) {
- this.composite = ( Composite )super.createDialogArea( parent );
- ScrolledForm form = toolkit.createScrolledForm( composite );
- toolkit.decorateFormHeading( form.getForm() );
- // set title and image
- form.setText( PDERuntimeMessages.get().SpyDialog_title );
- Image image = PDERuntimePluginImages.get( PDERuntimePluginImages.IMG_SPY_OBJ );
- form.setImage( image );
- // add a Close button to the toolbar
- form.getToolBarManager().add( new CloseAction() );
- form.getToolBarManager().update( true );
- TableWrapLayout layout = new TableWrapLayout();
- layout.leftMargin = 10;
- layout.rightMargin = 10;
- layout.topMargin = 10;
- layout.verticalSpacing = 10;
- form.getBody().setLayout( layout );
- // TODO, make this so we use an extension point.
- ISpySection section = new ActiveShellSection();
- section.build( form, toolkit, event );
- section = new ActivePartSection();
- section.build( form, toolkit, event );
- section = new ActiveFormEditorSection();
- section.build( form, toolkit, event );
- section = new ActiveSelectionSection();
- section.build( form, toolkit, event );
- section = new ActiveWizardSection();
- section.build( form, toolkit, event );
- section = new ActiveDialogPageSection();
- section.build( form, toolkit, event );
- section = new ActiveHelpSection();
- section.build( form, toolkit, event );
- parent.pack();
- return composite;
- }
-
- protected Point getInitialLocation( Point size ) {
- if( fAnchor == null ) {
- return super.getInitialLocation( size );
- }
- Point point = fAnchor;
- Rectangle monitor = getShell().getMonitor().getClientArea();
- if( monitor.width < point.x + size.x ) {
- point.x = Math.max( 0, point.x - size.x );
- }
- if( monitor.height < point.y + size.y ) {
- point.y = Math.max( 0, point.y - size.y );
- }
- return point;
- }
-
- public boolean close() {
- if( toolkit != null )
- toolkit.dispose();
- toolkit = null;
- return super.close();
- }
-
- protected Control getFocusControl() {
- return this.composite;
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2007, 2008 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:
+ * Chris Aniszczyk <zx@us.ibm.com> - initial API and implementation
+ * Benjamin Cabe <benjamin.cabe@anyware-tech.com> - bug 211580
+ * Arnaud Mergey - <a_mergey@yahoo.fr>
+ *******************************************************************************/
+package org.eclipse.pde.internal.runtime.spy.dialogs;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.dialogs.PopupDialog;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.pde.internal.runtime.*;
+import org.eclipse.pde.internal.runtime.spy.SpyFormToolkit;
+import org.eclipse.pde.internal.runtime.spy.sections.*;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.*;
+import org.eclipse.swt.widgets.*;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.forms.widgets.ScrolledForm;
+import org.eclipse.ui.forms.widgets.TableWrapLayout;
+
+
+/**
+ * @since 3.4
+ */
+public class SpyDialog extends PopupDialog {
+
+ private ExecutionEvent event;
+ private Point fAnchor;
+ private Composite composite;
+ private SpyFormToolkit toolkit;
+
+ private class CloseAction extends Action {
+
+ @Override
+ public ImageDescriptor getImageDescriptor() {
+ return PlatformUI.getWorkbench()
+ .getSharedImages()
+ .getImageDescriptor( ISharedImages.IMG_TOOL_DELETE );
+ }
+
+ @Override
+ public String getToolTipText() {
+ return PDERuntimeMessages.get().SpyDialog_close;
+ }
+
+ @Override
+ public void run() {
+ close();
+ }
+ }
+
+ public SpyDialog( Shell parent, ExecutionEvent event, Point point ) {
+ super( parent, SWT.NONE, true, true, false, false, false, null, null );
+ this.event = event;
+ this.fAnchor = point;
+ this.toolkit = new SpyFormToolkit( this );
+ }
+
+ /*
+ * @see org.eclipse.jface.window.Window#configureShell(Shell)
+ */
+ @Override
+ protected void configureShell( Shell shell ) {
+ super.configureShell( shell );
+ PlatformUI.getWorkbench().getHelpSystem().setHelp( shell, IHelpContextIds.SPY_DIALOG );
+ }
+
+ @Override
+ protected Control createContents( Composite parent ) {
+ getShell().setBackground( getShell().getDisplay().getSystemColor( SWT.COLOR_DARK_GRAY ) );
+ initializeBounds();
+ return createDialogArea( parent );
+ }
+
+ @Override
+ protected Control createDialogArea( Composite parent ) {
+ this.composite = ( Composite )super.createDialogArea( parent );
+ ScrolledForm form = toolkit.createScrolledForm( composite );
+ toolkit.decorateFormHeading( form.getForm() );
+ // set title and image
+ form.setText( PDERuntimeMessages.get().SpyDialog_title );
+ Image image = PDERuntimePluginImages.get( PDERuntimePluginImages.IMG_SPY_OBJ );
+ form.setImage( image );
+ // add a Close button to the toolbar
+ form.getToolBarManager().add( new CloseAction() );
+ form.getToolBarManager().update( true );
+ TableWrapLayout layout = new TableWrapLayout();
+ layout.leftMargin = 10;
+ layout.rightMargin = 10;
+ layout.topMargin = 10;
+ layout.verticalSpacing = 10;
+ form.getBody().setLayout( layout );
+ // TODO, make this so we use an extension point.
+ ISpySection section = new ActiveShellSection();
+ section.build( form, toolkit, event );
+ section = new ActivePartSection();
+ section.build( form, toolkit, event );
+ section = new ActiveFormEditorSection();
+ section.build( form, toolkit, event );
+ section = new ActiveSelectionSection();
+ section.build( form, toolkit, event );
+ section = new ActiveWizardSection();
+ section.build( form, toolkit, event );
+ section = new ActiveDialogPageSection();
+ section.build( form, toolkit, event );
+ section = new ActiveHelpSection();
+ section.build( form, toolkit, event );
+ parent.pack();
+ return composite;
+ }
+
+ @Override
+ protected Point getInitialLocation( Point size ) {
+ if( fAnchor == null ) {
+ return super.getInitialLocation( size );
+ }
+ Point point = fAnchor;
+ Rectangle monitor = getShell().getMonitor().getClientArea();
+ if( monitor.width < point.x + size.x ) {
+ point.x = Math.max( 0, point.x - size.x );
+ }
+ if( monitor.height < point.y + size.y ) {
+ point.y = Math.max( 0, point.y - size.y );
+ }
+ return point;
+ }
+
+ @Override
+ public boolean close() {
+ if( toolkit != null )
+ toolkit.dispose();
+ toolkit = null;
+ return super.close();
+ }
+
+ @Override
+ protected Control getFocusControl() {
+ return this.composite;
+ }
+}
diff --git a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/handlers/SpyHandler.java b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/handlers/SpyHandler.java
index aff5f4c..a3e965f 100644
--- a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/handlers/SpyHandler.java
+++ b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/handlers/SpyHandler.java
@@ -1,44 +1,38 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 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:
- * Chris Aniszczyk <zx@us.ibm.com> - initial API and implementation
- * Kevin Doyle <kjdoyle@ca.ibm.com> - bug 200727
- *******************************************************************************/
-package org.eclipse.pde.internal.runtime.spy.handlers;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.pde.internal.runtime.spy.dialogs.SpyDialog;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.handlers.HandlerUtil;
-
-
-/**
- * @since 3.4
- */
-public class SpyHandler extends AbstractHandler {
-
- private SpyDialog INSTANCE = null;
-
- public SpyHandler() { // do nothing
- }
-
- public Object execute( ExecutionEvent event ) {
- if( event != null ) {
- if( INSTANCE != null && INSTANCE.getShell() != null && !INSTANCE.getShell().isDisposed() ) {
- INSTANCE.close();
- }
- Shell shell = HandlerUtil.getActiveShell( event );
- SpyDialog dialog = new SpyDialog( shell, event, shell.getDisplay().getCursorLocation() );
- INSTANCE = dialog;
- dialog.create();
- dialog.open();
- }
- return null;
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2007, 2015 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:
+ * Chris Aniszczyk <zx@us.ibm.com> - initial API and implementation
+ * Kevin Doyle <kjdoyle@ca.ibm.com> - bug 200727
+ * Lars Vogel <Lars.Vogel@vogella.com> - Bug 482175
+ *******************************************************************************/
+package org.eclipse.pde.internal.runtime.spy.handlers;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.pde.internal.runtime.spy.dialogs.SpyDialog;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+public class SpyHandler extends AbstractHandler {
+
+ private SpyDialog spyDialog = null;
+
+
+ @Override
+ public Object execute(ExecutionEvent event) {
+ if (spyDialog != null && spyDialog.getShell() != null && !spyDialog.getShell().isDisposed()) {
+ spyDialog.close();
+ }
+ Shell shell = HandlerUtil.getActiveShell(event);
+ spyDialog = new SpyDialog(shell, event, shell.getDisplay().getCursorLocation());
+ spyDialog.create();
+ spyDialog.open();
+ return null;
+ }
+
+}
diff --git a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/sections/ActiveDialogPageSection.java b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/sections/ActiveDialogPageSection.java
index 0a2a8ca..8a208ea 100644
--- a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/sections/ActiveDialogPageSection.java
+++ b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/sections/ActiveDialogPageSection.java
@@ -1,80 +1,78 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 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:
- * Chris Aniszczyk <zx@us.ibm.com> - initial API and implementation
- * Kevin Doyle <kjdoyle@ca.ibm.com> - bug 207868, 207904
- *******************************************************************************/
-package org.eclipse.pde.internal.runtime.spy.sections;
-
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.jface.dialogs.IDialogPage;
-import org.eclipse.jface.dialogs.IPageChangeProvider;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.pde.internal.runtime.PDERuntimeMessages;
-import org.eclipse.pde.internal.runtime.PDERuntimePlugin;
-import org.eclipse.pde.internal.runtime.spy.SpyFormToolkit;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.forms.widgets.ExpandableComposite;
-import org.eclipse.ui.forms.widgets.FormText;
-import org.eclipse.ui.forms.widgets.ScrolledForm;
-import org.eclipse.ui.forms.widgets.Section;
-import org.eclipse.ui.forms.widgets.TableWrapData;
-import org.eclipse.ui.handlers.HandlerUtil;
-import org.osgi.framework.Bundle;
-import org.osgi.service.packageadmin.PackageAdmin;
-
-
-/**
- * @since 3.4
- */
-public class ActiveDialogPageSection implements ISpySection {
-
- public void build( ScrolledForm form, SpyFormToolkit toolkit, ExecutionEvent event ) {
- final Shell shell = HandlerUtil.getActiveShell( event );
- Object object = shell.getData();
- if( object == null )
- return;
- Class clazz = object.getClass();
- if( object instanceof IPageChangeProvider ) {
- IPageChangeProvider pageChangeProvider = ( IPageChangeProvider )object;
- Object selectedPage = pageChangeProvider.getSelectedPage();
- if( selectedPage != null ) {
- Section section = toolkit.createSection( form.getBody(), ExpandableComposite.TITLE_BAR );
- section.clientVerticalSpacing = 9;
- if( selectedPage instanceof IDialogPage ) {
- IDialogPage page = ( IDialogPage )selectedPage;
- clazz = page.getClass();
- section.setText( NLS.bind( PDERuntimeMessages.get().SpyDialog_activeDialogPageSection_title,
- page.getTitle() ) );
- } else {
- clazz = selectedPage.getClass();
- section.setText( PDERuntimeMessages.get().SpyDialog_activeDialogPageSection_title2 );
- }
- // the active page
- FormText text = toolkit.createFormText( section, true );
- section.setClient( text );
- TableWrapData td = new TableWrapData();
- td.align = TableWrapData.FILL;
- td.grabHorizontal = true;
- section.setLayoutData( td );
- StringBuffer buffer = new StringBuffer();
- buffer.append( "<form>" ); //$NON-NLS-1$
- buffer.append( toolkit.createClassSection( text,
- PDERuntimeMessages.get().SpyDialog_activeDialogPageSection_desc,
- new Class[] {
- clazz
- } ) );
- PackageAdmin admin = PDERuntimePlugin.getDefault().getPackageAdmin();
- Bundle bundle = admin.getBundle( clazz );
- toolkit.generatePluginDetailsText( bundle, null, "dialog page", buffer, text ); //$NON-NLS-1$
- buffer.append( "</form>" ); //$NON-NLS-1$
- text.setText( buffer.toString(), true, false );
- }
- }
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2007, 2013 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:
+ * Chris Aniszczyk <zx@us.ibm.com> - initial API and implementation
+ * Kevin Doyle <kjdoyle@ca.ibm.com> - bug 207868, 207904
+ * Arnaud Mergey - <a_mergey@yahoo.fr>
+ *******************************************************************************/
+package org.eclipse.pde.internal.runtime.spy.sections;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.jface.dialogs.IDialogPage;
+import org.eclipse.jface.dialogs.IPageChangeProvider;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.pde.internal.runtime.PDERuntimeMessages;
+import org.eclipse.pde.internal.runtime.spy.SpyFormToolkit;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.forms.widgets.*;
+import org.eclipse.ui.handlers.HandlerUtil;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.FrameworkUtil;
+
+
+/**
+ * @since 3.4
+ */
+public class ActiveDialogPageSection implements ISpySection {
+
+ @Override
+ public void build( ScrolledForm form, SpyFormToolkit toolkit, ExecutionEvent event ) {
+ final Shell shell = HandlerUtil.getActiveShell( event );
+ Object object = shell.getData();
+ if( object == null )
+ return;
+ Class clazz = object.getClass();
+ if( object instanceof IPageChangeProvider ) {
+ IPageChangeProvider pageChangeProvider = ( IPageChangeProvider )object;
+ Object selectedPage = pageChangeProvider.getSelectedPage();
+ if( selectedPage != null ) {
+ Section section = toolkit.createSection( form.getBody(), ExpandableComposite.TITLE_BAR );
+ section.clientVerticalSpacing = 9;
+ if( selectedPage instanceof IDialogPage ) {
+ IDialogPage page = ( IDialogPage )selectedPage;
+ clazz = page.getClass();
+ section
+ .setText( NLS.bind( PDERuntimeMessages.get().SpyDialog_activeDialogPageSection_title,
+ page.getTitle() ) );
+ } else {
+ clazz = selectedPage.getClass();
+ section.setText( PDERuntimeMessages.get().SpyDialog_activeDialogPageSection_title2 );
+ }
+ // the active page
+ FormText text = toolkit.createFormText( section, true );
+ section.setClient( text );
+ TableWrapData td = new TableWrapData();
+ td.align = TableWrapData.FILL;
+ td.grabHorizontal = true;
+ section.setLayoutData( td );
+ StringBuffer buffer = new StringBuffer();
+ buffer.append( "<form>" ); //$NON-NLS-1$
+ buffer.append( toolkit.createClassSection( text,
+ PDERuntimeMessages
+ .get().SpyDialog_activeDialogPageSection_desc,
+ new Class[] {
+ clazz
+ } ) );
+ Bundle bundle = FrameworkUtil.getBundle( clazz );
+ toolkit.generatePluginDetailsText( bundle, null, "dialog page", buffer, text ); //$NON-NLS-1$
+ buffer.append( "</form>" ); //$NON-NLS-1$
+ text.setText( buffer.toString(), true, false );
+ }
+ }
+ }
+}
diff --git a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/sections/ActiveFormEditorSection.java b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/sections/ActiveFormEditorSection.java
index c742c25..5a08231 100644
--- a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/sections/ActiveFormEditorSection.java
+++ b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/sections/ActiveFormEditorSection.java
@@ -1,58 +1,64 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2012 Code 9 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:
- * Code 9 Corporation - initial API and implementation
- * Ketan Padegaonkar <KetanPadegaonkar@gmail.com> - bug 241912
- * Tomasz Zarna <tomasz.zarna@tasktop.com> - bug 299298
- *******************************************************************************/
-package org.eclipse.pde.internal.runtime.spy.sections;
-
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.pde.internal.runtime.PDERuntimeMessages;
-import org.eclipse.pde.internal.runtime.spy.SpyFormToolkit;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.forms.editor.FormEditor;
-import org.eclipse.ui.forms.editor.IFormPage;
-import org.eclipse.ui.forms.widgets.*;
-import org.eclipse.ui.handlers.HandlerUtil;
-
-
-public class ActiveFormEditorSection implements ISpySection {
-
- public void build( ScrolledForm form, SpyFormToolkit toolkit, ExecutionEvent event ) {
- final IWorkbenchPart part = HandlerUtil.getActivePart( event );
- if( !( part instanceof FormEditor ) )
- return;
- FormEditor multiEditor = ( FormEditor )part;
- Shell shell = HandlerUtil.getActiveShell( event );
- Object object = shell.getData();
- if( object == null )
- return;
- IFormPage activePage = multiEditor.getActivePageInstance();
- if( activePage == null )
- return;
- Section section = toolkit.createSection( form.getBody(), ExpandableComposite.TITLE_BAR );
- section.setText( PDERuntimeMessages.get().ActiveFormEditorSection_Active_Form_Page );
- FormText text = toolkit.createFormText( section, true );
- section.setClient( text );
- TableWrapData td = new TableWrapData();
- td.align = TableWrapData.FILL;
- td.grabHorizontal = true;
- section.setLayoutData( td );
- StringBuffer buffer = new StringBuffer();
- buffer.append( "<form>" ); //$NON-NLS-1$
- buffer.append( toolkit.createClassSection( text,
- NLS.bind( PDERuntimeMessages.get().SpyDialog_activePart_desc,
- "editor tab" ), new Class[] { activePage.getClass()} ) ); //$NON-NLS-1$
- buffer.append( "</form>" ); //$NON-NLS-1$
- text.setText( buffer.toString(), true, false );
- text.layout();
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2008, 2012 Code 9 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:
+ * Code 9 Corporation - initial API and implementation
+ * Ketan Padegaonkar <KetanPadegaonkar@gmail.com> - bug 241912
+ * Tomasz Zarna <tomasz.zarna@tasktop.com> - bug 299298
+ * Arnaud Mergey - <a_mergey@yahoo.fr>
+ *******************************************************************************/
+package org.eclipse.pde.internal.runtime.spy.sections;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.pde.internal.runtime.PDERuntimeMessages;
+import org.eclipse.pde.internal.runtime.spy.SpyFormToolkit;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.forms.editor.FormEditor;
+import org.eclipse.ui.forms.editor.IFormPage;
+import org.eclipse.ui.forms.widgets.*;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+
+public class ActiveFormEditorSection implements ISpySection {
+
+ @Override
+ public void build( ScrolledForm form, SpyFormToolkit toolkit, ExecutionEvent event ) {
+ final IWorkbenchPart part = HandlerUtil.getActivePart( event );
+ if( !( part instanceof FormEditor ) )
+ return;
+ FormEditor multiEditor = ( FormEditor )part;
+ Shell shell = HandlerUtil.getActiveShell( event );
+ Object object = shell.getData();
+ if( object == null )
+ return;
+ IFormPage activePage = multiEditor.getActivePageInstance();
+ if( activePage == null )
+ return;
+ Section section = toolkit.createSection( form.getBody(), ExpandableComposite.TITLE_BAR );
+ section.setText( PDERuntimeMessages.get().ActiveFormEditorSection_Active_Form_Page );
+ FormText text = toolkit.createFormText( section, true );
+ section.setClient( text );
+ TableWrapData td = new TableWrapData();
+ td.align = TableWrapData.FILL;
+ td.grabHorizontal = true;
+ section.setLayoutData( td );
+ StringBuffer buffer = new StringBuffer();
+ buffer.append( "<form>" ); //$NON-NLS-1$
+ buffer.append( toolkit
+ .createClassSection( text,
+ NLS.bind( PDERuntimeMessages.get().SpyDialog_activePart_desc,
+ "editor tab" ), //$NON-NLS-1$
+ new Class[] {
+ activePage.getClass()
+ } ) );
+ buffer.append( "</form>" ); //$NON-NLS-1$
+ text.setText( buffer.toString(), true, false );
+ text.layout();
+ }
+}
diff --git a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/sections/ActiveHelpSection.java b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/sections/ActiveHelpSection.java
index 6b19cf7..8bd0221 100644
--- a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/sections/ActiveHelpSection.java
+++ b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/sections/ActiveHelpSection.java
@@ -1,176 +1,166 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 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:
- * Chris Aniszczyk <zx@us.ibm.com> - initial API and implementation
- * Remy Suen <remy.suen@gmail.com> - bug 203451
- *******************************************************************************/
-package org.eclipse.pde.internal.runtime.spy.sections;
-
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.help.IContext;
-import org.eclipse.help.IContextProvider;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.preference.IPreferencePage;
-import org.eclipse.jface.preference.PreferenceDialog;
-import org.eclipse.pde.internal.runtime.PDERuntimeMessages;
-import org.eclipse.pde.internal.runtime.PDERuntimePlugin;
-import org.eclipse.pde.internal.runtime.PDERuntimePluginImages;
-import org.eclipse.pde.internal.runtime.spy.SpyFormToolkit;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Widget;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IEditorReference;
-import org.eclipse.ui.IViewReference;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.forms.widgets.ExpandableComposite;
-import org.eclipse.ui.forms.widgets.FormText;
-import org.eclipse.ui.forms.widgets.ScrolledForm;
-import org.eclipse.ui.forms.widgets.Section;
-import org.eclipse.ui.forms.widgets.TableWrapData;
-import org.eclipse.ui.handlers.HandlerUtil;
-import org.eclipse.ui.internal.WorkbenchPartReference;
-import org.eclipse.ui.part.ViewPart;
-
-
-/**
- * @since 3.4
- */
-public class ActiveHelpSection implements ISpySection {
-
- private SpyFormToolkit toolkit;
-
- public void build( ScrolledForm form, SpyFormToolkit toolkit, ExecutionEvent event ) {
- this.toolkit = toolkit;
- final Shell shell = HandlerUtil.getActiveShell( event );
- Object object = shell.getData();
- if( object == null )
- return;
- StringBuffer helpBuffer = new StringBuffer();
- // process help
- // TODO we need to make this cleaner... help processing is complicated atm
- if( object instanceof PreferenceDialog ) {
- PreferenceDialog dialog = ( PreferenceDialog )object;
- IPreferencePage page = ( IPreferencePage )dialog.getSelectedPage();
- processHelp( page.getControl().getShell(), helpBuffer );
- processChildren( page.getControl(), helpBuffer );
- } else if( object instanceof Dialog ) {
- Dialog dialog = ( Dialog )object;
- processChildren( dialog.getShell(), helpBuffer );
- } else {
- helpBuffer.append( processControlHelp( event, toolkit ) );
- }
- if( helpBuffer != null && helpBuffer.length() > 0 ) {
- Section section = toolkit.createSection( form.getBody(), ExpandableComposite.TITLE_BAR );
- section.setText( PDERuntimeMessages.get().SpyDialog_activeHelpSection_title );
- section.clientVerticalSpacing = 9;
- FormText text = toolkit.createFormText( section, true );
- section.setClient( text );
- TableWrapData td = new TableWrapData();
- td.align = TableWrapData.FILL;
- td.grabHorizontal = true;
- section.setLayoutData( td );
- Image image = PDERuntimePluginImages.get( PDERuntimePluginImages.IMG_CONTEXTID_OBJ );
- text.setImage( "contextid", image ); //$NON-NLS-1$
- StringBuffer buffer = new StringBuffer();
- buffer.append( "<form>" ); //$NON-NLS-1$
- buffer.append( "<p>" ); //$NON-NLS-1$
- buffer.append( PDERuntimeMessages.get().SpyDialog_activeHelpSection_desc );
- buffer.append( "</p>" ); //$NON-NLS-1$
- buffer.append( helpBuffer.toString() );
- buffer.append( "</form>" ); //$NON-NLS-1$
- String content = buffer.toString().replaceAll( "&", "&" ); //$NON-NLS-1$ //$NON-NLS-2$
- text.setText( content, true, false );
- }
- }
-
- private void processHelp( Widget widget, StringBuffer buffer ) {
- buffer.append( toolkit.createHelpIdentifierSection( widget ) );
- }
-
- private void processChildren( Control control, StringBuffer buffer ) {
- processHelp( control, buffer );
- if( control instanceof Composite ) {
- Composite composite = ( Composite )control;
- Control[] controls = composite.getChildren();
- for( int i = 0; i < controls.length; i++ ) {
- processChildren( controls[ i ], buffer );
- }
- }
- }
-
- private String processControlHelp( ExecutionEvent event, SpyFormToolkit toolkit ) {
- IWorkbenchPart part = HandlerUtil.getActivePart( event );
- if( part == null )
- return null;
- IWorkbenchWindow window = part.getSite().getWorkbenchWindow();
- if( window == null )
- return null;
- StringBuffer buffer = new StringBuffer();
- Shell shell = null;
- Control control = null;
- if( part instanceof IEditorPart ) {
- IEditorPart editorPart = ( IEditorPart )part;
- shell = editorPart.getSite().getShell();
- for( int j = 0; j < window.getActivePage().getEditorReferences().length; j++ ) {
- IEditorReference er = window.getActivePage().getEditorReferences()[ j ];
- if( er.getId().equals( editorPart.getEditorSite().getId() ) )
- if( er instanceof WorkbenchPartReference ) {
- WorkbenchPartReference wpr = ( WorkbenchPartReference )er;
- control = wpr.getPane().getControl();
- shell = null;
- break;
- }
- }
- } else if( part instanceof ViewPart ) {
- ViewPart viewPart = ( ViewPart )part;
- shell = viewPart.getSite().getShell();
- for( int j = 0; j < window.getActivePage().getViewReferences().length; j++ ) {
- IViewReference vr = window.getActivePage().getViewReferences()[ j ];
- if( vr.getId().equals( viewPart.getViewSite().getId() ) )
- if( vr instanceof WorkbenchPartReference ) {
- WorkbenchPartReference wpr = ( WorkbenchPartReference )vr;
- control = wpr.getPane().getControl();
- shell = null;
- break;
- }
- }
- }
- if( shell != null ) {
- buffer.append( toolkit.createHelpIdentifierSection( shell ) );
- for( int i = 0; i < shell.getChildren().length; i++ ) {
- processChildren( shell.getChildren()[ i ], buffer );
- }
- } else if( control != null ) {
-// // if we don't have org.eclipse.help, we will have problems when trying to load IContextProvider
-// if (!PDERuntimePlugin.HAS_IDE_BUNDLES)
-// processChildren(control, buffer);
-// else {
- IContextProvider provider = ( IContextProvider )part.getAdapter( IContextProvider.class );
- IContext context = ( provider != null )
- ? provider.getContext( control )
- : null;
- if( context != null ) {
- buffer.append( toolkit.createHelpIdentifierSection( context ) );
- } else {
- buffer.append( toolkit.createHelpIdentifierSection( control ) );
- }
- if( control instanceof Composite ) {
- Composite parent = ( Composite )control;
- for( int i = 0; i < parent.getChildren().length; i++ ) {
- processChildren( parent.getChildren()[ i ], buffer );
- }
- }
- }
-// }
- return buffer.toString();
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2007, 2015 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:
+ * Chris Aniszczyk <zx@us.ibm.com> - initial API and implementation
+ * Remy Suen <remy.suen@gmail.com> - bug 203451
+ * Arnaud Mergey - <a_mergey@yahoo.fr>
+ *******************************************************************************/
+package org.eclipse.pde.internal.runtime.spy.sections;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.help.IContext;
+import org.eclipse.help.IContextProvider;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.preference.IPreferencePage;
+import org.eclipse.jface.preference.PreferenceDialog;
+import org.eclipse.pde.internal.runtime.*;
+import org.eclipse.pde.internal.runtime.spy.SpyFormToolkit;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.*;
+import org.eclipse.ui.*;
+import org.eclipse.ui.forms.widgets.*;
+import org.eclipse.ui.handlers.HandlerUtil;
+import org.eclipse.ui.internal.WorkbenchPartReference;
+import org.eclipse.ui.part.ViewPart;
+
+
+/**
+ * @since 3.4
+ */
+public class ActiveHelpSection implements ISpySection {
+
+ private SpyFormToolkit toolkit;
+
+ @Override
+ public void build( ScrolledForm form, SpyFormToolkit toolkit, ExecutionEvent event ) {
+ this.toolkit = toolkit;
+ final Shell shell = HandlerUtil.getActiveShell( event );
+ Object object = shell.getData();
+ if( object == null )
+ return;
+ StringBuffer helpBuffer = new StringBuffer();
+ // process help
+ // TODO we need to make this cleaner... help processing is complicated atm
+ if( object instanceof PreferenceDialog ) {
+ PreferenceDialog dialog = ( PreferenceDialog )object;
+ IPreferencePage page = ( IPreferencePage )dialog.getSelectedPage();
+ processHelp( page.getControl().getShell(), helpBuffer );
+ processChildren( page.getControl(), helpBuffer );
+ } else if( object instanceof Dialog ) {
+ Dialog dialog = ( Dialog )object;
+ processChildren( dialog.getShell(), helpBuffer );
+ } else {
+ helpBuffer.append( processControlHelp( event, toolkit ) );
+ }
+ if( helpBuffer.length() > 0 ) {
+ Section section = toolkit.createSection( form.getBody(), ExpandableComposite.TITLE_BAR );
+ section.setText( PDERuntimeMessages.get().SpyDialog_activeHelpSection_title );
+ section.clientVerticalSpacing = 9;
+ FormText text = toolkit.createFormText( section, true );
+ section.setClient( text );
+ TableWrapData td = new TableWrapData();
+ td.align = TableWrapData.FILL;
+ td.grabHorizontal = true;
+ section.setLayoutData( td );
+ Image image = PDERuntimePluginImages.get( PDERuntimePluginImages.IMG_CONTEXTID_OBJ );
+ text.setImage( "contextid", image ); //$NON-NLS-1$
+ StringBuffer buffer = new StringBuffer();
+ buffer.append( "<form>" ); //$NON-NLS-1$
+ buffer.append( "<p>" ); //$NON-NLS-1$
+ buffer.append( PDERuntimeMessages.get().SpyDialog_activeHelpSection_desc );
+ buffer.append( "</p>" ); //$NON-NLS-1$
+ buffer.append( helpBuffer.toString() );
+ buffer.append( "</form>" ); //$NON-NLS-1$
+ String content = buffer.toString().replaceAll( "&", "&" ); //$NON-NLS-1$ //$NON-NLS-2$
+ text.setText( content, true, false );
+ }
+ }
+
+ private void processHelp( Widget widget, StringBuffer buffer ) {
+ buffer.append( toolkit.createHelpIdentifierSection( widget ) );
+ }
+
+ private void processChildren( Control control, StringBuffer buffer ) {
+ processHelp( control, buffer );
+ if( control instanceof Composite ) {
+ Composite composite = ( Composite )control;
+ Control[] controls = composite.getChildren();
+ for( int i = 0; i < controls.length; i++ ) {
+ processChildren( controls[ i ], buffer );
+ }
+ }
+ }
+
+ private String processControlHelp( ExecutionEvent event, SpyFormToolkit toolkit ) {
+ IWorkbenchPart part = HandlerUtil.getActivePart( event );
+ if( part == null )
+ return null;
+ IWorkbenchWindow window = part.getSite().getWorkbenchWindow();
+ if( window == null )
+ return null;
+ StringBuffer buffer = new StringBuffer();
+ Shell shell = null;
+ Control control = null;
+ if( part instanceof IEditorPart ) {
+ IEditorPart editorPart = ( IEditorPart )part;
+ shell = editorPart.getSite().getShell();
+ for( int j = 0; j < window.getActivePage().getEditorReferences().length; j++ ) {
+ IEditorReference er = window.getActivePage().getEditorReferences()[ j ];
+ if( er.getId().equals( editorPart.getEditorSite().getId() ) )
+ if( er instanceof WorkbenchPartReference ) {
+ WorkbenchPartReference wpr = ( WorkbenchPartReference )er;
+ control = wpr.getPane().getControl();
+ shell = null;
+ break;
+ }
+ }
+ } else if( part instanceof ViewPart ) {
+ ViewPart viewPart = ( ViewPart )part;
+ shell = viewPart.getSite().getShell();
+ for( int j = 0; j < window.getActivePage().getViewReferences().length; j++ ) {
+ IViewReference vr = window.getActivePage().getViewReferences()[ j ];
+ if( vr.getId().equals( viewPart.getViewSite().getId() ) )
+ if( vr instanceof WorkbenchPartReference ) {
+ WorkbenchPartReference wpr = ( WorkbenchPartReference )vr;
+ control = wpr.getPane().getControl();
+ shell = null;
+ break;
+ }
+ }
+ }
+ if( shell != null ) {
+ buffer.append( toolkit.createHelpIdentifierSection( shell ) );
+ for( int i = 0; i < shell.getChildren().length; i++ ) {
+ processChildren( shell.getChildren()[ i ], buffer );
+ }
+ } else if( control != null ) {
+ // if we don't have org.eclipse.help, we will have problems when trying to load
+ // IContextProvider
+ if( !PDERuntimePlugin.HAS_IDE_BUNDLES )
+ processChildren( control, buffer );
+ else {
+ IContextProvider provider = ( IContextProvider )part.getAdapter( IContextProvider.class );
+ IContext context = ( provider != null )
+ ? provider.getContext( control )
+ : null;
+ if( context != null ) {
+ buffer.append( toolkit.createHelpIdentifierSection( context ) );
+ } else {
+ buffer.append( toolkit.createHelpIdentifierSection( control ) );
+ }
+ if( control instanceof Composite ) {
+ Composite parent = ( Composite )control;
+ for( int i = 0; i < parent.getChildren().length; i++ ) {
+ processChildren( parent.getChildren()[ i ], buffer );
+ }
+ }
+ }
+ }
+ return buffer.toString();
+ }
+}
diff --git a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/sections/ActiveMenuSection.java b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/sections/ActiveMenuSection.java
index fd99524..4b2ffec 100644
--- a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/sections/ActiveMenuSection.java
+++ b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/sections/ActiveMenuSection.java
@@ -1,230 +1,231 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2010 EclipseSource 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:
- * EclipseSource Corporation - initial API and implementation
- * Anyware Technologies - ongoing enhancements
- *******************************************************************************/
-package org.eclipse.pde.internal.runtime.spy.sections;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import org.eclipse.core.commands.Command;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.jface.action.*;
-import org.eclipse.pde.internal.runtime.PDERuntimeMessages;
-import org.eclipse.pde.internal.runtime.PDERuntimePlugin;
-import org.eclipse.pde.internal.runtime.spy.SpyFormToolkit;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.ui.IActionDelegate;
-import org.eclipse.ui.actions.RetargetAction;
-import org.eclipse.ui.forms.widgets.*;
-import org.eclipse.ui.internal.*;
-import org.eclipse.ui.menus.CommandContributionItem;
-import org.osgi.framework.Bundle;
-import org.osgi.service.packageadmin.PackageAdmin;
-
-
-/**
- * @since 3.5
- */
-public class ActiveMenuSection implements ISpySection {
-
- public void build( ScrolledForm form, SpyFormToolkit toolkit, Event event ) {
- Object object = event.widget.getData();
- if( object != null ) {
- Section section = toolkit.createSection( form.getBody(), ExpandableComposite.TITLE_BAR );
- section.clientVerticalSpacing = 9;
- section.setText( PDERuntimeMessages.get().SpyDialog_activeSelection_title );
- FormText text = toolkit.createFormText( section, true );
- section.setClient( text );
- TableWrapData td = new TableWrapData();
- td.align = TableWrapData.FILL;
- td.grabHorizontal = true;
- section.setLayoutData( td );
- StringBuffer buffer = new StringBuffer();
- buffer.append( "<form>" ); //$NON-NLS-1$
- if( object instanceof IContributionItem ) {
- IContributionItem item = ( IContributionItem )object;
- String id = item.getId();
- if( id != null ) {
- buffer.append( toolkit.createIdentifierSection( text,
- PDERuntimeMessages.get().ActiveMenuSection_0,
- new String[] {
- id
- } ) );
- }
- if( object instanceof ContributionItem ) {
- createLocationURI( toolkit, object, text, buffer, id );
- }
- scan( item, buffer, toolkit, text );
- }
- buffer.append( "</form>" ); //$NON-NLS-1$
- text.setText( buffer.toString(), true, false );
- }
- }
-
- private void createLocationURI( SpyFormToolkit toolkit,
- Object object,
- FormText text,
- StringBuffer buffer,
- String id )
- {
- IContributionManager parent = ( ( ContributionItem )object ).getParent();
- if( parent instanceof IMenuManager ) {
- String parentId = ( ( IMenuManager )parent ).getId();
- String locationURI = "menu:" + parentId + ( id == null ? "?after=additions" : "?after=" + id ); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- buffer.append( toolkit.createIdentifierSection( text,
- PDERuntimeMessages.get().ActiveMenuSection_7,
- new String[] {
- locationURI
- } ) );
- } else if( parent instanceof ToolBarManager ) {
- ToolBar bar = ( ( ToolBarManager )parent ).getControl();
- if( bar.getParent() instanceof CoolBar ) {
- CoolItem[] items = ( ( CoolBar )bar.getParent() ).getItems();
- for( int i = 0; i < items.length; i++ ) {
- CoolItem coolItem = items[ i ];
- if( coolItem.getControl() == bar ) {
- Object o = coolItem.getData();
- if( o instanceof ToolBarContributionItem ) {
- String parentId = ( ( ToolBarContributionItem )o ).getId();
- String locationURI = "toolbar:" + parentId + ( id == null ? "?after=additions" : "?after=" + id ); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- buffer.append( toolkit.createIdentifierSection( text,
- PDERuntimeMessages.get().ActiveMenuSection_7,
- new String[] {
- locationURI
- } ) );
- }
- continue;
- }
- }
- }
- }
- }
-
- // FIXME this is a bit hackish but works... need to redo
- private void scan( IContributionItem item,
- StringBuffer buffer,
- SpyFormToolkit toolkit,
- FormText text )
- {
- // check for action set information
- if( item instanceof IActionSetContributionItem ) {
- IActionSetContributionItem actionItem = ( IActionSetContributionItem )item;
- buffer.append( toolkit.createIdentifierSection( text,
- PDERuntimeMessages.get().ActiveMenuSection_1,
- new String[] {
- actionItem.getActionSetId()
- } ) );
- }
- if( item instanceof ActionContributionItem ) {
- createActionContributionItemText( item, buffer, toolkit, text );
- } else if( item instanceof SubContributionItem ) {
- SubContributionItem subItem = ( SubContributionItem )item;
- scan( subItem.getInnerItem(), buffer, toolkit, text ); // recurse
- } else if( item instanceof CommandContributionItem ) { // TODO... this is hard...
- CommandContributionItem contributionItem = ( CommandContributionItem )item;
- Command command = contributionItem.getCommand().getCommand();
- buffer.append( toolkit.createClassSection( text,
- PDERuntimeMessages.get().ActiveMenuSection_2,
- new Class[] {
- command.getClass()
- } ) );
- buffer.append( toolkit.createClassSection( text,
- PDERuntimeMessages.get().ActiveMenuSection_3,
- new Class[] {
- command.getHandler().getClass()
- } ) );
- }
- }
-
- private void createActionContributionItemText( Object object,
- StringBuffer buffer,
- SpyFormToolkit toolkit,
- FormText text )
- {
- ActionContributionItem actionItem = ( ActionContributionItem )object;
- IAction action = actionItem.getAction();
- String id = action.getActionDefinitionId();
- if( id != null ) {
- buffer.append( toolkit.createIdentifierSection( text,
- PDERuntimeMessages.get().ActiveMenuSection_4,
- new String[] {
- action.getActionDefinitionId()
- } ) );
- }
- if( action instanceof PluginAction ) {
- PluginAction pluginAction = ( PluginAction )action;
- Class clazz = pluginAction.getClass();
- createActionContributionItemText( object, buffer, toolkit, text, clazz, pluginAction );
- } else {
- // normal JFace Actions
- Class clazz = action.getClass();
- buffer.append( toolkit.createClassSection( text,
- PDERuntimeMessages.get().ActiveMenuSection_5,
- new Class[] {
- clazz
- } ) );
- PackageAdmin admin = PDERuntimePlugin.getDefault().getPackageAdmin();
- Bundle bundle = admin.getBundle( clazz );
- toolkit.generatePluginDetailsText( bundle, null, "meow", buffer, text ); //$NON-NLS-1$
- }
- }
-
- private void createActionContributionItemText( Object object,
- StringBuffer buffer,
- SpyFormToolkit toolkit,
- FormText text,
- Class clazz,
- PluginAction pluginAction )
- {
- try {
- RetargetAction retargetAction = null;
- IActionDelegate delegate = null;
- if( pluginAction instanceof WWinPluginAction ) {
- // such an action *may* have a retarget action
- Field field = clazz.getDeclaredField( "retargetAction" ); //$NON-NLS-1$
- field.setAccessible( true );
- retargetAction = ( RetargetAction )field.get( pluginAction );
- }
- // if there's no retarget action OR if the pluginAction is not a WWinPluginAction, let's try
-// to find the action delegate
- if( retargetAction == null ) {
- Field field = clazz.getDeclaredField( "delegate" ); //$NON-NLS-1$
- field.setAccessible( true );
- delegate = ( IActionDelegate )field.get( pluginAction );
- if( delegate == null ) { // have to invoke createDelegate if we don't have one yet...
- Method method = clazz.getDeclaredMethod( "createDelegate", null ); //$NON-NLS-1$
- method.setAccessible( true );
- method.invoke( pluginAction, null );
- delegate = ( IActionDelegate )field.get( pluginAction );
- }
- }
- buffer.append( toolkit.createClassSection( text,
- PDERuntimeMessages.get().ActiveMenuSection_6,
- new Class[] {
- ( retargetAction == null )
- ? delegate.getClass()
- : retargetAction.getActionHandler()
- .getClass()
- } ) );
- PackageAdmin admin = PDERuntimePlugin.getDefault().getPackageAdmin();
- Bundle bundle = admin.getBundle( clazz );
- toolkit.generatePluginDetailsText( bundle, null, "menu item", buffer, text ); //$NON-NLS-1$
- } catch( Exception e ) {
- Class superclass = clazz.getSuperclass();
- if( superclass != null ) {
- createActionContributionItemText( object, buffer, toolkit, text, superclass, pluginAction );
- }
- }
- }
-
- public void build( ScrolledForm form, SpyFormToolkit toolkit, ExecutionEvent event ) {
- // do nothing
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2009, 2015 EclipseSource 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:
+ * EclipseSource Corporation - initial API and implementation
+ * Anyware Technologies - ongoing enhancements
+ * Arnaud Mergey - <a_mergey@yahoo.fr>
+ *******************************************************************************/
+package org.eclipse.pde.internal.runtime.spy.sections;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import org.eclipse.core.commands.Command;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.jface.action.*;
+import org.eclipse.pde.internal.runtime.PDERuntimeMessages;
+import org.eclipse.pde.internal.runtime.spy.SpyFormToolkit;
+import org.eclipse.swt.widgets.*;
+import org.eclipse.ui.IActionDelegate;
+import org.eclipse.ui.actions.RetargetAction;
+import org.eclipse.ui.forms.widgets.*;
+import org.eclipse.ui.internal.*;
+import org.eclipse.ui.menus.CommandContributionItem;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.FrameworkUtil;
+
+
+/**
+ * @since 3.5
+ */
+public class ActiveMenuSection implements ISpySection {
+
+ public void build( ScrolledForm form, SpyFormToolkit toolkit, Event event ) {
+ Object object = event.widget.getData();
+ if( object != null ) {
+ Section section = toolkit.createSection( form.getBody(), ExpandableComposite.TITLE_BAR );
+ section.clientVerticalSpacing = 9;
+ section.setText( PDERuntimeMessages.get().SpyDialog_activeSelection_title );
+ FormText text = toolkit.createFormText( section, true );
+ section.setClient( text );
+ TableWrapData td = new TableWrapData();
+ td.align = TableWrapData.FILL;
+ td.grabHorizontal = true;
+ section.setLayoutData( td );
+ StringBuffer buffer = new StringBuffer();
+ buffer.append( "<form>" ); //$NON-NLS-1$
+ if( object instanceof IContributionItem ) {
+ IContributionItem item = ( IContributionItem )object;
+ String id = item.getId();
+ if( id != null ) {
+ buffer.append( toolkit.createIdentifierSection( text,
+ PDERuntimeMessages
+ .get().ActiveMenuSection_0,
+ new String[] {
+ id
+ } ) );
+ }
+ if( object instanceof ContributionItem ) {
+ createLocationURI( toolkit, object, text, buffer, id );
+ }
+ scan( item, buffer, toolkit, text );
+ }
+ buffer.append( "</form>" ); //$NON-NLS-1$
+ text.setText( buffer.toString(), true, false );
+ }
+ }
+
+ private void createLocationURI( SpyFormToolkit toolkit,
+ Object object,
+ FormText text,
+ StringBuffer buffer,
+ String id )
+ {
+ IContributionManager parent = ( ( ContributionItem )object ).getParent();
+ if( parent instanceof IMenuManager ) {
+ String parentId = ( ( IMenuManager )parent ).getId();
+ String locationURI = "menu:" //$NON-NLS-1$
+ + parentId
+ + ( id == null
+ ? "?after=additions" //$NON-NLS-1$
+ : "?after=" + id ); //$NON-NLS-1$
+ buffer.append( toolkit
+ .createIdentifierSection( text, PDERuntimeMessages.get().ActiveMenuSection_7, new String[] {
+ locationURI
+ } ) );
+ } else if( parent instanceof ToolBarManager ) {
+ ToolBar bar = ( ( ToolBarManager )parent ).getControl();
+ if( bar.getParent() instanceof CoolBar ) {
+ CoolItem[] items = ( ( CoolBar )bar.getParent() ).getItems();
+ for( int i = 0; i < items.length; i++ ) {
+ CoolItem coolItem = items[ i ];
+ if( coolItem.getControl() == bar ) {
+ Object o = coolItem.getData();
+ if( o instanceof ToolBarContributionItem ) {
+ String parentId = ( ( ToolBarContributionItem )o ).getId();
+ String locationURI = "toolbar:" //$NON-NLS-1$
+ + parentId
+ + ( id == null
+ ? "?after=additions" //$NON-NLS-1$
+ : "?after=" + id ); //$NON-NLS-1$
+ buffer.append( toolkit.createIdentifierSection( text,
+ PDERuntimeMessages
+ .get().ActiveMenuSection_7,
+ new String[] {
+ locationURI
+ } ) );
+ }
+ continue;
+ }
+ }
+ }
+ }
+ }
+
+ // FIXME this is a bit hackish but works... need to redo
+ private void scan( IContributionItem item,
+ StringBuffer buffer,
+ SpyFormToolkit toolkit,
+ FormText text )
+ {
+ // check for action set information
+ if( item instanceof IActionSetContributionItem ) {
+ IActionSetContributionItem actionItem = ( IActionSetContributionItem )item;
+ buffer.append( toolkit
+ .createIdentifierSection( text, PDERuntimeMessages.get().ActiveMenuSection_1, new String[] {
+ actionItem.getActionSetId()
+ } ) );
+ }
+ if( item instanceof ActionContributionItem ) {
+ createActionContributionItemText( item, buffer, toolkit, text );
+ } else if( item instanceof SubContributionItem ) {
+ SubContributionItem subItem = ( SubContributionItem )item;
+ scan( subItem.getInnerItem(), buffer, toolkit, text ); // recurse
+ } else if( item instanceof CommandContributionItem ) { // TODO... this is hard...
+ CommandContributionItem contributionItem = ( CommandContributionItem )item;
+ Command command = contributionItem.getCommand().getCommand();
+ buffer.append( toolkit
+ .createClassSection( text, PDERuntimeMessages.get().ActiveMenuSection_2, new Class[] {
+ command.getClass()
+ } ) );
+ buffer.append( toolkit
+ .createClassSection( text, PDERuntimeMessages.get().ActiveMenuSection_3, new Class[] {
+ command.getHandler().getClass()
+ } ) );
+ }
+ }
+
+ private void createActionContributionItemText( Object object,
+ StringBuffer buffer,
+ SpyFormToolkit toolkit,
+ FormText text )
+ {
+ ActionContributionItem actionItem = ( ActionContributionItem )object;
+ IAction action = actionItem.getAction();
+ String id = action.getActionDefinitionId();
+ if( id != null ) {
+ buffer.append( toolkit
+ .createIdentifierSection( text, PDERuntimeMessages.get().ActiveMenuSection_4, new String[] {
+ action.getActionDefinitionId()
+ } ) );
+ }
+ if( action instanceof PluginAction ) {
+ PluginAction pluginAction = ( PluginAction )action;
+ Class clazz = pluginAction.getClass();
+ createActionContributionItemText( object, buffer, toolkit, text, clazz, pluginAction );
+ } else {
+ // normal JFace Actions
+ Class clazz = action.getClass();
+ buffer.append( toolkit
+ .createClassSection( text, PDERuntimeMessages.get().ActiveMenuSection_5, new Class[] {
+ clazz
+ } ) );
+ Bundle bundle = FrameworkUtil.getBundle( clazz );
+ toolkit.generatePluginDetailsText( bundle, null, "meow", buffer, text ); //$NON-NLS-1$
+ }
+ }
+
+ private void createActionContributionItemText( Object object,
+ StringBuffer buffer,
+ SpyFormToolkit toolkit,
+ FormText text,
+ Class clazz,
+ PluginAction pluginAction )
+ {
+ try {
+ RetargetAction retargetAction = null;
+ IActionDelegate delegate = null;
+ if( pluginAction instanceof WWinPluginAction ) {
+ // such an action *may* have a retarget action
+ Field field = clazz.getDeclaredField( "retargetAction" ); //$NON-NLS-1$
+ field.setAccessible( true );
+ retargetAction = ( RetargetAction )field.get( pluginAction );
+ }
+ // if there's no retarget action OR if the pluginAction is not a WWinPluginAction, let's try
+ // to find the action delegate
+ if( retargetAction == null ) {
+ Field field = clazz.getDeclaredField( "delegate" ); //$NON-NLS-1$
+ field.setAccessible( true );
+ delegate = ( IActionDelegate )field.get( pluginAction );
+ if( delegate == null ) { // have to invoke createDelegate if we don't have one yet...
+ Method method = clazz.getDeclaredMethod( "createDelegate" ); //$NON-NLS-1$
+ method.setAccessible( true );
+ method.invoke( pluginAction );
+ delegate = ( IActionDelegate )field.get( pluginAction );
+ }
+ }
+ buffer.append( toolkit
+ .createClassSection( text, PDERuntimeMessages.get().ActiveMenuSection_6, new Class[] {
+ ( retargetAction == null )
+ ? delegate.getClass()
+ : retargetAction.getActionHandler().getClass()
+ } ) );
+ Bundle bundle = FrameworkUtil.getBundle( clazz );
+ toolkit.generatePluginDetailsText( bundle, null, "menu item", buffer, text ); //$NON-NLS-1$
+ } catch( Exception e ) {
+ Class superclass = clazz.getSuperclass();
+ if( superclass != null ) {
+ createActionContributionItemText( object, buffer, toolkit, text, superclass, pluginAction );
+ }
+ }
+ }
+
+ @Override
+ public void build( ScrolledForm form, SpyFormToolkit toolkit, ExecutionEvent event ) {
+ // do nothing
+ }
+}
diff --git a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/sections/ActivePartSection.java b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/sections/ActivePartSection.java
index a390037..5108a74 100644
--- a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/sections/ActivePartSection.java
+++ b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/sections/ActivePartSection.java
@@ -1,119 +1,124 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2009 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:
- * Chris Aniszczyk <zx@us.ibm.com> - initial API and implementation
- * Heiko Seeberger - changes for bug 237764
- *******************************************************************************/
-package org.eclipse.pde.internal.runtime.spy.sections;
-
-import java.lang.reflect.Field;
-import java.util.*;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.pde.internal.runtime.*;
-import org.eclipse.pde.internal.runtime.spy.SpyFormToolkit;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.*;
-import org.eclipse.ui.forms.widgets.*;
-import org.eclipse.ui.handlers.HandlerUtil;
-import org.eclipse.ui.internal.PartSite;
-import org.eclipse.ui.internal.PopupMenuExtender;
-import org.eclipse.ui.part.IPage;
-import org.eclipse.ui.part.PageBookView;
-import org.osgi.framework.Bundle;
-
-
-/**
- * @since 3.4
- */
-public class ActivePartSection implements ISpySection {
-
- public void build( ScrolledForm form, SpyFormToolkit toolkit, ExecutionEvent event ) {
- IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindow( event );
- if( window == null ) // if we don't have an active workbench, we don't have a valid selection to
-// analyze
- return;
- final IWorkbenchPart part = HandlerUtil.getActivePart( event );
- if( part == null )
- return; // (Bug 237764) if no active part let's do nothing ...
- String partType = part instanceof IEditorPart
- ? "editor" : "view"; //$NON-NLS-1$ //$NON-NLS-2$
- Section section = toolkit.createSection( form.getBody(), ExpandableComposite.TITLE_BAR );
- section.setText( NLS.bind( PDERuntimeMessages.get().SpyDialog_activePart_title, part.getSite()
- .getRegisteredName() ) );
- FormText text = toolkit.createFormText( section, true );
- section.setClient( text );
- TableWrapData td = new TableWrapData();
- td.align = TableWrapData.FILL;
- td.grabHorizontal = true;
- section.setLayoutData( td );
- // toolkit.createImageAction(section, part.getTitleImage());
- StringBuffer buffer = new StringBuffer();
- buffer.append( "<form>" ); //$NON-NLS-1$
- // time to analyze the active part
- buffer.append( toolkit.createClassSection( text,
- NLS.bind( PDERuntimeMessages.get().SpyDialog_activePart_desc,
- partType ),
- new Class[] {
- part.getClass()
- } ) );
- if( part instanceof PageBookView ) {
- PageBookView outline = ( PageBookView )part;
- IPage currentPage = outline.getCurrentPage();
- if( currentPage != null ) {
- buffer.append( toolkit.createClassSection( text,
- PDERuntimeMessages.get().SpyDialog_activePageBook_title,
- new Class[] {
- currentPage.getClass()
- } ) );
- }
- }
- // time to analyze the contributing plug-in
- final Bundle bundle = Platform.getBundle( part.getSite().getPluginId() );
- toolkit.generatePluginDetailsText( bundle, part.getSite().getId(), partType, buffer, text );
- // get menu information using reflection
- try {
- PartSite site = ( PartSite )part.getSite();
- Class clazz = site.getClass().getSuperclass();
- Field field = clazz.getDeclaredField( "menuExtenders" ); //$NON-NLS-1$
- field.setAccessible( true );
- List list = ( List )field.get( site );
- if( list != null && list.size() > 0 ) {
- Set menuIds = new LinkedHashSet();
- for( int i = 0; i < list.size(); i++ ) {
- PopupMenuExtender extender = ( PopupMenuExtender )list.get( i );
- menuIds.addAll( extender.getMenuIds() );
- }
- buffer.append( "<p>" ); //$NON-NLS-1$
- buffer.append( PDERuntimeMessages.get().SpyDialog_activeMenuIds );
- buffer.append( "</p>" ); //$NON-NLS-1$
- for( Iterator it = menuIds.iterator(); it.hasNext(); ) {
- buffer.append( "<li bindent=\"20\" style=\"image\" value=\"menu\">" ); //$NON-NLS-1$
- buffer.append( it.next().toString() );
- buffer.append( "</li>" ); //$NON-NLS-1$
- }
- Image menuImage = PDERuntimePluginImages.get( PDERuntimePluginImages.IMG_MENU_OBJ );
- text.setImage( "menu", menuImage ); //$NON-NLS-1$
- }
- } catch( SecurityException e ) {
- PDERuntimePlugin.log( e );
- } catch( NoSuchFieldException e ) {
- PDERuntimePlugin.log( e );
- } catch( IllegalArgumentException e ) {
- PDERuntimePlugin.log( e );
- } catch( IllegalAccessException e ) {
- PDERuntimePlugin.log( e );
- }
- buffer.append( "</form>" ); //$NON-NLS-1$
- Image idImage = PDERuntimePluginImages.get( PDERuntimePluginImages.IMG_ID_OBJ );
- text.setImage( "id", idImage ); //$NON-NLS-1$
- text.setText( buffer.toString(), true, false );
- text.layout();
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2007, 2009 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:
+ * Chris Aniszczyk <zx@us.ibm.com> - initial API and implementation
+ * Heiko Seeberger - changes for bug 237764
+ * Arnaud Mergey - <a_mergey@yahoo.fr>
+ *******************************************************************************/
+package org.eclipse.pde.internal.runtime.spy.sections;
+
+import java.lang.reflect.Field;
+import java.util.*;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.pde.internal.runtime.*;
+import org.eclipse.pde.internal.runtime.spy.SpyFormToolkit;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.*;
+import org.eclipse.ui.forms.widgets.*;
+import org.eclipse.ui.handlers.HandlerUtil;
+import org.eclipse.ui.internal.PartSite;
+import org.eclipse.ui.internal.PopupMenuExtender;
+import org.eclipse.ui.part.IPage;
+import org.eclipse.ui.part.PageBookView;
+import org.osgi.framework.Bundle;
+
+
+/**
+ * @since 3.4
+ */
+public class ActivePartSection implements ISpySection {
+
+ @Override
+ public void build( ScrolledForm form, SpyFormToolkit toolkit, ExecutionEvent event ) {
+ IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindow( event );
+ if( window == null ) // if we don't have an active workbench, we don't have a valid selection to
+ // analyze
+ return;
+ final IWorkbenchPart part = HandlerUtil.getActivePart( event );
+ if( part == null )
+ return; // (Bug 237764) if no active part let's do nothing ...
+ String partType = part instanceof IEditorPart
+ ? "editor" //$NON-NLS-1$
+ : "view"; //$NON-NLS-1$
+ Section section = toolkit.createSection( form.getBody(), ExpandableComposite.TITLE_BAR );
+ section.setText( NLS.bind( PDERuntimeMessages.get().SpyDialog_activePart_title,
+ part.getSite().getRegisteredName() ) );
+ FormText text = toolkit.createFormText( section, true );
+ section.setClient( text );
+ TableWrapData td = new TableWrapData();
+ td.align = TableWrapData.FILL;
+ td.grabHorizontal = true;
+ section.setLayoutData( td );
+ // toolkit.createImageAction(section, part.getTitleImage());
+ StringBuffer buffer = new StringBuffer();
+ buffer.append( "<form>" ); //$NON-NLS-1$
+ // time to analyze the active part
+ buffer
+ .append( toolkit.createClassSection( text,
+ NLS.bind( PDERuntimeMessages
+ .get().SpyDialog_activePart_desc, partType ),
+ new Class[] {
+ part.getClass()
+ } ) );
+ if( part instanceof PageBookView ) {
+ PageBookView outline = ( PageBookView )part;
+ IPage currentPage = outline.getCurrentPage();
+ if( currentPage != null ) {
+ buffer.append( toolkit.createClassSection( text,
+ PDERuntimeMessages
+ .get().SpyDialog_activePageBook_title,
+ new Class[] {
+ currentPage.getClass()
+ } ) );
+ }
+ }
+ // time to analyze the contributing plug-in
+ final Bundle bundle = Platform.getBundle( part.getSite().getPluginId() );
+ toolkit.generatePluginDetailsText( bundle, part.getSite().getId(), partType, buffer, text );
+ // get menu information using reflection
+ try {
+ PartSite site = ( PartSite )part.getSite();
+ Class clazz = site.getClass().getSuperclass();
+ Field field = clazz.getDeclaredField( "menuExtenders" ); //$NON-NLS-1$
+ field.setAccessible( true );
+ List list = ( List )field.get( site );
+ if( list != null && list.size() > 0 ) {
+ Set menuIds = new LinkedHashSet();
+ for( int i = 0; i < list.size(); i++ ) {
+ PopupMenuExtender extender = ( PopupMenuExtender )list.get( i );
+ menuIds.addAll( extender.getMenuIds() );
+ }
+ buffer.append( "<p>" ); //$NON-NLS-1$
+ buffer.append( PDERuntimeMessages.get().SpyDialog_activeMenuIds );
+ buffer.append( "</p>" ); //$NON-NLS-1$
+ for( Iterator it = menuIds.iterator(); it.hasNext(); ) {
+ buffer.append( "<li bindent=\"20\" style=\"image\" value=\"menu\">" ); //$NON-NLS-1$
+ buffer.append( it.next().toString() );
+ buffer.append( "</li>" ); //$NON-NLS-1$
+ }
+ Image menuImage = PDERuntimePluginImages.get( PDERuntimePluginImages.IMG_MENU_OBJ );
+ text.setImage( "menu", menuImage ); //$NON-NLS-1$
+ }
+ } catch( SecurityException e ) {
+ PDERuntimePlugin.log( e );
+ } catch( NoSuchFieldException e ) {
+ PDERuntimePlugin.log( e );
+ } catch( IllegalArgumentException e ) {
+ PDERuntimePlugin.log( e );
+ } catch( IllegalAccessException e ) {
+ PDERuntimePlugin.log( e );
+ }
+ buffer.append( "</form>" ); //$NON-NLS-1$
+ Image idImage = PDERuntimePluginImages.get( PDERuntimePluginImages.IMG_ID_OBJ );
+ text.setImage( "id", idImage ); //$NON-NLS-1$
+ text.setText( buffer.toString(), true, false );
+ text.layout();
+ }
+}
diff --git a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/sections/ActiveSelectionSection.java b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/sections/ActiveSelectionSection.java
index 086c781..04d2f33 100644
--- a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/sections/ActiveSelectionSection.java
+++ b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/sections/ActiveSelectionSection.java
@@ -1,84 +1,91 @@
-/*******************************************************************************
- * Copyright (c) 2007, 20012 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:
- * Chris Aniszczyk <zx@us.ibm.com> - initial API and implementation
- *******************************************************************************/
-package org.eclipse.pde.internal.runtime.spy.sections;
-
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.pde.internal.runtime.PDERuntimeMessages;
-import org.eclipse.pde.internal.runtime.spy.SpyFormToolkit;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.forms.widgets.*;
-import org.eclipse.ui.handlers.HandlerUtil;
-
-
-/**
- * @since 3.4
- */
-public class ActiveSelectionSection implements ISpySection {
-
- public void build( ScrolledForm form, SpyFormToolkit toolkit, ExecutionEvent event ) {
- IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindow( event );
- if( window == null ) // if we don't have an active workbench, we don't have a valid selection to
-// analyze
- return;
- // analyze the selection
- ISelection selection = HandlerUtil.getCurrentSelection( event );
- Shell shell = HandlerUtil.getActiveShell( event );
- if( selection != null && window.getShell() == shell ) {
- Section section = toolkit.createSection( form.getBody(), ExpandableComposite.TITLE_BAR );
- section.clientVerticalSpacing = 9;
- section.setText( PDERuntimeMessages.get().SpyDialog_activeSelection_title );
- FormText text = toolkit.createFormText( section, true );
- section.setClient( text );
- TableWrapData td = new TableWrapData();
- td.align = TableWrapData.FILL;
- td.grabHorizontal = true;
- section.setLayoutData( td );
- // time to analyze the selection
- Class clazz = selection.getClass();
- StringBuffer buffer = new StringBuffer();
- buffer.append( "<form>" ); //$NON-NLS-1$
- buffer.append( toolkit.createClassSection( text,
- PDERuntimeMessages.get().SpyDialog_activeSelection_desc,
- new Class[] {
- clazz
- } ) );
- Class[] interfaces = clazz.getInterfaces();
- buffer.append( toolkit.createInterfaceSection( text,
- PDERuntimeMessages.get().SpyDialog_activeSelectionInterfaces_desc,
- interfaces ) );
- if( selection instanceof IStructuredSelection ) {
- IStructuredSelection ss = ( IStructuredSelection )selection;
- int size = ss.size();
- if( size == 1 ) {
- clazz = ss.getFirstElement().getClass();
- buffer.append( toolkit.createClassSection( text,
- PDERuntimeMessages.get().SpyDialog_activeSelectedElement_desc,
- new Class[] {
- clazz
- } ) );
- interfaces = clazz.getInterfaces();
- buffer.append( toolkit.createInterfaceSection( text,
- PDERuntimeMessages.get().SpyDialog_activeSelectedElementInterfaces_desc,
- interfaces ) );
- } else if( size > 1 ) {
- buffer.append( NLS.bind( PDERuntimeMessages.get().SpyDialog_activeSelectedElementsCount_desc,
- new Integer( size ) ) );
- }
- }
- buffer.append( "</form>" ); //$NON-NLS-1$
- text.setText( buffer.toString(), true, false );
- }
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2007, 2012 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:
+ * Chris Aniszczyk <zx@us.ibm.com> - initial API and implementation
+ * Arnaud Mergey - <a_mergey@yahoo.fr>
+ *******************************************************************************/
+package org.eclipse.pde.internal.runtime.spy.sections;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.pde.internal.runtime.PDERuntimeMessages;
+import org.eclipse.pde.internal.runtime.spy.SpyFormToolkit;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.forms.widgets.*;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+
+/**
+ * @since 3.4
+ */
+public class ActiveSelectionSection implements ISpySection {
+
+ @Override
+ public void build( ScrolledForm form, SpyFormToolkit toolkit, ExecutionEvent event ) {
+ IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindow( event );
+ if( window == null ) // if we don't have an active workbench, we don't have a valid selection to
+ // analyze
+ return;
+ // analyze the selection
+ ISelection selection = HandlerUtil.getCurrentSelection( event );
+ Shell shell = HandlerUtil.getActiveShell( event );
+ if( selection != null && window.getShell() == shell ) {
+ Section section = toolkit.createSection( form.getBody(), ExpandableComposite.TITLE_BAR );
+ section.clientVerticalSpacing = 9;
+ section.setText( PDERuntimeMessages.get().SpyDialog_activeSelection_title );
+ FormText text = toolkit.createFormText( section, true );
+ section.setClient( text );
+ TableWrapData td = new TableWrapData();
+ td.align = TableWrapData.FILL;
+ td.grabHorizontal = true;
+ section.setLayoutData( td );
+ // time to analyze the selection
+ Class clazz = selection.getClass();
+ StringBuffer buffer = new StringBuffer();
+ buffer.append( "<form>" ); //$NON-NLS-1$
+ buffer.append( toolkit.createClassSection( text,
+ PDERuntimeMessages
+ .get().SpyDialog_activeSelection_desc,
+ new Class[] {
+ clazz
+ } ) );
+ Class[] interfaces = clazz.getInterfaces();
+ buffer.append( toolkit.createInterfaceSection( text,
+ PDERuntimeMessages
+ .get().SpyDialog_activeSelectionInterfaces_desc,
+ interfaces ) );
+ if( selection instanceof IStructuredSelection ) {
+ IStructuredSelection ss = ( IStructuredSelection )selection;
+ int size = ss.size();
+ if( size == 1 ) {
+ clazz = ss.getFirstElement().getClass();
+ buffer.append( toolkit.createClassSection( text,
+ PDERuntimeMessages
+ .get().SpyDialog_activeSelectedElement_desc,
+ new Class[] {
+ clazz
+ } ) );
+ interfaces = clazz.getInterfaces();
+ buffer.append( toolkit.createInterfaceSection( text,
+ PDERuntimeMessages
+ .get().SpyDialog_activeSelectedElementInterfaces_desc,
+ interfaces ) );
+ } else if( size > 1 ) {
+ buffer
+ .append( NLS.bind( PDERuntimeMessages.get().SpyDialog_activeSelectedElementsCount_desc,
+ new Integer( size ) ) );
+ }
+ }
+ buffer.append( "</form>" ); //$NON-NLS-1$
+ text.setText( buffer.toString(), true, false );
+ }
+ }
+}
diff --git a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/sections/ActiveShellSection.java b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/sections/ActiveShellSection.java
index 9f134cb..043def9 100644
--- a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/sections/ActiveShellSection.java
+++ b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/sections/ActiveShellSection.java
@@ -1,55 +1,52 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 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:
- * Chris Aniszczyk <zx@us.ibm.com> - initial API and implementation
- *******************************************************************************/
-package org.eclipse.pde.internal.runtime.spy.sections;
-
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.pde.internal.runtime.PDERuntimeMessages;
-import org.eclipse.pde.internal.runtime.spy.SpyFormToolkit;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.forms.widgets.ExpandableComposite;
-import org.eclipse.ui.forms.widgets.FormText;
-import org.eclipse.ui.forms.widgets.ScrolledForm;
-import org.eclipse.ui.forms.widgets.Section;
-import org.eclipse.ui.forms.widgets.TableWrapData;
-import org.eclipse.ui.handlers.HandlerUtil;
-
-
-/**
- * @since 3.4
- */
-public class ActiveShellSection implements ISpySection {
-
- public void build( ScrolledForm form, SpyFormToolkit toolkit, ExecutionEvent event ) {
- final Shell shell = HandlerUtil.getActiveShell( event );
- Object object = shell.getData();
- if( object == null )
- return;
- Class clazz = object.getClass();
- Section section = toolkit.createSection( form.getBody(), ExpandableComposite.TITLE_BAR );
- section.clientVerticalSpacing = 9;
- section.setText( PDERuntimeMessages.get().SpyDialog_activeShell_title );
- FormText text = toolkit.createFormText( section, true );
- section.setClient( text );
- TableWrapData td = new TableWrapData();
- td.align = TableWrapData.FILL;
- td.grabHorizontal = true;
- section.setLayoutData( td );
- StringBuffer buffer = new StringBuffer();
- buffer.append( "<form>" ); //$NON-NLS-1$
- buffer.append( toolkit.createClassSection( text,
- PDERuntimeMessages.get().SpyDialog_activeShell_desc,
- new Class[] {
- clazz
- } ) );
- buffer.append( "</form>" ); //$NON-NLS-1$
- text.setText( buffer.toString(), true, false );
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2007, 2008 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:
+ * Chris Aniszczyk <zx@us.ibm.com> - initial API and implementation
+ * Arnaud Mergey - <a_mergey@yahoo.fr>
+ *******************************************************************************/
+package org.eclipse.pde.internal.runtime.spy.sections;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.pde.internal.runtime.PDERuntimeMessages;
+import org.eclipse.pde.internal.runtime.spy.SpyFormToolkit;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.forms.widgets.*;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+
+/**
+ * @since 3.4
+ */
+public class ActiveShellSection implements ISpySection {
+
+ @Override
+ public void build( ScrolledForm form, SpyFormToolkit toolkit, ExecutionEvent event ) {
+ final Shell shell = HandlerUtil.getActiveShell( event );
+ Object object = shell.getData();
+ if( object == null )
+ return;
+ Class clazz = object.getClass();
+ Section section = toolkit.createSection( form.getBody(), ExpandableComposite.TITLE_BAR );
+ section.clientVerticalSpacing = 9;
+ section.setText( PDERuntimeMessages.get().SpyDialog_activeShell_title );
+ FormText text = toolkit.createFormText( section, true );
+ section.setClient( text );
+ TableWrapData td = new TableWrapData();
+ td.align = TableWrapData.FILL;
+ td.grabHorizontal = true;
+ section.setLayoutData( td );
+ StringBuffer buffer = new StringBuffer();
+ buffer.append( "<form>" ); //$NON-NLS-1$
+ buffer.append( toolkit
+ .createClassSection( text, PDERuntimeMessages.get().SpyDialog_activeShell_desc, new Class[] {
+ clazz
+ } ) );
+ buffer.append( "</form>" ); //$NON-NLS-1$
+ text.setText( buffer.toString(), true, false );
+ }
+}
diff --git a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/sections/ActiveWizardSection.java b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/sections/ActiveWizardSection.java
index 62cf0fe..ff8fbc2 100644
--- a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/sections/ActiveWizardSection.java
+++ b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/sections/ActiveWizardSection.java
@@ -1,73 +1,68 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 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:
- * Chris Aniszczyk <zx@us.ibm.com> - initial API and implementation
- *******************************************************************************/
-package org.eclipse.pde.internal.runtime.spy.sections;
-
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.jface.wizard.IWizard;
-import org.eclipse.jface.wizard.IWizardPage;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.pde.internal.runtime.PDERuntimeMessages;
-import org.eclipse.pde.internal.runtime.PDERuntimePlugin;
-import org.eclipse.pde.internal.runtime.spy.SpyFormToolkit;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.forms.widgets.ExpandableComposite;
-import org.eclipse.ui.forms.widgets.FormText;
-import org.eclipse.ui.forms.widgets.ScrolledForm;
-import org.eclipse.ui.forms.widgets.Section;
-import org.eclipse.ui.forms.widgets.TableWrapData;
-import org.eclipse.ui.handlers.HandlerUtil;
-import org.osgi.framework.Bundle;
-import org.osgi.service.packageadmin.PackageAdmin;
-
-
-/**
- * @since 3.4
- */
-public class ActiveWizardSection implements ISpySection {
-
- public void build( ScrolledForm form, SpyFormToolkit toolkit, ExecutionEvent event ) {
- final Shell shell = HandlerUtil.getActiveShell( event );
- Object object = shell.getData();
- if( object == null )
- return;
- Class clazz = object.getClass();
- if( object instanceof WizardDialog ) {
- WizardDialog dialog = ( WizardDialog )object;
- IWizardPage page = dialog.getCurrentPage();
- IWizard wizard = page.getWizard();
- clazz = wizard.getClass();
- Section section = toolkit.createSection( form.getBody(), ExpandableComposite.TITLE_BAR );
- section.clientVerticalSpacing = 9;
- // the active wizard
- FormText text = toolkit.createFormText( section, true );
- section.setClient( text );
- TableWrapData td = new TableWrapData();
- td.align = TableWrapData.FILL;
- td.grabHorizontal = true;
- section.setLayoutData( td );
- StringBuffer buffer = new StringBuffer();
- buffer.append( "<form>" ); //$NON-NLS-1$
- section.setText( NLS.bind( PDERuntimeMessages.get().SpyDialog_activeWizard_title,
- wizard.getWindowTitle() ) );
- buffer.append( toolkit.createClassSection( text,
- PDERuntimeMessages.get().SpyDialog_activeWizard_desc,
- new Class[] {
- clazz
- } ) );
- PackageAdmin admin = PDERuntimePlugin.getDefault().getPackageAdmin();
- Bundle bundle = admin.getBundle( clazz );
- toolkit.generatePluginDetailsText( bundle, null, "wizard", buffer, text ); //$NON-NLS-1$
- buffer.append( "</form>" ); //$NON-NLS-1$
- text.setText( buffer.toString(), true, false );
- }
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2007, 2013 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:
+ * Chris Aniszczyk <zx@us.ibm.com> - initial API and implementation
+ * Arnaud Mergey - <a_mergey@yahoo.fr>
+ *******************************************************************************/
+package org.eclipse.pde.internal.runtime.spy.sections;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.jface.wizard.*;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.pde.internal.runtime.PDERuntimeMessages;
+import org.eclipse.pde.internal.runtime.spy.SpyFormToolkit;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.forms.widgets.*;
+import org.eclipse.ui.handlers.HandlerUtil;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.FrameworkUtil;
+
+
+/**
+ * @since 3.4
+ */
+public class ActiveWizardSection implements ISpySection {
+
+ @Override
+ public void build( ScrolledForm form, SpyFormToolkit toolkit, ExecutionEvent event ) {
+ final Shell shell = HandlerUtil.getActiveShell( event );
+ Object object = shell.getData();
+ if( object == null )
+ return;
+ Class clazz = object.getClass();
+ if( object instanceof WizardDialog ) {
+ WizardDialog dialog = ( WizardDialog )object;
+ IWizardPage page = dialog.getCurrentPage();
+ IWizard wizard = page.getWizard();
+ clazz = wizard.getClass();
+ Section section = toolkit.createSection( form.getBody(), ExpandableComposite.TITLE_BAR );
+ section.clientVerticalSpacing = 9;
+ // the active wizard
+ FormText text = toolkit.createFormText( section, true );
+ section.setClient( text );
+ TableWrapData td = new TableWrapData();
+ td.align = TableWrapData.FILL;
+ td.grabHorizontal = true;
+ section.setLayoutData( td );
+ StringBuffer buffer = new StringBuffer();
+ buffer.append( "<form>" ); //$NON-NLS-1$
+ section.setText( NLS.bind( PDERuntimeMessages.get().SpyDialog_activeWizard_title,
+ wizard.getWindowTitle() ) );
+ buffer.append( toolkit.createClassSection( text,
+ PDERuntimeMessages
+ .get().SpyDialog_activeWizard_desc,
+ new Class[] {
+ clazz
+ } ) );
+ Bundle bundle = FrameworkUtil.getBundle( clazz );
+ toolkit.generatePluginDetailsText( bundle, null, "wizard", buffer, text ); //$NON-NLS-1$
+ buffer.append( "</form>" ); //$NON-NLS-1$
+ text.setText( buffer.toString(), true, false );
+ }
+ }
+}
diff --git a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/sections/ISpySection.java b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/sections/ISpySection.java
index 529a38a..7eb7761 100644
--- a/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/sections/ISpySection.java
+++ b/bundles/org.eclipse.rap.pde.runtime/src/org/eclipse/pde/internal/runtime/spy/sections/ISpySection.java
@@ -1,24 +1,24 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 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:
- * Chris Aniszczyk <zx@us.ibm.com> - initial API and implementation
- *******************************************************************************/
-package org.eclipse.pde.internal.runtime.spy.sections;
-
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.pde.internal.runtime.spy.SpyFormToolkit;
-import org.eclipse.ui.forms.widgets.ScrolledForm;
-
-
-/**
- * @since 3.4
- */
-public interface ISpySection {
-
- public void build( ScrolledForm form, SpyFormToolkit toolkit, ExecutionEvent event );
-}
+/*******************************************************************************
+ * Copyright (c) 2007, 2008 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:
+ * Chris Aniszczyk <zx@us.ibm.com> - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.pde.internal.runtime.spy.sections;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.pde.internal.runtime.spy.SpyFormToolkit;
+import org.eclipse.ui.forms.widgets.ScrolledForm;
+
+/**
+ * @since 3.4
+ */
+public interface ISpySection {
+
+ public void build(ScrolledForm form, SpyFormToolkit toolkit, ExecutionEvent event);
+
+}
diff --git a/bundles/org.eclipse.rap.ui.views.log/.classpath b/bundles/org.eclipse.rap.ui.views.log/.classpath
index f1b3ad8..121e527 100644
--- a/bundles/org.eclipse.rap.ui.views.log/.classpath
+++ b/bundles/org.eclipse.rap.ui.views.log/.classpath
@@ -1,7 +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>
+<?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/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/bundles/org.eclipse.rap.ui.views.log/.settings/org.eclipse.core.resources.prefs b/bundles/org.eclipse.rap.ui.views.log/.settings/org.eclipse.core.resources.prefs
index 1dbea0b..fc21a08 100644
--- a/bundles/org.eclipse.rap.ui.views.log/.settings/org.eclipse.core.resources.prefs
+++ b/bundles/org.eclipse.rap.ui.views.log/.settings/org.eclipse.core.resources.prefs
@@ -1,7 +1,6 @@
-#Fri Oct 20 13:22:13 EDT 2006
-eclipse.preferences.version=1
-encoding//core/framework/org/eclipse/osgi/framework/internal/core/default.permissions=UTF-8
-encoding//core/framework/org/eclipse/osgi/framework/internal/core/implied.permissions=UTF-8
-encoding//core/framework/org/eclipse/osgi/framework/internal/core/osname.aliases=UTF-8
-encoding//core/framework/org/eclipse/osgi/framework/internal/core/processor.aliases=UTF-8
-encoding/<project>=ISO-8859-1
+eclipse.preferences.version=1
+encoding//core/framework/org/eclipse/osgi/framework/internal/core/default.permissions=UTF-8
+encoding//core/framework/org/eclipse/osgi/framework/internal/core/implied.permissions=UTF-8
+encoding//core/framework/org/eclipse/osgi/framework/internal/core/osname.aliases=UTF-8
+encoding//core/framework/org/eclipse/osgi/framework/internal/core/processor.aliases=UTF-8
+encoding/<project>=UTF-8
diff --git a/bundles/org.eclipse.rap.ui.views.log/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.rap.ui.views.log/.settings/org.eclipse.jdt.core.prefs
index 74d58dd..14d2b58 100644
--- a/bundles/org.eclipse.rap.ui.views.log/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.rap.ui.views.log/.settings/org.eclipse.jdt.core.prefs
@@ -7,6 +7,7 @@
org.eclipse.jdt.core.circularClasspath=error
org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
org.eclipse.jdt.core.codeComplete.argumentPrefixes=
org.eclipse.jdt.core.codeComplete.argumentSuffixes=
org.eclipse.jdt.core.codeComplete.fieldPrefixes=
@@ -15,32 +16,24 @@
org.eclipse.jdt.core.codeComplete.localSuffixes=
org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
-org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
-org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
-org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.4
+org.eclipse.jdt.core.compiler.compliance=1.6
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.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.discouragedReference=error
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
@@ -48,18 +41,14 @@
org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=error
org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning
org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=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
@@ -67,37 +56,24 @@
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.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=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.nullAnnotationInferenceConflict=error
org.eclipse.jdt.core.compiler.problem.nullReference=warning
-org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
-org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
-org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning
org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
@@ -105,13 +81,11 @@
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.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled
org.eclipse.jdt.core.compiler.problem.unusedImport=error
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=enabled
@@ -119,9 +93,10 @@
org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.3
+org.eclipse.jdt.core.compiler.source=1.6
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
@@ -132,15 +107,18 @@
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=0
@@ -160,26 +138,33 @@
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_lambda_body=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_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=false
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+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=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+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=do not insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
org.eclipse.jdt.core.formatter.comment.line_length=80
+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
@@ -189,10 +174,17 @@
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.indent_switchstatements_compare_to_switch=false
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_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=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
@@ -200,7 +192,7 @@
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_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
@@ -211,7 +203,7 @@
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_arguments=do not 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
@@ -240,10 +232,11 @@
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_lambda_arrow=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_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
@@ -258,12 +251,14 @@
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
@@ -272,7 +267,7 @@
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_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
@@ -287,11 +282,12 @@
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=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=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
@@ -314,6 +310,7 @@
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_lambda_arrow=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
@@ -342,6 +339,7 @@
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
@@ -351,6 +349,7 @@
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
@@ -360,19 +359,25 @@
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=800
+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=true
+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.put_empty_statement_on_new_line=true
org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
+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
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/bundles/org.eclipse.rap.ui.views.log/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.rap.ui.views.log/.settings/org.eclipse.jdt.ui.prefs
index 345668a..5625e78 100644
--- a/bundles/org.eclipse.rap.ui.views.log/.settings/org.eclipse.jdt.ui.prefs
+++ b/bundles/org.eclipse.rap.ui.views.log/.settings/org.eclipse.jdt.ui.prefs
@@ -1,64 +1,71 @@
-#Sun Dec 30 18:01:47 CST 2007
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_core
-formatter_settings_version=11
-org.eclipse.jdt.ui.exception.name=e
-org.eclipse.jdt.ui.gettersetter.use.is=true
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=;
-org.eclipse.jdt.ui.keywordthis=false
-org.eclipse.jdt.ui.ondemandthreshold=3
-org.eclipse.jdt.ui.overrideannotation=false
-org.eclipse.jdt.ui.staticondemandthreshold=99
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><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_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.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_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
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=org.eclipse.jdt.ui.default.eclipse_profile
+formatter_settings_version=12
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=3
+org.eclipse.jdt.ui.overrideannotation=false
+org.eclipse.jdt.ui.staticondemandthreshold=99
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates/>
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=false
+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_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=true
+sp_cleanup.insert_inferred_type_arguments=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=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_redundant_type_arguments=false
+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_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=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
+sp_cleanup.use_type_arguments=false
diff --git a/bundles/org.eclipse.rap.ui.views.log/.settings/org.eclipse.pde.prefs b/bundles/org.eclipse.rap.ui.views.log/.settings/org.eclipse.pde.prefs
index 0a9b231..88a12c6 100644
--- a/bundles/org.eclipse.rap.ui.views.log/.settings/org.eclipse.pde.prefs
+++ b/bundles/org.eclipse.rap.ui.views.log/.settings/org.eclipse.pde.prefs
@@ -1,28 +1,34 @@
-#Mon Dec 14 12:09:28 CST 2009
-compilers.f.unresolved-features=1
-compilers.f.unresolved-plugins=1
-compilers.incompatible-environment=1
-compilers.p.build=1
-compilers.p.build.missing.output=1
-compilers.p.deprecated=1
-compilers.p.discouraged-class=1
-compilers.p.internal=1
-compilers.p.missing-bundle-classpath-entries=1
-compilers.p.missing-packages=0
-compilers.p.missing-version-export-package=2
-compilers.p.missing-version-import-package=2
-compilers.p.missing-version-require-bundle=2
-compilers.p.no-required-att=0
-compilers.p.not-externalized-att=0
-compilers.p.unknown-attribute=1
-compilers.p.unknown-class=0
-compilers.p.unknown-element=1
-compilers.p.unknown-identifier=1
-compilers.p.unknown-resource=0
-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
-compilers.use-project=true
-eclipse.preferences.version=1
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=0
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=1
+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.matching-pom-version=0
+compilers.p.missing-packages=0
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.not-externalized-att=1
+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
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/bundles/org.eclipse.rap.ui.views.log/build.properties b/bundles/org.eclipse.rap.ui.views.log/build.properties
index 3c07e23..a204574 100644
--- a/bundles/org.eclipse.rap.ui.views.log/build.properties
+++ b/bundles/org.eclipse.rap.ui.views.log/build.properties
@@ -1,19 +1,19 @@
-###############################################################################
-# Copyright (c) 2005, 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
-###############################################################################
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
- .,\
- plugin.xml,\
- plugin.properties,\
- icons/,\
- about.html
-src.includes = about.html
+###############################################################################
+# Copyright (c) 2005, 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
+###############################################################################
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ plugin.properties,\
+ icons/,\
+ about.html
+src.includes = about.html
diff --git a/bundles/org.eclipse.rap.ui.views.log/plugin.xml b/bundles/org.eclipse.rap.ui.views.log/plugin.xml
index 1b1bf13..f492263 100644
--- a/bundles/org.eclipse.rap.ui.views.log/plugin.xml
+++ b/bundles/org.eclipse.rap.ui.views.log/plugin.xml
@@ -1,53 +1,76 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.2"?><!--
- Copyright (c) 2005, 2008 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>
- <extension
- point="org.eclipse.ui.views">
- <view
- name="%views.errorLog.name"
- icon="$nl$/icons/eview16/error_log.gif"
- category="org.eclipse.ui"
- class="org.eclipse.ui.internal.views.log.LogView"
- id="org.eclipse.pde.runtime.LogView">
- </view>
- </extension>
- <extension
- point="org.eclipse.ui.bindings">
- <key
- commandId="org.eclipse.ui.views.showView"
- schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
- sequence="M2+M3+Q L">
- <parameter
- id="org.eclipse.ui.views.showView.viewId"
- value="org.eclipse.pde.runtime.LogView">
- </parameter>
- </key>
- </extension>
- <extension
- point="org.eclipse.core.contenttype.contentTypes">
- <content-type
- base-type="org.eclipse.core.runtime.text"
- file-extensions="log"
- id="log"
- name="%content-type.name.log"
- priority="high">
- </content-type>
- </extension>
- <extension
- point="org.eclipse.rap.ui.serviceHandler">
- <serviceHandler
- class="org.eclipse.ui.internal.views.log.DownloadServiceHandler"
- id="org.eclipse.rap.ui.view.log.downloadLogFile">
- </serviceHandler>
- </extension>
-</plugin>
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?><!--
+ Copyright (c) 2005, 2008 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>
+ <extension
+ point="org.eclipse.ui.views">
+ <view
+ name="%views.errorLog.name"
+ icon="$nl$/icons/eview16/error_log.gif"
+ category="org.eclipse.ui"
+ class="org.eclipse.ui.internal.views.log.LogView"
+ id="org.eclipse.pde.runtime.LogView">
+ </view>
+ </extension>
+ <extension
+ point="org.eclipse.ui.perspectiveExtensions">
+ <perspectiveExtension
+ targetID="org.eclipse.ui.resourcePerspective">
+ <viewShortcut
+ id="org.eclipse.pde.runtime.LogView">
+ </viewShortcut>
+ </perspectiveExtension>
+ <perspectiveExtension
+ targetID="org.eclipse.pde.ui.PDEPerspective">
+ <viewShortcut
+ id="org.eclipse.pde.runtime.LogView">
+ </viewShortcut>
+ </perspectiveExtension>
+ </extension>
+ <extension
+ point="org.eclipse.ui.bindings">
+ <key
+ commandId="org.eclipse.ui.views.showView"
+ schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
+ sequence="M2+M3+Q L">
+ <parameter
+ id="org.eclipse.ui.views.showView.viewId"
+ value="org.eclipse.pde.runtime.LogView">
+ </parameter>
+ </key>
+ <key
+ platform="carbon"
+ schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
+ sequence="M2+M3+Q L">
+ </key>
+ <key
+ platform="carbon"
+ commandId="org.eclipse.ui.views.showView"
+ schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
+ sequence="M1+M3+Q L">
+ <parameter
+ id="org.eclipse.ui.views.showView.viewId"
+ value="org.eclipse.pde.runtime.LogView">
+ </parameter>
+ </key>
+ </extension>
+ <extension
+ point="org.eclipse.core.contenttype.contentTypes">
+ <content-type
+ base-type="org.eclipse.core.runtime.text"
+ file-extensions="log"
+ id="log"
+ name="%content-type.name.log"
+ priority="high">
+ </content-type>
+ </extension>
+</plugin>
diff --git a/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/AbstractEntry.java b/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/AbstractEntry.java
index 13d2644..02f53c4 100644
--- a/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/AbstractEntry.java
+++ b/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/AbstractEntry.java
@@ -1,119 +1,123 @@
-/*******************************************************************************
- * 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
- * Jacek Pospychala <jacek.pospychala@pl.ibm.com> - bug 207344
- *******************************************************************************/
-package org.eclipse.ui.internal.views.log;
-
-import java.io.PrintWriter;
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.core.runtime.PlatformObject;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-
-/**
- * Everything that appears in LogView is Abstract Entry. It provides composite pattern.
- */
-public abstract class AbstractEntry extends PlatformObject implements IWorkbenchAdapter {
-
- /**
- * The collection of direct children of this entry
- */
- private List children = new ArrayList();
- protected Object parent;
-
- /**
- * Adds the specified child entry to the listing of children.
- * If the specified child is <code>null</code>, no work is done
- *
- * @param child
- */
- public void addChild(AbstractEntry child) {
- if (child != null) {
- children.add(0, child);
- child.setParent(this);
- }
- }
-
- /**
- * @see IWorkbenchAdapter#getChildren(Object)
- */
- public Object[] getChildren(Object parent) {
- return children.toArray();
- }
-
- /**
- * @return true if this entry has children, false otherwise
- */
- public boolean hasChildren() {
- return children.size() > 0;
- }
-
- /**
- * @return the size of the child array
- *
- * TODO rename to getChildCount(), or something more meaningful
- */
- public int size() {
- return children.size();
- }
-
- /**
- * @see IWorkbenchAdapter#getImageDescriptor(Object)
- */
- public ImageDescriptor getImageDescriptor(Object object) {
- return null;
- }
-
- /**
- * @see IWorkbenchAdapter#getLabel(Object)
- */
- public String getLabel(Object o) {
- return null;
- }
-
- /**
- * @see IWorkbenchAdapter#getParent(Object)
- */
- public Object getParent(Object o) {
- return parent;
- }
-
- /**
- * Sets the parent of this entry
- * @param parent
- */
- public void setParent(AbstractEntry parent) {
- this.parent = parent;
- }
-
- /**
- * removes all of the children specified in the given listing
- *
- * @param list the list of children to remove
- */
- public void removeChildren(List list) {
- children.removeAll(list);
- }
-
- /**
- * Removes all of the children from this entry
- */
- public void removeAllChildren() {
- children.clear();
- }
-
- /**
- * Writes this entry information into the given {@link PrintWriter}
- *
- * @param writer
- */
- public abstract void write(PrintWriter writer);
-}
+/*******************************************************************************
+ * 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
+ * Jacek Pospychala <jacek.pospychala@pl.ibm.com> - bug 207344
+ *******************************************************************************/
+package org.eclipse.ui.internal.views.log;
+
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.List;
+import org.eclipse.core.runtime.PlatformObject;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.model.IWorkbenchAdapter;
+
+/**
+ * Everything that appears in LogView is Abstract Entry. It provides composite pattern.
+ */
+public abstract class AbstractEntry extends PlatformObject implements IWorkbenchAdapter {
+
+ /**
+ * The collection of direct children of this entry
+ */
+ private List children = new ArrayList();
+ protected Object parent;
+
+ /**
+ * Adds the specified child entry to the listing of children.
+ * If the specified child is <code>null</code>, no work is done
+ *
+ * @param child
+ */
+ public void addChild(AbstractEntry child) {
+ if (child != null) {
+ children.add(0, child);
+ child.setParent(this);
+ }
+ }
+
+ /**
+ * @see IWorkbenchAdapter#getChildren(Object)
+ */
+ @Override
+ public Object[] getChildren(Object parent) {
+ return children.toArray();
+ }
+
+ /**
+ * @return true if this entry has children, false otherwise
+ */
+ public boolean hasChildren() {
+ return children.size() > 0;
+ }
+
+ /**
+ * @return the size of the child array
+ *
+ * TODO rename to getChildCount(), or something more meaningful
+ */
+ public int size() {
+ return children.size();
+ }
+
+ /**
+ * @see IWorkbenchAdapter#getImageDescriptor(Object)
+ */
+ @Override
+ public ImageDescriptor getImageDescriptor(Object object) {
+ return null;
+ }
+
+ /**
+ * @see IWorkbenchAdapter#getLabel(Object)
+ */
+ @Override
+ public String getLabel(Object o) {
+ return null;
+ }
+
+ /**
+ * @see IWorkbenchAdapter#getParent(Object)
+ */
+ @Override
+ public Object getParent(Object o) {
+ return parent;
+ }
+
+ /**
+ * Sets the parent of this entry
+ * @param parent
+ */
+ public void setParent(AbstractEntry parent) {
+ this.parent = parent;
+ }
+
+ /**
+ * removes all of the children specified in the given listing
+ *
+ * @param list the list of children to remove
+ */
+ public void removeChildren(List list) {
+ children.removeAll(list);
+ }
+
+ /**
+ * Removes all of the children from this entry
+ */
+ public void removeAllChildren() {
+ children.clear();
+ }
+
+ /**
+ * Writes this entry information into the given {@link PrintWriter}
+ *
+ * @param writer
+ */
+ public abstract void write(PrintWriter writer);
+}
diff --git a/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/Activator.java b/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/Activator.java
index 0890ef9..fa6d160 100644
--- a/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/Activator.java
+++ b/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/Activator.java
@@ -1,91 +1,86 @@
-/*******************************************************************************
- * 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
- * Jacek Pospychala <jacek.pospychala@pl.ibm.com> - bug 202583
- *******************************************************************************/
-package org.eclipse.ui.internal.views.log;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.ImageRegistry;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.osgi.framework.BundleContext;
-
-/**
- * The activator class controls the plug-in life cycle
- */
-public class Activator extends AbstractUIPlugin {
-
- // The plug-in ID
- public static final String PLUGIN_ID = "org.eclipse.rap.ui.views.log"; //$NON-NLS-1$
-
- // The shared instance
- private static Activator plugin;
-
- /**
- * The constructor
- */
- public Activator() { // do nothing
- }
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
- */
- public void start(BundleContext context) throws Exception {
- super.start(context);
- plugin = this;
- }
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
- */
- public void stop(BundleContext context) throws Exception {
- plugin = null;
- super.stop(context);
- }
-
- public static Activator getDefault() {
- return plugin;
- }
-
- protected void initializeImageRegistry(ImageRegistry registry) {
- registry.put(SharedImages.DESC_PREV_EVENT, createImageDescriptor(SharedImages.DESC_PREV_EVENT));
- registry.put(SharedImages.DESC_NEXT_EVENT, createImageDescriptor(SharedImages.DESC_NEXT_EVENT));
-
- registry.put(SharedImages.DESC_ERROR_ST_OBJ, createImageDescriptor(SharedImages.DESC_ERROR_ST_OBJ));
- registry.put(SharedImages.DESC_ERROR_STACK_OBJ, createImageDescriptor(SharedImages.DESC_ERROR_STACK_OBJ));
- registry.put(SharedImages.DESC_INFO_ST_OBJ, createImageDescriptor(SharedImages.DESC_INFO_ST_OBJ));
- registry.put(SharedImages.DESC_OK_ST_OBJ, createImageDescriptor(SharedImages.DESC_OK_ST_OBJ));
- registry.put(SharedImages.DESC_WARNING_ST_OBJ, createImageDescriptor(SharedImages.DESC_WARNING_ST_OBJ));
- registry.put(SharedImages.DESC_HIERARCHICAL_LAYOUT_OBJ, createImageDescriptor(SharedImages.DESC_HIERARCHICAL_LAYOUT_OBJ));
-
- registry.put(SharedImages.DESC_CLEAR, createImageDescriptor(SharedImages.DESC_CLEAR));
- registry.put(SharedImages.DESC_CLEAR_DISABLED, createImageDescriptor(SharedImages.DESC_CLEAR_DISABLED));
- registry.put(SharedImages.DESC_REMOVE_LOG, createImageDescriptor(SharedImages.DESC_REMOVE_LOG));
- registry.put(SharedImages.DESC_REMOVE_LOG_DISABLED, createImageDescriptor(SharedImages.DESC_REMOVE_LOG_DISABLED));
- registry.put(SharedImages.DESC_EXPORT, createImageDescriptor(SharedImages.DESC_EXPORT));
- registry.put(SharedImages.DESC_EXPORT_DISABLED, createImageDescriptor(SharedImages.DESC_EXPORT_DISABLED));
- registry.put(SharedImages.DESC_FILTER, createImageDescriptor(SharedImages.DESC_FILTER));
- registry.put(SharedImages.DESC_FILTER_DISABLED, createImageDescriptor(SharedImages.DESC_FILTER_DISABLED));
- registry.put(SharedImages.DESC_IMPORT, createImageDescriptor(SharedImages.DESC_IMPORT));
- registry.put(SharedImages.DESC_IMPORT_DISABLED, createImageDescriptor(SharedImages.DESC_IMPORT_DISABLED));
- registry.put(SharedImages.DESC_OPEN_LOG, createImageDescriptor(SharedImages.DESC_OPEN_LOG));
- registry.put(SharedImages.DESC_OPEN_LOG_DISABLED, createImageDescriptor(SharedImages.DESC_OPEN_LOG_DISABLED));
- registry.put(SharedImages.DESC_PROPERTIES, createImageDescriptor(SharedImages.DESC_PROPERTIES));
- registry.put(SharedImages.DESC_PROPERTIES_DISABLED, createImageDescriptor(SharedImages.DESC_PROPERTIES_DISABLED));
- registry.put(SharedImages.DESC_READ_LOG, createImageDescriptor(SharedImages.DESC_READ_LOG));
- registry.put(SharedImages.DESC_READ_LOG_DISABLED, createImageDescriptor(SharedImages.DESC_READ_LOG_DISABLED));
- }
-
- private ImageDescriptor createImageDescriptor(String id) {
- return imageDescriptorFromPlugin(PLUGIN_ID, id);
- }
-
-}
+/*******************************************************************************
+ * 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
+ * Jacek Pospychala <jacek.pospychala@pl.ibm.com> - bug 202583
+ *******************************************************************************/
+package org.eclipse.ui.internal.views.log;
+
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.ImageRegistry;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.ui.views.log"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() { // do nothing
+ }
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+ @Override
+ protected void initializeImageRegistry(ImageRegistry registry) {
+ registry.put(SharedImages.DESC_PREV_EVENT, createImageDescriptor(SharedImages.DESC_PREV_EVENT));
+ registry.put(SharedImages.DESC_NEXT_EVENT, createImageDescriptor(SharedImages.DESC_NEXT_EVENT));
+
+ registry.put(SharedImages.DESC_ERROR_ST_OBJ, createImageDescriptor(SharedImages.DESC_ERROR_ST_OBJ));
+ registry.put(SharedImages.DESC_ERROR_STACK_OBJ, createImageDescriptor(SharedImages.DESC_ERROR_STACK_OBJ));
+ registry.put(SharedImages.DESC_INFO_ST_OBJ, createImageDescriptor(SharedImages.DESC_INFO_ST_OBJ));
+ registry.put(SharedImages.DESC_OK_ST_OBJ, createImageDescriptor(SharedImages.DESC_OK_ST_OBJ));
+ registry.put(SharedImages.DESC_WARNING_ST_OBJ, createImageDescriptor(SharedImages.DESC_WARNING_ST_OBJ));
+ registry.put(SharedImages.DESC_HIERARCHICAL_LAYOUT_OBJ, createImageDescriptor(SharedImages.DESC_HIERARCHICAL_LAYOUT_OBJ));
+
+ registry.put(SharedImages.DESC_CLEAR, createImageDescriptor(SharedImages.DESC_CLEAR));
+ registry.put(SharedImages.DESC_CLEAR_DISABLED, createImageDescriptor(SharedImages.DESC_CLEAR_DISABLED));
+ registry.put(SharedImages.DESC_REMOVE_LOG, createImageDescriptor(SharedImages.DESC_REMOVE_LOG));
+ registry.put(SharedImages.DESC_REMOVE_LOG_DISABLED, createImageDescriptor(SharedImages.DESC_REMOVE_LOG_DISABLED));
+ registry.put(SharedImages.DESC_EXPORT, createImageDescriptor(SharedImages.DESC_EXPORT));
+ registry.put(SharedImages.DESC_EXPORT_DISABLED, createImageDescriptor(SharedImages.DESC_EXPORT_DISABLED));
+ registry.put(SharedImages.DESC_FILTER, createImageDescriptor(SharedImages.DESC_FILTER));
+ registry.put(SharedImages.DESC_FILTER_DISABLED, createImageDescriptor(SharedImages.DESC_FILTER_DISABLED));
+ registry.put(SharedImages.DESC_IMPORT, createImageDescriptor(SharedImages.DESC_IMPORT));
+ registry.put(SharedImages.DESC_IMPORT_DISABLED, createImageDescriptor(SharedImages.DESC_IMPORT_DISABLED));
+ registry.put(SharedImages.DESC_OPEN_LOG, createImageDescriptor(SharedImages.DESC_OPEN_LOG));
+ registry.put(SharedImages.DESC_OPEN_LOG_DISABLED, createImageDescriptor(SharedImages.DESC_OPEN_LOG_DISABLED));
+ registry.put(SharedImages.DESC_PROPERTIES, createImageDescriptor(SharedImages.DESC_PROPERTIES));
+ registry.put(SharedImages.DESC_PROPERTIES_DISABLED, createImageDescriptor(SharedImages.DESC_PROPERTIES_DISABLED));
+ registry.put(SharedImages.DESC_READ_LOG, createImageDescriptor(SharedImages.DESC_READ_LOG));
+ registry.put(SharedImages.DESC_READ_LOG_DISABLED, createImageDescriptor(SharedImages.DESC_READ_LOG_DISABLED));
+ }
+
+ private ImageDescriptor createImageDescriptor(String id) {
+ return imageDescriptorFromPlugin(PLUGIN_ID, id);
+ }
+
+}
diff --git a/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/EventDetailsDialog.java b/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/EventDetailsDialog.java
index 60f2261..e75de97 100644
--- a/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/EventDetailsDialog.java
+++ b/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/EventDetailsDialog.java
@@ -1,845 +1,851 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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
- * Jacek Pospychala <jacek.pospychala@pl.ibm.com> - bugs 202583, 207466, 207344
- * Remy Chi Jian Suen <remy.suen@gmail.com> - bug 272985
- *******************************************************************************/
-package org.eclipse.ui.internal.views.log;
-
-import java.text.Collator;
-import java.text.DateFormat;
-import java.util.*;
-import java.util.List;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.jface.dialogs.*;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.viewers.*;
-import org.eclipse.jface.window.Window;
-import org.eclipse.rap.rwt.RWT;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.accessibility.AccessibleAdapter;
-import org.eclipse.swt.accessibility.AccessibleEvent;
-import org.eclipse.swt.custom.SashForm;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * Displays details about Log Entry.
- * Event information is split in three sections: details, stack trace and session. Details
- * contain event date, message and severity. Stack trace is displayed if an exception is bound
- * to event. Stack trace entries can be filtered.
- */
-public class EventDetailsDialog extends TrayDialog {
-
- public static final String FILTER_ENABLED = "detailsStackFilterEnabled"; //$NON-NLS-1$
- public static final String FILTER_LIST = "detailsStackFilterList"; //$NON-NLS-1$
-
- private IMemento memento;
-
- private AbstractEntry entry;
- private AbstractEntry parentEntry; // parent of the entry
- private AbstractEntry[] entryChildren; // children of the entry
-
- private LogViewLabelProvider labelProvider;
- private TreeViewer provider;
-
-// private static int COPY_ID = 22;
-
- private int childIndex = 0;
- private boolean isOpen;
- private boolean isLastChild;
- private boolean isAtEndOfLog;
-
- private Label dateLabel;
- private Label severityImageLabel;
- private Label severityLabel;
- private Text msgText;
- private Text stackTraceText;
- private Text sessionDataText;
-// private Clipboard clipboard;
-// private Button copyButton;
- private Button backButton;
- private Button nextButton;
- private SashForm sashForm;
-
- // sorting
- private Comparator comparator = null;
- Collator collator;
-
- // patterns for filtering stack traces
- private String[] stackFilterPatterns = null;
-
- // location configuration
- private Point dialogLocation;
- private Point dialogSize;
- private int[] sashWeights;
-
- private DateFormat dateFormat;
-
- /**
- *
- * @param parentShell shell in which dialog is displayed
- * @param selection entry initially selected and to be displayed
- * @param provider viewer
- * @param comparator comparator used to order all entries
- */
- protected EventDetailsDialog(Shell parentShell, IAdaptable selection, ISelectionProvider provider, Comparator comparator, IMemento memento) {
- super(parentShell);
- dateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, RWT.getLocale());
- this.provider = (TreeViewer) provider;
- labelProvider = (LogViewLabelProvider) this.provider.getLabelProvider();
- labelProvider.connect(this);
- this.entry = (AbstractEntry) selection;
- this.comparator = comparator;
- this.memento = memento;
- setShellStyle(SWT.MODELESS | SWT.MIN | SWT.MAX | SWT.RESIZE | SWT.CLOSE | SWT.BORDER | SWT.TITLE);
-// clipboard = new Clipboard(parentShell.getDisplay());
- initialize();
- collator = Collator.getInstance();
- readConfiguration();
- isLastChild = false;
- isAtEndOfLog = false;
- stackFilterPatterns = getFilters();
- }
-
- /*
- * @see org.eclipse.jface.window.Window#configureShell(Shell)
- */
- protected void configureShell(Shell newShell) {
- super.configureShell(newShell);
- PlatformUI.getWorkbench().getHelpSystem().setHelp(newShell, IHelpContextIds.LOG_EVENTDETAILS);
- }
-
- private void initialize() {
- parentEntry = (AbstractEntry) entry.getParent(entry);
- if (isChild(entry)) {
- setEntryChildren(parentEntry);
- } else {
- setEntryChildren();
- }
- resetChildIndex();
- isLastChild = false;
- isAtEndOfLog = false;
- }
-
- private void resetChildIndex() {
- if (entryChildren == null)
- return;
-
- LogEntry thisEntry = (LogEntry) entry;
-
- for (int i = 0; i < entryChildren.length; i++) {
- if (entryChildren[i] instanceof LogEntry) {
-
- LogEntry logEntry = (LogEntry) entryChildren[i];
-
- if (logEntry == thisEntry) {
- childIndex = i;
- return;
- }
- }
- }
-
- childIndex = 0;
- }
-
- private boolean isChild(AbstractEntry entry) {
- return entry.getParent(entry) != null;
- }
-
- public boolean isOpen() {
- return isOpen;
- }
-
- public int open() {
- isOpen = true;
- if (sashWeights == null) {
- int a, b, c;
- int height = getSashForm().getClientArea().height;
- if (height < 250) {
- a = b = c = height / 3;
- } else {
- a = 100; // Details section needs about 100
- c = 100; // Text area gets 100
- b = height - a - c; // Stack trace should take up majority of room
- }
- sashWeights = new int[] {a, b, c};
- }
- getSashForm().setWeights(sashWeights);
- return super.open();
- }
-
- public boolean close() {
-// if (clipboard != null) {
-// clipboard.dispose();
-// clipboard = null;
-// }
- storeSettings();
- isOpen = false;
- labelProvider.disconnect(this);
- return super.close();
- }
-
- public void create() {
- super.create();
-
- // dialog location
- if (dialogLocation != null)
- getShell().setLocation(dialogLocation);
-
- // dialog size
- if (dialogSize != null)
- getShell().setSize(dialogSize);
- else
- getShell().setSize(500, 550);
-
- applyDialogFont(buttonBar);
- getButton(IDialogConstants.OK_ID).setFocus();
- }
-
- protected void buttonPressed(int buttonId) {
- if (IDialogConstants.OK_ID == buttonId)
- okPressed();
- else if (IDialogConstants.CANCEL_ID == buttonId)
- cancelPressed();
- else if (IDialogConstants.BACK_ID == buttonId)
- backPressed();
- else if (IDialogConstants.NEXT_ID == buttonId)
- nextPressed();
-// else if (COPY_ID == buttonId)
-// copyPressed();
- }
-
- protected void backPressed() {
- if (childIndex > 0) {
- if (isLastChild && (isChild(entry))) {
- setEntryChildren(parentEntry);
- isLastChild = false;
- }
- childIndex--;
- entry = entryChildren[childIndex];
- } else {
- if (parentEntry instanceof LogEntry) {
- entry = parentEntry;
- if (isChild(entry)) {
- setEntryChildren((AbstractEntry) entry.getParent(entry));
- } else {
- setEntryChildren();
- }
- resetChildIndex();
- }
- }
- setEntrySelectionInTable();
- }
-
- protected void nextPressed() {
- if (childIndex < entryChildren.length - 1) {
- childIndex++;
- entry = entryChildren[childIndex];
- isLastChild = childIndex == entryChildren.length - 1;
- } else if (isChild(entry) && isLastChild && !isAtEndOfLog) {
- findNextSelectedChild(entry);
- } else { // at end of list but can branch into child elements - bug 58083
- setEntryChildren(entry);
- entry = entryChildren[0];
- isAtEndOfLog = entryChildren.length == 0;
- isLastChild = entryChildren.length == 0;
- }
- setEntrySelectionInTable();
- }
-
-// protected void copyPressed() {
-// StringWriter writer = new StringWriter();
-// PrintWriter pwriter = new PrintWriter(writer);
-//
-// entry.write(pwriter);
-// pwriter.flush();
-// String textVersion = writer.toString();
-// try {
-// pwriter.close();
-// writer.close();
-// } catch (IOException e) { // do nothing
-// }
-// // set the clipboard contents
-// clipboard.setContents(new Object[] {textVersion}, new Transfer[] {TextTransfer.getInstance()});
-// }
-
- public void setComparator(Comparator comparator) {
- this.comparator = comparator;
- updateProperties();
- }
-
- private void setComparator(byte sortType, final int sortOrder) {
- if (sortType == LogView.DATE) {
- comparator = new Comparator() {
- public int compare(Object e1, Object e2) {
- Date date1 = ((LogEntry) e1).getDate();
- Date date2 = ((LogEntry) e2).getDate();
- if (sortOrder == LogView.ASCENDING)
- return date1.getTime() < date2.getTime() ? LogView.DESCENDING : LogView.ASCENDING;
- return date1.getTime() > date2.getTime() ? LogView.DESCENDING : LogView.ASCENDING;
- }
- };
- } else if (sortType == LogView.PLUGIN) {
- comparator = new Comparator() {
- public int compare(Object e1, Object e2) {
- LogEntry entry1 = (LogEntry) e1;
- LogEntry entry2 = (LogEntry) e2;
- return collator.compare(entry1.getPluginId(), entry2.getPluginId()) * sortOrder;
- }
- };
- } else {
- comparator = new Comparator() {
- public int compare(Object e1, Object e2) {
- LogEntry entry1 = (LogEntry) e1;
- LogEntry entry2 = (LogEntry) e2;
- return collator.compare(entry1.getMessage(), entry2.getMessage()) * sortOrder;
- }
- };
- }
- }
-
- public void resetSelection(IAdaptable selectedEntry, byte sortType, int sortOrder) {
- setComparator(sortType, sortOrder);
- resetSelection(selectedEntry);
- }
-
- public void resetSelection(IAdaptable selectedEntry) {
- if (entry.equals(selectedEntry)) {
- updateProperties();
- return;
- }
- if (selectedEntry instanceof AbstractEntry) {
- entry = (AbstractEntry) selectedEntry;
- initialize();
- updateProperties();
- }
- }
-
- public void resetButtons() {
- backButton.setEnabled(false);
- nextButton.setEnabled(false);
- }
-
- private void setEntrySelectionInTable() {
- ISelection selection = new StructuredSelection(entry);
- provider.setSelection(selection);
- }
-
- public void updateProperties() {
- if (isChild(entry)) {
- parentEntry = (AbstractEntry) entry.getParent(entry);
- setEntryChildren(parentEntry);
- resetChildIndex();
- if (childIndex == entryChildren.length - 1)
- isLastChild = true;
- }
-
- if (entry instanceof LogEntry) {
- LogEntry logEntry = (LogEntry) entry;
-
- String strDate = dateFormat.format(logEntry.getDate());
- dateLabel.setText(strDate);
- severityImageLabel.setImage(labelProvider.getColumnImage(entry, 0));
- severityLabel.setText(logEntry.getSeverityText());
- msgText.setText(logEntry.getMessage() != null ? logEntry.getMessage() : ""); //$NON-NLS-1$
- String stack = logEntry.getStack();
-
- if (stack != null) {
- stack = filterStack(stack);
- stackTraceText.setText(stack);
- } else {
- stackTraceText.setText(Messages.get().EventDetailsDialog_noStack);
- }
-
- if (logEntry.getSession() != null) {
- String session = logEntry.getSession().getSessionData();
- if (session != null) {
- sessionDataText.setText(session);
- }
- }
-
- } else {
- dateLabel.setText(""); //$NON-NLS-1$
- severityImageLabel.setImage(null);
- severityLabel.setText(""); //$NON-NLS-1$
- msgText.setText(""); //$NON-NLS-1$
- stackTraceText.setText(""); //$NON-NLS-1$
- sessionDataText.setText(""); //$NON-NLS-1$
- }
-
- updateButtons();
- }
-
- private void updateButtons() {
- boolean isAtEnd = childIndex == entryChildren.length - 1;
- if (isChild(entry)) {
- boolean canGoToParent = (entry.getParent(entry) instanceof LogEntry);
- backButton.setEnabled((childIndex > 0) || canGoToParent);
- nextButton.setEnabled(nextChildExists(entry, parentEntry, entryChildren) || entry.hasChildren() || !isLastChild || !isAtEnd);
- } else {
- backButton.setEnabled(childIndex != 0);
- nextButton.setEnabled(!isAtEnd || entry.hasChildren());
- }
- }
-
- private void findNextSelectedChild(AbstractEntry originalEntry) {
- if (isChild(parentEntry)) {
- // we're at the end of the child list; find next parent
- // to select. If the parent is a child at the end of the child
- // list, find its next parent entry to select, etc.
-
- entry = parentEntry;
- setEntryChildren((AbstractEntry) parentEntry.getParent(parentEntry));
- parentEntry = (AbstractEntry) parentEntry.getParent(parentEntry);
- resetChildIndex();
- isLastChild = childIndex == entryChildren.length - 1;
- if (isLastChild) {
- findNextSelectedChild(originalEntry);
- } else {
- nextPressed();
- }
- } else if (parentEntry instanceof LogEntry) {
- entry = parentEntry;
- setEntryChildren();
- resetChildIndex();
- isLastChild = childIndex == entryChildren.length - 1;
- if (isLastChild) {
- if (isChild(entry)) {
- findNextSelectedChild(originalEntry);
- } else {
- entry = originalEntry;
- isAtEndOfLog = true;
- nextPressed();
- }
- } else {
- nextPressed();
- }
- } else {
- entry = originalEntry;
- isAtEndOfLog = true;
- nextPressed();
- }
- }
-
- private boolean nextChildExists(AbstractEntry originalEntry, AbstractEntry originalParent, AbstractEntry[] originalEntries) {
- if (isChild(parentEntry)) {
- // we're at the end of the child list; find next parent
- // to select. If the parent is a child at the end of the child
- // list, find its next parent entry to select, etc.
-
- entry = parentEntry;
- parentEntry = (AbstractEntry) entry.getParent(entry);
- setEntryChildren(parentEntry);
- resetChildIndex();
- if (childIndex == entryChildren.length - 1) {
- return nextChildExists(originalEntry, originalParent, originalEntries);
- }
- entry = originalEntry;
- parentEntry = originalParent;
- entryChildren = originalEntries;
- resetChildIndex();
- return true;
- } else if (parentEntry instanceof LogEntry) {
- entry = parentEntry;
- setEntryChildren();
- childIndex = -1;
- resetChildIndex();
- if ((childIndex != -1) && (childIndex < entryChildren.length - 1)) {
- entry = originalEntry;
- parentEntry = originalParent;
- entryChildren = originalEntries;
- resetChildIndex();
- return true;
- }
- }
- entry = originalEntry;
- parentEntry = originalParent;
- entryChildren = originalEntries;
- resetChildIndex();
- return false;
-
- }
-
- /**
- * Sets entry children (Prev-Next navigable) to top-level elements
- */
- private void setEntryChildren() {
- AbstractEntry[] children = getElements();
-
- if (comparator != null)
- Arrays.sort(children, comparator);
- entryChildren = new AbstractEntry[children.length];
-
- System.arraycopy(children, 0, entryChildren, 0, children.length);
- }
-
- /**
- * Sets entry children (Prev-Next navigable) to children of given entry
- */
- private void setEntryChildren(AbstractEntry entry) {
- Object[] children = entry.getChildren(entry);
-
- if (comparator != null)
- Arrays.sort(children, comparator);
-
- List result = new ArrayList();
- for (int i = 0; i < children.length; i++) {
- if (children[i] instanceof AbstractEntry) {
- result.add(children[i]);
- }
- }
-
- entryChildren = (AbstractEntry[]) result.toArray(new AbstractEntry[result.size()]);
- }
-
- public SashForm getSashForm() {
- return sashForm;
- }
-
- protected Control createDialogArea(Composite parent) {
- Composite container = new Composite(parent, SWT.NONE);
- GridLayout layout = new GridLayout();
- layout.numColumns = 1;
- container.setLayout(layout);
- GridData gd = new GridData(GridData.FILL_BOTH);
- container.setLayoutData(gd);
-
- createSashForm(container);
- createDetailsSection(getSashForm());
- createStackSection(getSashForm());
- createSessionSection(getSashForm());
-
- updateProperties();
- Dialog.applyDialogFont(container);
- return container;
- }
-
- private void createSashForm(Composite parent) {
- sashForm = new SashForm(parent, SWT.VERTICAL);
- GridLayout layout = new GridLayout();
- layout.marginHeight = layout.marginWidth = 0;
- sashForm.setLayout(layout);
- sashForm.setLayoutData(new GridData(GridData.FILL_BOTH));
- sashForm.setSashWidth(10);
- }
-
- private void createToolbarButtonBar(Composite parent) {
- Composite comp = new Composite(parent, SWT.NONE);
- GridLayout layout = new GridLayout();
- layout.marginWidth = layout.marginHeight = 0;
- //layout.numColumns = 1;
- comp.setLayout(layout);
- comp.setLayoutData(new GridData(GridData.FILL_VERTICAL));
- ((GridData) comp.getLayoutData()).verticalAlignment = SWT.BOTTOM;
-
- Composite container = new Composite(comp, SWT.NONE);
- layout = new GridLayout();
- layout.marginWidth = 0;
- layout.marginHeight = 0;
- container.setLayout(layout);
- container.setLayoutData(new GridData(GridData.FILL_BOTH));
-
- backButton = createButton(container, IDialogConstants.BACK_ID, "", false); //$NON-NLS-1$
- GridData gd = new GridData(GridData.FILL_HORIZONTAL);
- backButton.setLayoutData(gd);
- backButton.setToolTipText(Messages.get().EventDetailsDialog_previous);
- backButton.setImage(SharedImages.getImage(SharedImages.DESC_PREV_EVENT));
- backButton.getAccessible().addAccessibleListener(new AccessibleAdapter() {
- public void getName(AccessibleEvent e) {
- e.result = Messages.get().EventDetailsDialog_previous;
- }
- });
-
-// copyButton = createButton(container, COPY_ID, "", false); //$NON-NLS-1$
-// gd = new GridData();
-// copyButton.setLayoutData(gd);
-// copyButton.setImage(PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_TOOL_COPY));
-// copyButton.setToolTipText(Messages.get().EventDetailsDialog_copy);
-// copyButton.getAccessible().addAccessibleListener(new AccessibleAdapter() {
-// public void getName(AccessibleEvent e) {
-// e.result = Messages.get().EventDetailsDialog_copy;
-// }
-// });
-
- nextButton = createButton(container, IDialogConstants.NEXT_ID, "", false); //$NON-NLS-1$
- gd = new GridData();
- nextButton.setLayoutData(gd);
- nextButton.setToolTipText(Messages.get().EventDetailsDialog_next);
- nextButton.setImage(SharedImages.getImage(SharedImages.DESC_NEXT_EVENT));
- nextButton.getAccessible().addAccessibleListener(new AccessibleAdapter() {
- public void getName(AccessibleEvent e) {
- e.result = Messages.get().EventDetailsDialog_next;
- }
- });
-
- Button button = new Button(container, SWT.NONE);
- button.setToolTipText(Messages.get().EventDetailsDialog_ShowFilterDialog);
- button.setImage(SharedImages.getImage(SharedImages.DESC_FILTER));
- gd = new GridData();
- gd.horizontalAlignment = SWT.RIGHT;
- button.setLayoutData(gd);
- button.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- FilterDialog dialog = new FilterDialog(getShell(), memento);
- dialog.create();
- dialog.getShell().setText(Messages.get().EventDetailsDialog_FilterDialog);
- if (dialog.open() == Window.OK)
- // update filters and currently displayed stack trace
- stackFilterPatterns = getFilters();
- updateProperties();
- }
- });
- button.getAccessible().addAccessibleListener(new AccessibleAdapter() {
- public void getName(AccessibleEvent e) {
- e.result = Messages.get().EventDetailsDialog_FilterDialog;
- }
- });
-
- // set numColumns at the end, after all createButton() calls, which change this value
- layout.numColumns = 2;
- }
-
- protected void createButtonsForButtonBar(Composite parent) {
- // create OK button only by default
- createButton(parent, IDialogConstants.OK_ID, IDialogConstants.get().OK_LABEL, true);
- }
-
- private void createDetailsSection(Composite parent) {
- Composite container = new Composite(parent, SWT.NONE);
- GridLayout layout = new GridLayout();
- layout.marginWidth = layout.marginHeight = 0;
- layout.numColumns = 2;
- container.setLayout(layout);
- GridData data = new GridData(GridData.FILL_HORIZONTAL);
- data.heightHint = 200;
- container.setLayoutData(data);
-
- createTextSection(container);
- createToolbarButtonBar(container);
- }
-
- private void createTextSection(Composite parent) {
- Composite textContainer = new Composite(parent, SWT.NONE);
- GridLayout layout = new GridLayout();
- layout.numColumns = 3;
- layout.marginHeight = layout.marginWidth = 0;
- textContainer.setLayout(layout);
- textContainer.setLayoutData(new GridData(GridData.FILL_BOTH));
-
- Label label = new Label(textContainer, SWT.NONE);
- label.setText(Messages.get().EventDetailsDialog_date);
- dateLabel = new Label(textContainer, SWT.NULL);
- GridData gd = new GridData(GridData.FILL_HORIZONTAL);
- gd.horizontalSpan = 2;
- dateLabel.setLayoutData(gd);
-
- label = new Label(textContainer, SWT.NONE);
- label.setText(Messages.get().EventDetailsDialog_severity);
- severityImageLabel = new Label(textContainer, SWT.NULL);
- severityLabel = new Label(textContainer, SWT.NULL);
- gd = new GridData(GridData.FILL_HORIZONTAL);
- severityLabel.setLayoutData(gd);
-
- label = new Label(textContainer, SWT.NONE);
- label.setText(Messages.get().EventDetailsDialog_message);
- gd = new GridData(GridData.VERTICAL_ALIGN_BEGINNING);
- label.setLayoutData(gd);
- msgText = new Text(textContainer, SWT.MULTI | SWT.V_SCROLL | SWT.WRAP | SWT.BORDER);
- msgText.setEditable(false);
- gd = new GridData(GridData.FILL_BOTH | GridData.VERTICAL_ALIGN_BEGINNING | GridData.GRAB_VERTICAL);
- gd.horizontalSpan = 2;
- gd.grabExcessVerticalSpace = true;
- msgText.setLayoutData(gd);
- }
-
- private void createStackSection(Composite parent) {
- Composite container = new Composite(parent, SWT.NONE);
- GridLayout layout = new GridLayout(2, false);
- layout.marginHeight = 0;
- layout.marginWidth = 0;
- container.setLayout(layout);
- GridData gd = new GridData(GridData.FILL_BOTH);
- gd.heightHint = 200;
- container.setLayoutData(gd);
-
- Label label = new Label(container, SWT.NONE);
- label.setText(Messages.get().EventDetailsDialog_exception);
- gd = new GridData();
- gd.verticalAlignment = SWT.BOTTOM;
- label.setLayoutData(gd);
-
- stackTraceText = new Text(container, SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER);
- gd = new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL);
- gd.grabExcessHorizontalSpace = true;
- gd.horizontalSpan = 2;
- stackTraceText.setLayoutData(gd);
- stackTraceText.setEditable(false);
- }
-
- private void createSessionSection(Composite parent) {
- Composite container = new Composite(parent, SWT.NONE);
- GridLayout layout = new GridLayout();
- layout.marginHeight = 0;
- layout.marginWidth = 0;
- container.setLayout(layout);
- GridData gd = new GridData(GridData.FILL_HORIZONTAL);
- gd.heightHint = 100;
- container.setLayoutData(gd);
-
- Label label = new Label(container, SWT.NONE);
- label.setText(Messages.get().EventDetailsDialog_session);
- gd = new GridData(GridData.FILL_HORIZONTAL);
- label.setLayoutData(gd);
- sessionDataText = new Text(container, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
- gd = new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL);
- gd.grabExcessHorizontalSpace = true;
- sessionDataText.setLayoutData(gd);
- sessionDataText.setEditable(false);
- }
-
- /**
- * Loads filters from preferences.
- * @return filters from preferences or empty array
- *
- * @since 3.4
- */
- private String[] getFilters() {
-
- Boolean filterEnabled = memento.getBoolean(FILTER_ENABLED);
-
- String filtersString = memento.getString(FILTER_LIST);
-
- if ((filterEnabled == null) || (filterEnabled.booleanValue() == false) || filtersString == null) {
- return new String[0];
- }
-
- StringTokenizer st = new StringTokenizer(filtersString, ";"); //$NON-NLS-1$
- List filters = new ArrayList();
- while (st.hasMoreElements()) {
- String filter = st.nextToken();
- filters.add(filter);
- }
-
- return (String[]) filters.toArray(new String[filters.size()]);
- }
-
- /**
- * Filters stack trace.
- * Every stack trace line is compared against all patterns.
- * If line contains any of pattern strings, it's excluded from output.
- *
- * @returns filtered stack trace
- * @since 3.4
- */
- private String filterStack(String stack) {
- if (stackFilterPatterns.length == 0) {
- return stack;
- }
-
- StringTokenizer st = new StringTokenizer(stack, "\n"); //$NON-NLS-1$
- StringBuffer result = new StringBuffer();
- while (st.hasMoreTokens()) {
- String stackElement = st.nextToken();
-
- boolean filtered = false;
- int i = 0;
- while ((!filtered) && (i < stackFilterPatterns.length)) {
- filtered = stackElement.indexOf(stackFilterPatterns[i]) >= 0;
- i++;
- }
-
- if (!filtered) {
- result.append(stackElement).append("\n"); //$NON-NLS-1$
- }
- }
-
- return result.toString();
- }
-
- //--------------- configuration handling --------------
-
- /**
- * Stores the current state in the dialog settings.
- * @since 2.0
- */
- private void storeSettings() {
- writeConfiguration();
- }
-
- /**
- * Returns the dialog settings object used to share state
- * between several event detail dialogs.
- *
- * @return the dialog settings to be used
- */
- private IDialogSettings getDialogSettings() {
- IDialogSettings settings = Activator.getDefault().getDialogSettings();
- IDialogSettings dialogSettings = settings.getSection(getClass().getName());
- if (dialogSettings == null)
- dialogSettings = settings.addNewSection(getClass().getName());
- return dialogSettings;
- }
-
- /**
- * Initializes itself from the dialog settings with the same state
- * as at the previous invocation.
- */
- private void readConfiguration() {
- IDialogSettings s = getDialogSettings();
- try {
- int x = s.getInt("x"); //$NON-NLS-1$
- int y = s.getInt("y"); //$NON-NLS-1$
- dialogLocation = new Point(x, y);
-
- x = s.getInt("width"); //$NON-NLS-1$
- y = s.getInt("height"); //$NON-NLS-1$
- dialogSize = new Point(x, y);
-
- sashWeights = new int[3];
- sashWeights[0] = s.getInt("sashWidth1"); //$NON-NLS-1$
- sashWeights[1] = s.getInt("sashWidth2"); //$NON-NLS-1$
- sashWeights[2] = s.getInt("sashWidth3"); //$NON-NLS-1$
- } catch (NumberFormatException e) {
- dialogLocation = null;
- dialogSize = null;
- sashWeights = null;
- }
- }
-
- private void writeConfiguration() {
- IDialogSettings s = getDialogSettings();
- Point location = getShell().getLocation();
- s.put("x", location.x); //$NON-NLS-1$
- s.put("y", location.y); //$NON-NLS-1$
-
- Point size = getShell().getSize();
- s.put("width", size.x); //$NON-NLS-1$
- s.put("height", size.y); //$NON-NLS-1$
-
- sashWeights = getSashForm().getWeights();
- s.put("sashWidth1", sashWeights[0]); //$NON-NLS-1$
- s.put("sashWidth2", sashWeights[1]); //$NON-NLS-1$
- s.put("sashWidth3", sashWeights[2]); //$NON-NLS-1$
- }
-
- /**
- * Utility method to get all top level elements of the Log View
- * @return top level elements of the Log View
- */
- private AbstractEntry[] getElements() {
- return (AbstractEntry[]) ((ITreeContentProvider) provider.getContentProvider()).getElements(null);
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2000, 2013 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
+ * Jacek Pospychala <jacek.pospychala@pl.ibm.com> - bugs 202583, 207466, 207344
+ * Remy Chi Jian Suen <remy.suen@gmail.com> - bug 272985
+ * Arnaud Mergey - <a_mergey@yahoo.fr>
+ *******************************************************************************/
+package org.eclipse.ui.internal.views.log;
+
+import com.ibm.icu.text.DateFormat;
+import java.io.*;
+import java.text.Collator;
+import java.util.*;
+import java.util.List;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.jface.dialogs.*;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.viewers.*;
+import org.eclipse.jface.window.Window;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.accessibility.AccessibleAdapter;
+import org.eclipse.swt.accessibility.AccessibleEvent;
+import org.eclipse.swt.custom.SashForm;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.*;
+import org.eclipse.ui.*;
+
+
+/**
+ * Displays details about Log Entry. Event information is split in three sections: details, stack
+ * trace and session. Details contain event date, message and severity. Stack trace is displayed if
+ * an exception is bound to event. Stack trace entries can be filtered.
+ */
+public class EventDetailsDialog extends TrayDialog {
+
+ public static final String FILTER_ENABLED = "detailsStackFilterEnabled"; //$NON-NLS-1$
+ public static final String FILTER_LIST = "detailsStackFilterList"; //$NON-NLS-1$
+ private IMemento memento;
+ private AbstractEntry entry;
+ private AbstractEntry parentEntry; // parent of the entry
+ private AbstractEntry[] entryChildren; // children of the entry
+ private LogViewLabelProvider labelProvider;
+ private TreeViewer provider;
+ private static int COPY_ID = 22;
+ private int childIndex = 0;
+ private boolean isOpen;
+ private boolean isLastChild;
+ private boolean isAtEndOfLog;
+ private Label plugInIdLabel;
+ private Label severityImageLabel;
+ private Label severityLabel;
+ private Label dateLabel;
+ private Text msgText;
+ private Text stackTraceText;
+ private Text sessionDataText;
+// private Clipboard clipboard;
+ private Button copyButton;
+ private Button backButton;
+ private Button nextButton;
+ private SashForm sashForm;
+ // sorting
+ private Comparator comparator = null;
+ Collator collator;
+ // patterns for filtering stack traces
+ private String[] stackFilterPatterns = null;
+ // location configuration
+ private Point dialogLocation;
+ private Point dialogSize;
+ private int[] sashWeights;
+ private DateFormat dateFormat = DateFormat.getDateTimeInstance( DateFormat.SHORT,
+ DateFormat.SHORT );
+
+ /**
+ * @param parentShell shell in which dialog is displayed
+ * @param selection entry initially selected and to be displayed
+ * @param provider viewer
+ * @param comparator comparator used to order all entries
+ */
+ protected EventDetailsDialog( Shell parentShell,
+ IAdaptable selection,
+ ISelectionProvider provider,
+ Comparator comparator,
+ IMemento memento )
+ {
+ super( parentShell );
+ this.provider = ( TreeViewer )provider;
+ labelProvider = ( LogViewLabelProvider )this.provider.getLabelProvider();
+ labelProvider.connect( this );
+ this.entry = ( AbstractEntry )selection;
+ this.comparator = comparator;
+ this.memento = memento;
+ setShellStyle( SWT.MODELESS
+ | SWT.MIN
+ | SWT.MAX
+ | SWT.RESIZE
+ | SWT.CLOSE
+ | SWT.BORDER
+ | SWT.TITLE );
+// clipboard = new Clipboard( parentShell.getDisplay() );
+ initialize();
+ collator = Collator.getInstance();
+ readConfiguration();
+ isLastChild = false;
+ isAtEndOfLog = false;
+ stackFilterPatterns = getFilters();
+ }
+
+ /*
+ * @see org.eclipse.jface.window.Window#configureShell(Shell)
+ */
+ @Override
+ protected void configureShell( Shell newShell ) {
+ super.configureShell( newShell );
+ PlatformUI.getWorkbench().getHelpSystem().setHelp( newShell, IHelpContextIds.LOG_EVENTDETAILS );
+ }
+
+ private void initialize() {
+ parentEntry = ( AbstractEntry )entry.getParent( entry );
+ if( isChild( entry ) ) {
+ setEntryChildren( parentEntry );
+ } else {
+ setEntryChildren();
+ }
+ resetChildIndex();
+ isLastChild = false;
+ isAtEndOfLog = false;
+ }
+
+ private void resetChildIndex() {
+ if( entryChildren == null )
+ return;
+ LogEntry thisEntry = ( LogEntry )entry;
+ for( int i = 0; i < entryChildren.length; i++ ) {
+ if( entryChildren[ i ] instanceof LogEntry ) {
+ LogEntry logEntry = ( LogEntry )entryChildren[ i ];
+ if( logEntry == thisEntry ) {
+ childIndex = i;
+ return;
+ }
+ }
+ }
+ childIndex = 0;
+ }
+
+ private boolean isChild( AbstractEntry entry ) {
+ return entry.getParent( entry ) != null;
+ }
+
+ public boolean isOpen() {
+ return isOpen;
+ }
+
+ @Override
+ public int open() {
+ isOpen = true;
+ if( sashWeights == null ) {
+ int a, b, c;
+ int height = getSashForm().getClientArea().height;
+ if( height < 250 ) {
+ a = b = c = height / 3;
+ } else {
+ a = 100; // Details section needs about 100
+ c = 100; // Text area gets 100
+ b = height - a - c; // Stack trace should take up majority of room
+ }
+ sashWeights = new int[] {
+ a,
+ b,
+ c
+ };
+ }
+ getSashForm().setWeights( sashWeights );
+ return super.open();
+ }
+
+ @Override
+ public boolean close() {
+// if( clipboard != null ) {
+// clipboard.dispose();
+// clipboard = null;
+// }
+ storeSettings();
+ isOpen = false;
+ labelProvider.disconnect( this );
+ return super.close();
+ }
+
+ @Override
+ public void create() {
+ super.create();
+ // dialog location
+ if( dialogLocation != null )
+ getShell().setLocation( dialogLocation );
+ // dialog size
+ if( dialogSize != null )
+ getShell().setSize( dialogSize );
+ else
+ getShell().setSize( 500, 550 );
+ applyDialogFont( buttonBar );
+ getButton( IDialogConstants.OK_ID ).setFocus();
+ }
+
+ @Override
+ protected void buttonPressed( int buttonId ) {
+ if( IDialogConstants.OK_ID == buttonId )
+ okPressed();
+ else if( IDialogConstants.CANCEL_ID == buttonId )
+ cancelPressed();
+ else if( IDialogConstants.BACK_ID == buttonId )
+ backPressed();
+ else if( IDialogConstants.NEXT_ID == buttonId )
+ nextPressed();
+ else if( COPY_ID == buttonId )
+ copyPressed();
+ }
+
+ protected void backPressed() {
+ if( childIndex > 0 ) {
+ if( isLastChild && ( isChild( entry ) ) ) {
+ setEntryChildren( parentEntry );
+ isLastChild = false;
+ }
+ childIndex-- ;
+ entry = entryChildren[ childIndex ];
+ } else {
+ if( parentEntry instanceof LogEntry ) {
+ entry = parentEntry;
+ if( isChild( entry ) ) {
+ setEntryChildren( ( AbstractEntry )entry.getParent( entry ) );
+ } else {
+ setEntryChildren();
+ }
+ resetChildIndex();
+ }
+ }
+ setEntrySelectionInTable();
+ }
+
+ protected void nextPressed() {
+ if( childIndex < entryChildren.length - 1 ) {
+ childIndex++ ;
+ entry = entryChildren[ childIndex ];
+ isLastChild = childIndex == entryChildren.length - 1;
+ } else if( isChild( entry ) && isLastChild && !isAtEndOfLog ) {
+ findNextSelectedChild( entry );
+ } else { // at end of list but can branch into child elements - bug 58083
+ setEntryChildren( entry );
+ entry = entryChildren[ 0 ];
+ isAtEndOfLog = entryChildren.length == 0;
+ isLastChild = entryChildren.length == 0;
+ }
+ setEntrySelectionInTable();
+ }
+
+ protected void copyPressed() {
+ StringWriter writer = new StringWriter();
+ PrintWriter pwriter = new PrintWriter( writer );
+ entry.write( pwriter );
+ pwriter.flush();
+ String textVersion = writer.toString();
+ try {
+ pwriter.close();
+ writer.close();
+ } catch( IOException e ) { // do nothing
+ }
+ // set the clipboard contents
+// clipboard.setContents( new Object[] {
+// textVersion
+// }, new Transfer[] {
+// TextTransfer.getInstance()
+// } );
+ }
+
+ public void setComparator( Comparator comparator ) {
+ this.comparator = comparator;
+ updateProperties();
+ }
+
+ private void setComparator( byte sortType, final int sortOrder ) {
+ if( sortType == LogView.DATE ) {
+ comparator = new Comparator() {
+
+ @Override
+ public int compare( Object e1, Object e2 ) {
+ Date date1 = ( ( LogEntry )e1 ).getDate();
+ Date date2 = ( ( LogEntry )e2 ).getDate();
+ if( sortOrder == LogView.ASCENDING )
+ return date1.getTime() < date2.getTime()
+ ? LogView.DESCENDING
+ : LogView.ASCENDING;
+ return date1.getTime() > date2.getTime()
+ ? LogView.DESCENDING
+ : LogView.ASCENDING;
+ }
+ };
+ } else if( sortType == LogView.PLUGIN ) {
+ comparator = new Comparator() {
+
+ @Override
+ public int compare( Object e1, Object e2 ) {
+ LogEntry entry1 = ( LogEntry )e1;
+ LogEntry entry2 = ( LogEntry )e2;
+ return collator.compare( entry1.getPluginId(), entry2.getPluginId() ) * sortOrder;
+ }
+ };
+ } else {
+ comparator = new Comparator() {
+
+ @Override
+ public int compare( Object e1, Object e2 ) {
+ LogEntry entry1 = ( LogEntry )e1;
+ LogEntry entry2 = ( LogEntry )e2;
+ return collator.compare( entry1.getMessage(), entry2.getMessage() ) * sortOrder;
+ }
+ };
+ }
+ }
+
+ public void resetSelection( IAdaptable selectedEntry, byte sortType, int sortOrder ) {
+ setComparator( sortType, sortOrder );
+ resetSelection( selectedEntry );
+ }
+
+ public void resetSelection( IAdaptable selectedEntry ) {
+ if( entry.equals( selectedEntry ) ) {
+ updateProperties();
+ return;
+ }
+ if( selectedEntry instanceof AbstractEntry ) {
+ entry = ( AbstractEntry )selectedEntry;
+ initialize();
+ updateProperties();
+ }
+ }
+
+ public void resetButtons() {
+ backButton.setEnabled( false );
+ nextButton.setEnabled( false );
+ }
+
+ private void setEntrySelectionInTable() {
+ ISelection selection = new StructuredSelection( entry );
+ provider.setSelection( selection );
+ }
+
+ public void updateProperties() {
+ if( isChild( entry ) ) {
+ parentEntry = ( AbstractEntry )entry.getParent( entry );
+ setEntryChildren( parentEntry );
+ resetChildIndex();
+ if( childIndex == entryChildren.length - 1 )
+ isLastChild = true;
+ }
+ if( entry instanceof LogEntry ) {
+ LogEntry logEntry = ( LogEntry )entry;
+ String strDate = dateFormat.format( logEntry.getDate() );
+ dateLabel.setText( strDate );
+ plugInIdLabel.setText( logEntry.getPluginId() );
+ severityImageLabel.setImage( labelProvider.getColumnImage( entry, 0 ) );
+ severityLabel.setText( logEntry.getSeverityText() );
+ msgText.setText( logEntry.getMessage() != null
+ ? logEntry.getMessage()
+ : "" ); //$NON-NLS-1$
+ String stack = logEntry.getStack();
+ if( stack != null ) {
+ stack = filterStack( stack );
+ stackTraceText.setText( stack );
+ } else {
+ stackTraceText.setText( Messages.get().EventDetailsDialog_noStack );
+ }
+ if( logEntry.getSession() != null ) {
+ String session = logEntry.getSession().getSessionData();
+ if( session != null ) {
+ sessionDataText.setText( session );
+ }
+ }
+ } else {
+ dateLabel.setText( "" ); //$NON-NLS-1$
+ severityImageLabel.setImage( null );
+ severityLabel.setText( "" ); //$NON-NLS-1$
+ msgText.setText( "" ); //$NON-NLS-1$
+ stackTraceText.setText( "" ); //$NON-NLS-1$
+ sessionDataText.setText( "" ); //$NON-NLS-1$
+ }
+ updateButtons();
+ }
+
+ private void updateButtons() {
+ boolean isAtEnd = childIndex == entryChildren.length - 1;
+ if( isChild( entry ) ) {
+ boolean canGoToParent = ( entry.getParent( entry ) instanceof LogEntry );
+ backButton.setEnabled( ( childIndex > 0 ) || canGoToParent );
+ nextButton.setEnabled( nextChildExists( entry, parentEntry, entryChildren )
+ || entry.hasChildren()
+ || !isLastChild
+ || !isAtEnd );
+ } else {
+ backButton.setEnabled( childIndex != 0 );
+ nextButton.setEnabled( !isAtEnd || entry.hasChildren() );
+ }
+ }
+
+ private void findNextSelectedChild( AbstractEntry originalEntry ) {
+ if( isChild( parentEntry ) ) {
+ // we're at the end of the child list; find next parent
+ // to select. If the parent is a child at the end of the child
+ // list, find its next parent entry to select, etc.
+ entry = parentEntry;
+ setEntryChildren( ( AbstractEntry )parentEntry.getParent( parentEntry ) );
+ parentEntry = ( AbstractEntry )parentEntry.getParent( parentEntry );
+ resetChildIndex();
+ isLastChild = childIndex == entryChildren.length - 1;
+ if( isLastChild ) {
+ findNextSelectedChild( originalEntry );
+ } else {
+ nextPressed();
+ }
+ } else if( parentEntry instanceof LogEntry ) {
+ entry = parentEntry;
+ setEntryChildren();
+ resetChildIndex();
+ isLastChild = childIndex == entryChildren.length - 1;
+ if( isLastChild ) {
+ if( isChild( entry ) ) {
+ findNextSelectedChild( originalEntry );
+ } else {
+ entry = originalEntry;
+ isAtEndOfLog = true;
+ nextPressed();
+ }
+ } else {
+ nextPressed();
+ }
+ } else {
+ entry = originalEntry;
+ isAtEndOfLog = true;
+ nextPressed();
+ }
+ }
+
+ private boolean nextChildExists( AbstractEntry originalEntry,
+ AbstractEntry originalParent,
+ AbstractEntry[] originalEntries )
+ {
+ if( isChild( parentEntry ) ) {
+ // we're at the end of the child list; find next parent
+ // to select. If the parent is a child at the end of the child
+ // list, find its next parent entry to select, etc.
+ entry = parentEntry;
+ parentEntry = ( AbstractEntry )entry.getParent( entry );
+ setEntryChildren( parentEntry );
+ resetChildIndex();
+ if( childIndex == entryChildren.length - 1 ) {
+ return nextChildExists( originalEntry, originalParent, originalEntries );
+ }
+ entry = originalEntry;
+ parentEntry = originalParent;
+ entryChildren = originalEntries;
+ resetChildIndex();
+ return true;
+ } else if( parentEntry instanceof LogEntry ) {
+ entry = parentEntry;
+ setEntryChildren();
+ childIndex = -1;
+ resetChildIndex();
+ if( ( childIndex != -1 ) && ( childIndex < entryChildren.length - 1 ) ) {
+ entry = originalEntry;
+ parentEntry = originalParent;
+ entryChildren = originalEntries;
+ resetChildIndex();
+ return true;
+ }
+ }
+ entry = originalEntry;
+ parentEntry = originalParent;
+ entryChildren = originalEntries;
+ resetChildIndex();
+ return false;
+ }
+
+ /**
+ * Sets entry children (Prev-Next navigable) to top-level elements
+ */
+ private void setEntryChildren() {
+ AbstractEntry[] children = getElements();
+ if( comparator != null )
+ Arrays.sort( children, comparator );
+ entryChildren = new AbstractEntry[ children.length ];
+ System.arraycopy( children, 0, entryChildren, 0, children.length );
+ }
+
+ /**
+ * Sets entry children (Prev-Next navigable) to children of given entry
+ */
+ private void setEntryChildren( AbstractEntry entry ) {
+ Object[] children = entry.getChildren( entry );
+ if( comparator != null )
+ Arrays.sort( children, comparator );
+ List result = new ArrayList();
+ for( int i = 0; i < children.length; i++ ) {
+ if( children[ i ] instanceof AbstractEntry ) {
+ result.add( children[ i ] );
+ }
+ }
+ entryChildren = ( AbstractEntry[] )result.toArray( new AbstractEntry[ result.size() ] );
+ }
+
+ public SashForm getSashForm() {
+ return sashForm;
+ }
+
+ @Override
+ protected Control createDialogArea( Composite parent ) {
+ Composite container = new Composite( parent, SWT.NONE );
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 1;
+ container.setLayout( layout );
+ GridData gd = new GridData( GridData.FILL_BOTH );
+ container.setLayoutData( gd );
+ createSashForm( container );
+ createDetailsSection( getSashForm() );
+ createStackSection( getSashForm() );
+ createSessionSection( getSashForm() );
+ updateProperties();
+ Dialog.applyDialogFont( container );
+ return container;
+ }
+
+ private void createSashForm( Composite parent ) {
+ sashForm = new SashForm( parent, SWT.VERTICAL );
+ GridLayout layout = new GridLayout();
+ layout.marginHeight = layout.marginWidth = 0;
+ sashForm.setLayout( layout );
+ sashForm.setLayoutData( new GridData( GridData.FILL_BOTH ) );
+ sashForm.setSashWidth( 10 );
+ }
+
+ private void createToolbarButtonBar( Composite parent ) {
+ Composite comp = new Composite( parent, SWT.NONE );
+ GridLayout layout = new GridLayout();
+ layout.marginWidth = layout.marginHeight = 0;
+ // layout.numColumns = 1;
+ comp.setLayout( layout );
+ comp.setLayoutData( new GridData( GridData.FILL_VERTICAL ) );
+ ( ( GridData )comp.getLayoutData() ).verticalAlignment = SWT.BOTTOM;
+ Composite container = new Composite( comp, SWT.NONE );
+ layout = new GridLayout();
+ layout.marginWidth = 0;
+ layout.marginHeight = 0;
+ container.setLayout( layout );
+ container.setLayoutData( new GridData( GridData.FILL_BOTH ) );
+ backButton = createButton( container, IDialogConstants.BACK_ID, "", false ); //$NON-NLS-1$
+ GridData gd = new GridData( GridData.FILL_HORIZONTAL );
+ backButton.setLayoutData( gd );
+ backButton.setToolTipText( Messages.get().EventDetailsDialog_previous );
+ backButton.setImage( SharedImages.getImage( SharedImages.DESC_PREV_EVENT ) );
+ backButton.getAccessible().addAccessibleListener( new AccessibleAdapter() {
+
+ @Override
+ public void getName( AccessibleEvent e ) {
+ e.result = Messages.get().EventDetailsDialog_previous;
+ }
+ } );
+ copyButton = createButton( container, COPY_ID, "", false ); //$NON-NLS-1$
+ gd = new GridData();
+ copyButton.setLayoutData( gd );
+ copyButton.setImage( PlatformUI.getWorkbench()
+ .getSharedImages()
+ .getImage( ISharedImages.IMG_TOOL_COPY ) );
+ copyButton.setToolTipText( Messages.get().EventDetailsDialog_copy );
+ copyButton.getAccessible().addAccessibleListener( new AccessibleAdapter() {
+
+ @Override
+ public void getName( AccessibleEvent e ) {
+ e.result = Messages.get().EventDetailsDialog_copy;
+ }
+ } );
+ nextButton = createButton( container, IDialogConstants.NEXT_ID, "", false ); //$NON-NLS-1$
+ gd = new GridData();
+ nextButton.setLayoutData( gd );
+ nextButton.setToolTipText( Messages.get().EventDetailsDialog_next );
+ nextButton.setImage( SharedImages.getImage( SharedImages.DESC_NEXT_EVENT ) );
+ nextButton.getAccessible().addAccessibleListener( new AccessibleAdapter() {
+
+ @Override
+ public void getName( AccessibleEvent e ) {
+ e.result = Messages.get().EventDetailsDialog_next;
+ }
+ } );
+ Button button = new Button( container, SWT.NONE );
+ button.setToolTipText( Messages.get().EventDetailsDialog_ShowFilterDialog );
+ button.setImage( SharedImages.getImage( SharedImages.DESC_FILTER ) );
+ gd = new GridData();
+ gd.horizontalAlignment = SWT.RIGHT;
+ button.setLayoutData( gd );
+ button.addSelectionListener( new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected( SelectionEvent e ) {
+ FilterDialog dialog = new FilterDialog( getShell(), memento );
+ dialog.create();
+ dialog.getShell().setText( Messages.get().EventDetailsDialog_FilterDialog );
+ if( dialog.open() == Window.OK )
+ // update filters and currently displayed stack trace
+ stackFilterPatterns = getFilters();
+ updateProperties();
+ }
+ } );
+ button.getAccessible().addAccessibleListener( new AccessibleAdapter() {
+
+ @Override
+ public void getName( AccessibleEvent e ) {
+ e.result = Messages.get().EventDetailsDialog_FilterDialog;
+ }
+ } );
+ // set numColumns at the end, after all createButton() calls, which change this value
+ layout.numColumns = 2;
+ }
+
+ @Override
+ protected void createButtonsForButtonBar( Composite parent ) {
+ // create OK button only by default
+ createButton( parent, IDialogConstants.OK_ID, IDialogConstants.get().OK_LABEL, true );
+ }
+
+ private void createDetailsSection( Composite parent ) {
+ Composite container = new Composite( parent, SWT.NONE );
+ GridLayout layout = new GridLayout();
+ layout.marginWidth = layout.marginHeight = 0;
+ layout.numColumns = 2;
+ container.setLayout( layout );
+ GridData data = new GridData( GridData.FILL_HORIZONTAL );
+ data.heightHint = 200;
+ container.setLayoutData( data );
+ createTextSection( container );
+ createToolbarButtonBar( container );
+ }
+
+ private void createTextSection( Composite parent ) {
+ Composite textContainer = new Composite( parent, SWT.NONE );
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 3;
+ layout.marginHeight = layout.marginWidth = 0;
+ textContainer.setLayout( layout );
+ textContainer.setLayoutData( new GridData( GridData.FILL_BOTH ) );
+ Label label = new Label( textContainer, SWT.NONE );
+ label.setText( Messages.get().EventDetailsDialog_plugIn );
+ plugInIdLabel = new Label( textContainer, SWT.NONE );
+ GridData gd = new GridData( GridData.FILL_HORIZONTAL );
+ gd.horizontalSpan = 2;
+ plugInIdLabel.setLayoutData( gd );
+ label = new Label( textContainer, SWT.NONE );
+ label.setText( Messages.get().EventDetailsDialog_severity );
+ severityImageLabel = new Label( textContainer, SWT.NONE );
+ severityLabel = new Label( textContainer, SWT.NONE );
+ gd = new GridData( GridData.FILL_HORIZONTAL );
+ severityLabel.setLayoutData( gd );
+ label = new Label( textContainer, SWT.NONE );
+ label.setText( Messages.get().EventDetailsDialog_date );
+ dateLabel = new Label( textContainer, SWT.NONE );
+ gd = new GridData( GridData.FILL_HORIZONTAL );
+ gd.horizontalSpan = 2;
+ dateLabel.setLayoutData( gd );
+ label = new Label( textContainer, SWT.NONE );
+ label.setText( Messages.get().EventDetailsDialog_message );
+ gd = new GridData( GridData.VERTICAL_ALIGN_BEGINNING );
+ label.setLayoutData( gd );
+ msgText = new Text( textContainer, SWT.MULTI | SWT.V_SCROLL | SWT.WRAP | SWT.BORDER );
+ msgText.setEditable( false );
+ gd = new GridData( GridData.FILL_BOTH
+ | GridData.VERTICAL_ALIGN_BEGINNING
+ | GridData.GRAB_VERTICAL );
+ gd.horizontalSpan = 2;
+ gd.grabExcessVerticalSpace = true;
+ msgText.setLayoutData( gd );
+ }
+
+ private void createStackSection( Composite parent ) {
+ Composite container = new Composite( parent, SWT.NONE );
+ GridLayout layout = new GridLayout( 2, false );
+ layout.marginHeight = 0;
+ layout.marginWidth = 0;
+ container.setLayout( layout );
+ GridData gd = new GridData( GridData.FILL_BOTH );
+ gd.heightHint = 200;
+ container.setLayoutData( gd );
+ Label label = new Label( container, SWT.NONE );
+ label.setText( Messages.get().EventDetailsDialog_exception );
+ gd = new GridData();
+ gd.verticalAlignment = SWT.BOTTOM;
+ label.setLayoutData( gd );
+ stackTraceText = new Text( container, SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER );
+ gd = new GridData( GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL );
+ gd.grabExcessHorizontalSpace = true;
+ gd.horizontalSpan = 2;
+ stackTraceText.setLayoutData( gd );
+ stackTraceText.setEditable( false );
+ }
+
+ private void createSessionSection( Composite parent ) {
+ Composite container = new Composite( parent, SWT.NONE );
+ GridLayout layout = new GridLayout();
+ layout.marginHeight = 0;
+ layout.marginWidth = 0;
+ container.setLayout( layout );
+ GridData gd = new GridData( GridData.FILL_HORIZONTAL );
+ gd.heightHint = 100;
+ container.setLayoutData( gd );
+ Label label = new Label( container, SWT.NONE );
+ label.setText( Messages.get().EventDetailsDialog_session );
+ gd = new GridData( GridData.FILL_HORIZONTAL );
+ label.setLayoutData( gd );
+ sessionDataText = new Text( container, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL );
+ gd = new GridData( GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL );
+ gd.grabExcessHorizontalSpace = true;
+ sessionDataText.setLayoutData( gd );
+ sessionDataText.setEditable( false );
+ }
+
+ /**
+ * Loads filters from preferences.
+ *
+ * @return filters from preferences or empty array
+ * @since 3.4
+ */
+ private String[] getFilters() {
+ Boolean filterEnabled = memento.getBoolean( FILTER_ENABLED );
+ String filtersString = memento.getString( FILTER_LIST );
+ if( ( filterEnabled == null )
+ || ( filterEnabled.booleanValue() == false )
+ || filtersString == null )
+ {
+ return new String[ 0 ];
+ }
+ StringTokenizer st = new StringTokenizer( filtersString, ";" ); //$NON-NLS-1$
+ List filters = new ArrayList();
+ while( st.hasMoreElements() ) {
+ String filter = st.nextToken();
+ filters.add( filter );
+ }
+ return ( String[] )filters.toArray( new String[ filters.size() ] );
+ }
+
+ /**
+ * Filters stack trace. Every stack trace line is compared against all patterns. If line contains
+ * any of pattern strings, it's excluded from output.
+ *
+ * @returns filtered stack trace
+ * @since 3.4
+ */
+ private String filterStack( String stack ) {
+ if( stackFilterPatterns.length == 0 ) {
+ return stack;
+ }
+ StringTokenizer st = new StringTokenizer( stack, "\n" ); //$NON-NLS-1$
+ StringBuffer result = new StringBuffer();
+ while( st.hasMoreTokens() ) {
+ String stackElement = st.nextToken();
+ boolean filtered = false;
+ int i = 0;
+ while( ( !filtered ) && ( i < stackFilterPatterns.length ) ) {
+ filtered = stackElement.indexOf( stackFilterPatterns[ i ] ) >= 0;
+ i++ ;
+ }
+ if( !filtered ) {
+ result.append( stackElement ).append( "\n" ); //$NON-NLS-1$
+ }
+ }
+ return result.toString();
+ }
+
+ // --------------- configuration handling --------------
+ /**
+ * Stores the current state in the dialog settings.
+ *
+ * @since 2.0
+ */
+ private void storeSettings() {
+ writeConfiguration();
+ }
+
+ /**
+ * Returns the dialog settings object used to share state between several event detail dialogs.
+ *
+ * @return the dialog settings to be used
+ */
+ private IDialogSettings getDialogSettings() {
+ IDialogSettings settings = Activator.getDefault().getDialogSettings();
+ IDialogSettings dialogSettings = settings.getSection( getClass().getName() );
+ if( dialogSettings == null )
+ dialogSettings = settings.addNewSection( getClass().getName() );
+ return dialogSettings;
+ }
+
+ /**
+ * Initializes itself from the dialog settings with the same state as at the previous invocation.
+ */
+ private void readConfiguration() {
+ IDialogSettings s = getDialogSettings();
+ try {
+ int x = s.getInt( "x" ); //$NON-NLS-1$
+ int y = s.getInt( "y" ); //$NON-NLS-1$
+ dialogLocation = new Point( x, y );
+ x = s.getInt( "width" ); //$NON-NLS-1$
+ y = s.getInt( "height" ); //$NON-NLS-1$
+ dialogSize = new Point( x, y );
+ sashWeights = new int[ 3 ];
+ sashWeights[ 0 ] = s.getInt( "sashWidth1" ); //$NON-NLS-1$
+ sashWeights[ 1 ] = s.getInt( "sashWidth2" ); //$NON-NLS-1$
+ sashWeights[ 2 ] = s.getInt( "sashWidth3" ); //$NON-NLS-1$
+ } catch( NumberFormatException e ) {
+ dialogLocation = null;
+ dialogSize = null;
+ sashWeights = null;
+ }
+ }
+
+ private void writeConfiguration() {
+ IDialogSettings s = getDialogSettings();
+ Point location = getShell().getLocation();
+ s.put( "x", location.x ); //$NON-NLS-1$
+ s.put( "y", location.y ); //$NON-NLS-1$
+ Point size = getShell().getSize();
+ s.put( "width", size.x ); //$NON-NLS-1$
+ s.put( "height", size.y ); //$NON-NLS-1$
+ sashWeights = getSashForm().getWeights();
+ s.put( "sashWidth1", sashWeights[ 0 ] ); //$NON-NLS-1$
+ s.put( "sashWidth2", sashWeights[ 1 ] ); //$NON-NLS-1$
+ s.put( "sashWidth3", sashWeights[ 2 ] ); //$NON-NLS-1$
+ }
+
+ /**
+ * Utility method to get all top level elements of the Log View
+ *
+ * @return top level elements of the Log View
+ */
+ private AbstractEntry[] getElements() {
+ return ( AbstractEntry[] )( ( ITreeContentProvider )provider.getContentProvider() )
+ .getElements( null );
+ }
+}
diff --git a/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/EventDetailsDialogAction.java b/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/EventDetailsDialogAction.java
index 17b7b0f..aa5a826 100644
--- a/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/EventDetailsDialogAction.java
+++ b/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/EventDetailsDialogAction.java
@@ -1,100 +1,102 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2011 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
- * Jacek Pospychala <jacek.pospychala@pl.ibm.com> - bugs 202583, 207344
- *******************************************************************************/
-package org.eclipse.ui.internal.views.log;
-
-import java.util.Comparator;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.actions.SelectionProviderAction;
-
-/**
- * Opens EventDetailsDialog
- */
-public class EventDetailsDialogAction extends SelectionProviderAction {
-
- /**
- * The control that the dialog should appear on top of.
- */
- private Control control;
- private ISelectionProvider provider;
- private EventDetailsDialog propertyDialog;
- private Comparator comparator;
- private IMemento memento;
-
- /**
- * Creates a new action for opening a property dialog
- * on the elements from the given selection provider
- * @param control - the control that the details dialog should show up on
- * @param provider - the selection provider whose elements
- * @param memento - memento with EventDetails dialog options
- * the property dialog will describe
- */
- public EventDetailsDialogAction(Control control, ISelectionProvider provider, IMemento memento) {
- super(provider, Messages.get().EventDetailsDialog_title);
- Assert.isNotNull(control);
- this.control = control;
- this.provider = provider;
- this.memento = memento;
- // setToolTipText
- //WorkbenchHelp.setHelp
- }
-
- public boolean resetSelection(byte sortType, int sortOrder) {
- IAdaptable element = (IAdaptable) getStructuredSelection().getFirstElement();
- if (element == null)
- return false;
- if (propertyDialog != null && propertyDialog.isOpen()) {
- propertyDialog.resetSelection(element, sortType, sortOrder);
- return true;
- }
- return false;
- }
-
- public void resetSelection() {
- IAdaptable element = (IAdaptable) getStructuredSelection().getFirstElement();
- if ((element == null) || (!(element instanceof LogEntry)))
- return;
- if (propertyDialog != null && propertyDialog.isOpen())
- propertyDialog.resetSelection(element);
- }
-
- public void resetDialogButtons() {
- if (propertyDialog != null && propertyDialog.isOpen())
- propertyDialog.resetButtons();
- }
-
- public void setComparator(Comparator comparator) {
- this.comparator = comparator;
- if (propertyDialog != null && propertyDialog.isOpen())
- propertyDialog.setComparator(comparator);
- }
-
- public void run() {
- if (propertyDialog != null && propertyDialog.isOpen()) {
- resetSelection();
- return;
- }
-
- //get initial selection
- IAdaptable element = (IAdaptable) getStructuredSelection().getFirstElement();
- if ((element == null) || (!(element instanceof LogEntry)))
- return;
-
- propertyDialog = new EventDetailsDialog(control.getShell(), element, provider, comparator, memento);
- propertyDialog.create();
- propertyDialog.getShell().setText(Messages.get().EventDetailsDialog_title);
- propertyDialog.open();
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2000, 2011 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
+ * Jacek Pospychala <jacek.pospychala@pl.ibm.com> - bugs 202583, 207344
+ * Arnaud Mergey - <a_mergey@yahoo.fr>
+ *******************************************************************************/
+package org.eclipse.ui.internal.views.log;
+
+import java.util.Comparator;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.ui.IMemento;
+import org.eclipse.ui.actions.SelectionProviderAction;
+
+/**
+ * Opens EventDetailsDialog
+ */
+public class EventDetailsDialogAction extends SelectionProviderAction {
+
+ /**
+ * The control that the dialog should appear on top of.
+ */
+ private Control control;
+ private ISelectionProvider provider;
+ private EventDetailsDialog propertyDialog;
+ private Comparator comparator;
+ private IMemento memento;
+
+ /**
+ * Creates a new action for opening a property dialog
+ * on the elements from the given selection provider
+ * @param control - the control that the details dialog should show up on
+ * @param provider - the selection provider whose elements
+ * @param memento - memento with EventDetails dialog options
+ * the property dialog will describe
+ */
+ public EventDetailsDialogAction(Control control, ISelectionProvider provider, IMemento memento) {
+ super(provider, Messages.get().EventDetailsDialog_title);
+ Assert.isNotNull(control);
+ this.control = control;
+ this.provider = provider;
+ this.memento = memento;
+ // setToolTipText
+ //WorkbenchHelp.setHelp
+ }
+
+ public boolean resetSelection(byte sortType, int sortOrder) {
+ IAdaptable element = (IAdaptable) getStructuredSelection().getFirstElement();
+ if (element == null)
+ return false;
+ if (propertyDialog != null && propertyDialog.isOpen()) {
+ propertyDialog.resetSelection(element, sortType, sortOrder);
+ return true;
+ }
+ return false;
+ }
+
+ public void resetSelection() {
+ IAdaptable element = (IAdaptable) getStructuredSelection().getFirstElement();
+ if ((element == null) || (!(element instanceof LogEntry)))
+ return;
+ if (propertyDialog != null && propertyDialog.isOpen())
+ propertyDialog.resetSelection(element);
+ }
+
+ public void resetDialogButtons() {
+ if (propertyDialog != null && propertyDialog.isOpen())
+ propertyDialog.resetButtons();
+ }
+
+ public void setComparator(Comparator comparator) {
+ this.comparator = comparator;
+ if (propertyDialog != null && propertyDialog.isOpen())
+ propertyDialog.setComparator(comparator);
+ }
+
+ @Override
+ public void run() {
+ if (propertyDialog != null && propertyDialog.isOpen()) {
+ resetSelection();
+ return;
+ }
+
+ //get initial selection
+ IAdaptable element = (IAdaptable) getStructuredSelection().getFirstElement();
+ if ((element == null) || (!(element instanceof LogEntry)))
+ return;
+
+ propertyDialog = new EventDetailsDialog(control.getShell(), element, provider, comparator, memento);
+ propertyDialog.create();
+ propertyDialog.getShell().setText(Messages.get().EventDetailsDialog_title);
+ propertyDialog.open();
+ }
+}
diff --git a/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/FilterDialog.java b/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/FilterDialog.java
index 3addaea..00938cb 100644
--- a/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/FilterDialog.java
+++ b/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/FilterDialog.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2003, 2014 IBM Corporation and others.
+ * Copyright (c) 2003, 2015 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
@@ -7,6 +7,7 @@
*
* Contributors:
* IBM Corporation - initial API and implementation
+ * Arnaud Mergey - <a_mergey@yahoo.fr>
*******************************************************************************/
package org.eclipse.ui.internal.views.log;
@@ -30,7 +31,7 @@
// entries count limit
private Button limit;
Text limitText;
- Spinner maxLogTailSizeSpinner;
+ Text maxLogTailSizeText;
// entry types filter
private Button errorCheckbox;
@@ -62,6 +63,7 @@
PlatformUI.getWorkbench().getHelpSystem().setHelp(newShell, IHelpContextIds.LOG_FILTER);
}
+ @Override
protected Control createDialogArea(Composite parent) {
Composite container = (Composite) super.createDialogArea(parent);
createEventTypesGroup(container);
@@ -109,6 +111,7 @@
limit.setText(Messages.get().LogView_FilterDialog_limitTo);
limit.setSelection(memento.getString(LogView.P_USE_LIMIT).equals("true")); //$NON-NLS-1$
limit.addSelectionListener(new SelectionAdapter() {
+ @Override
public void widgetSelected(SelectionEvent e) {
limitText.setEnabled(((Button) e.getSource()).getSelection());
}
@@ -116,6 +119,7 @@
limitText = new Text(comp, SWT.BORDER);
limitText.addVerifyListener(new VerifyListener() {
+ @Override
public void verifyText(VerifyEvent e) {
if (Character.isLetter(e.character)) {
e.doit = false;
@@ -123,12 +127,13 @@
}
});
limitText.addModifyListener(new ModifyListener() {
+ @Override
public void modifyText(ModifyEvent e) {
try {
if (okButton == null)
return;
- Integer.parseInt(limitText.getText());
- okButton.setEnabled(true);
+ int value = Integer.parseInt(limitText.getText());
+ okButton.setEnabled(value > 0);
} catch (NumberFormatException e1) {
okButton.setEnabled(false);
}
@@ -140,26 +145,33 @@
Label maxLogTailSizeLabel = new Label(comp, SWT.NONE);
maxLogTailSizeLabel.setText(Messages.get().LogView_FilterDialog_maxLogTailSize);
- maxLogTailSizeSpinner = new Spinner(comp, SWT.BORDER);
- maxLogTailSizeSpinner.addModifyListener(new ModifyListener() {
+
+ maxLogTailSizeText = new Text(comp, SWT.BORDER);
+ maxLogTailSizeText.addVerifyListener(new VerifyListener() {
+ @Override
+ public void verifyText(VerifyEvent e) {
+ if (Character.isLetter(e.character)) {
+ e.doit = false;
+ }
+ }
+ });
+
+ maxLogTailSizeText.addModifyListener(new ModifyListener() {
+ @Override
public void modifyText(ModifyEvent e) {
try {
if (okButton == null)
return;
- Integer.parseInt(maxLogTailSizeSpinner.getText());
- okButton.setEnabled(true);
+ int value = Integer.parseInt(maxLogTailSizeText.getText());
+ okButton.setEnabled(value > 0);
} catch (NumberFormatException e1) {
okButton.setEnabled(false);
}
}
});
- maxLogTailSizeSpinner.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- maxLogTailSizeSpinner.setValues(memento.getInteger(LogView.P_LOG_MAX_TAIL_SIZE).intValue(), 1, Integer.MAX_VALUE, 0, 1, 1);
- maxLogTailSizeSpinner.setMinimum(1);
- maxLogTailSizeSpinner.setIncrement(1);
- maxLogTailSizeSpinner.setMaximum(Integer.MAX_VALUE);
-
- maxLogTailSizeSpinner.setEnabled(limit.getSelection());
+ maxLogTailSizeText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ maxLogTailSizeText.setText(memento.getString(LogView.P_LOG_MAX_TAIL_SIZE));
+ maxLogTailSizeText.setEnabled(limit.getSelection());
}
private void createSessionSection(Composite parent) {
@@ -201,6 +213,7 @@
gd.horizontalSpan = 2;
filterEnabled.setLayoutData(gd);
filterEnabled.addSelectionListener(new SelectionAdapter() {
+ @Override
public void widgetSelected(SelectionEvent e) {
setStackTraceFilterEnabled(filterEnabled.getSelection());
}
@@ -214,6 +227,7 @@
gd.horizontalIndent = 20;
filterList.setLayoutData(gd);
filterList.addSelectionListener(new SelectionAdapter() {
+ @Override
public void widgetSelected(SelectionEvent e) {
removeFilter.setEnabled(true);
}
@@ -224,6 +238,7 @@
addFilter.setLayoutData(gd);
addFilter.setText(Messages.get().FilterDialog_Add);
addFilter.addSelectionListener(new SelectionAdapter() {
+ @Override
public void widgetSelected(SelectionEvent e) {
addFilter();
}
@@ -235,6 +250,7 @@
removeFilter.setText(Messages.get().FilterDialog_Remove);
removeFilter.setEnabled(false);
removeFilter.addSelectionListener(new SelectionAdapter() {
+ @Override
public void widgetSelected(SelectionEvent e) {
removeFilter();
}
@@ -259,6 +275,7 @@
private void addFilter() {
IInputValidator validator = new IInputValidator() {
+ @Override
public String isValid(String newText) {
return newText.indexOf(';') >= 0 ? Messages.get().FilterDialog_FilterShouldntContainSemicolon : null;
}
@@ -288,11 +305,13 @@
removeFilter.setEnabled(enabled && filterList.getSelectionIndex() != -1);
}
+ @Override
protected void createButtonsForButtonBar(Composite parent) {
okButton = createButton(parent, IDialogConstants.OK_ID, IDialogConstants.get().OK_LABEL, true);
createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.get().CANCEL_LABEL, false);
}
+ @Override
protected void okPressed() {
memento.putString(LogView.P_LOG_OK, okCheckbox.getSelection() ? "true" : "false"); //$NON-NLS-1$ //$NON-NLS-2$
memento.putString(LogView.P_LOG_INFO, infoCheckbox.getSelection() ? "true" : "false"); //$NON-NLS-1$ //$NON-NLS-2$
@@ -300,7 +319,7 @@
memento.putString(LogView.P_LOG_ERROR, errorCheckbox.getSelection() ? "true" : "false"); //$NON-NLS-1$ //$NON-NLS-2$
memento.putString(LogView.P_LOG_LIMIT, limitText.getText());
memento.putString(LogView.P_USE_LIMIT, limit.getSelection() ? "true" : "false"); //$NON-NLS-1$ //$NON-NLS-2$
- memento.putString(LogView.P_LOG_MAX_TAIL_SIZE, maxLogTailSizeSpinner.getText());
+ memento.putString(LogView.P_LOG_MAX_TAIL_SIZE, maxLogTailSizeText.getText());
memento.putString(LogView.P_SHOW_ALL_SESSIONS, showAllButton.getSelection() ? "true" : "false"); //$NON-NLS-1$ //$NON-NLS-2$
// store Event Dialog stack trace filter preferences
diff --git a/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/Group.java b/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/Group.java
index 508075d..932a37a 100644
--- a/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/Group.java
+++ b/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/Group.java
@@ -1,41 +1,43 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 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
- * Jacek Pospychala <jacek.pospychala@pl.ibm.com> - bugs 202583, 207344
- * Benjamin Cabe <benjamin.cabe@anyware-tech.com> - bug 218648
- *******************************************************************************/
-package org.eclipse.ui.internal.views.log;
-
-import java.io.PrintWriter;
-
-/**
- * Groups other Abstract Entries under given name.
- */
-public class Group extends AbstractEntry {
-
- private String name;
-
- public Group(String name) {
- this.name = name;
- }
-
- public void write(PrintWriter writer) {
- Object[] children = getChildren(null);
- for (int i = 0; i < children.length; i++) {
- AbstractEntry entry = (AbstractEntry) children[i];
- entry.write(writer);
- writer.println();
- }
- }
-
- public String toString() {
- return name;
- }
-
+/*******************************************************************************
+ * Copyright (c) 2007, 2008 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
+ * Jacek Pospychala <jacek.pospychala@pl.ibm.com> - bugs 202583, 207344
+ * Benjamin Cabe <benjamin.cabe@anyware-tech.com> - bug 218648
+ *******************************************************************************/
+package org.eclipse.ui.internal.views.log;
+
+import java.io.PrintWriter;
+
+/**
+ * Groups other Abstract Entries under given name.
+ */
+public class Group extends AbstractEntry {
+
+ private String name;
+
+ public Group(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public void write(PrintWriter writer) {
+ Object[] children = getChildren(null);
+ for (int i = 0; i < children.length; i++) {
+ AbstractEntry entry = (AbstractEntry) children[i];
+ entry.write(writer);
+ writer.println();
+ }
+ }
+
+ @Override
+ public String toString() {
+ return name;
+ }
+
}
\ No newline at end of file
diff --git a/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/IHelpContextIds.java b/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/IHelpContextIds.java
index 4964207..6035aae 100644
--- a/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/IHelpContextIds.java
+++ b/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/IHelpContextIds.java
@@ -1,10 +1,10 @@
/*******************************************************************************
- * Copyright (c) 2007, 2012 IBM Corporation and others.
+ * Copyright (c) 2007, 2013 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
*******************************************************************************/
diff --git a/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/ILogFileProvider.java b/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/ILogFileProvider.java
index 1340cd1..dcc76a1 100644
--- a/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/ILogFileProvider.java
+++ b/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/ILogFileProvider.java
@@ -1,27 +1,27 @@
-/*******************************************************************************
- * Copyright (c) 2008 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.ui.internal.views.log;
-
-import java.util.Map;
-
-/**
- * Provides log files.
- */
-public interface ILogFileProvider {
-
- /**
- * Returns a Map of java.io.File log files indexed by String names.
- *
- * @return Map of java.io.File log files index by String names.
- * @since 3.4
- */
- Map getLogSources();
+/*******************************************************************************
+ * Copyright (c) 2008 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.ui.internal.views.log;
+
+import java.util.Map;
+
+/**
+ * Provides log files.
+ */
+public interface ILogFileProvider {
+
+ /**
+ * Returns a Map of java.io.File log files indexed by String names.
+ *
+ * @return Map of java.io.File log files index by String names.
+ * @since 3.4
+ */
+ Map getLogSources();
}
\ No newline at end of file
diff --git a/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/ImportLogAction.java b/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/ImportLogAction.java
index 692826e..0705f3c 100644
--- a/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/ImportLogAction.java
+++ b/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/ImportLogAction.java
@@ -1,228 +1,212 @@
-/*******************************************************************************
- * Copyright (c) 2008 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
- * Benjamin Cabe <benjamin.cabe@anyware-tech.com> - bug 218293
- *******************************************************************************/
-package org.eclipse.ui.internal.views.log;
-
-import java.util.*;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.action.*;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.ui.IMemento;
-
-/**
- * Imports log to Log View from such sources as file in local file system, file in workspace,
- * files from log files manager.
- */
-public class ImportLogAction extends Action implements IMenuCreator {
-
- private Menu toolbarMenu = null;
- private Menu popupMenu = null;
-
- /**
- * View to import logs to.
- */
- private final LogView logView;
- private ImportConfigurationLogAction[] actions;
- private IMemento fMemento;
-
- /**
- * Action imports log file from given location to Log View.
- */
- private class ImportConfigurationLogAction extends Action {
- private String name;
- private String location;
-
- public ImportConfigurationLogAction(String name, String location) {
- super(name, AS_RADIO_BUTTON);
- this.name = name;
- this.location = location;
- setId(name + "#" + location); //$NON-NLS-1$
- }
-
- protected void doRun() {
- logView.handleImportPath(location);
- }
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.jface.action.Action#run()
- */
- public void run() {
- doRun();
-
- // remember we clicked on that item
- if (isChecked()) {
- fMemento.putString(LogView.P_IMPORT_LOG, getId());
- }
- }
-
- /*
- * (non-Javadoc)
- * @see java.lang.Object#equals(java.lang.Object)
- */
- public boolean equals(Object o) {
- if (o instanceof ImportConfigurationLogAction) {
- ImportConfigurationLogAction action = (ImportConfigurationLogAction) o;
- return name.equals(action.name) && location.equals(action.name);
- }
-
- return false;
- }
- }
-
- public ImportLogAction(LogView logView, String text, IMemento memento) {
- super(text);
- this.logView = logView;
- this.fMemento = memento;
- setMenuCreator(this);
- }
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.jface.action.Action#run()
- */
- public void run() {
- // by default import file selected by user
- logView.handleImport();
- }
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.jface.action.IMenuCreator#getMenu(org.eclipse.swt.widgets.Control)
- */
- public Menu getMenu(Control parent) {
- if (menuUpdateNeeded(toolbarMenu)) {
- toolbarMenu = new Menu(parent);
- createMenuItems(toolbarMenu);
- }
- return toolbarMenu;
- }
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.jface.action.IMenuCreator#getMenu(org.eclipse.swt.widgets.Menu)
- */
- public Menu getMenu(Menu parent) {
- if (menuUpdateNeeded(popupMenu)) {
- popupMenu = new Menu(parent);
- createMenuItems(popupMenu);
- }
- return popupMenu;
- }
-
- /**
- * Returns whether menu should be updated or not. Menu should be updated
- * if either number of actions or any of actions has been changed.
- * @return true if menu should be updated, false otherwise
- */
- private boolean menuUpdateNeeded(Menu menu) {
- boolean result = false;
-
- ImportConfigurationLogAction[] currActions = getLogActions();
-
- if (menu == null) {
- result = true;
- } else if (actions == null) {
- result = true;
- } else if (currActions.length != actions.length) {
- result = true;
- } else {
- for (int i = 0; i < currActions.length; i++) {
- if (!currActions[i].equals(actions[i])) {
- result = true;
- }
- }
- }
-
- if (result == true) {
- actions = currActions;
-
- if (toolbarMenu != null) {
- toolbarMenu.dispose();
- toolbarMenu = null;
- }
- if (popupMenu != null) {
- popupMenu.dispose();
- popupMenu = null;
- }
- }
-
- return result;
- }
-
- /**
- * Returns list of all actions from LogFilesManager.
- * @return list of all actions from LogFilesManager
- */
- private ImportConfigurationLogAction[] getLogActions() {
- List result = new ArrayList();
- Map sources = LogFilesManager.getLogSources();
-
- for (Iterator j = sources.keySet().iterator(); j.hasNext();) {
- String name = (String) j.next();
- String location = (String) sources.get(name);
- result.add(new ImportConfigurationLogAction(name, location));
- }
-
- return (ImportConfigurationLogAction[]) result.toArray(new ImportConfigurationLogAction[result.size()]);
- }
-
- /**
- * Builds menu of ImportLogAction actions from log files provided by LogFilesManager.
- *
- * @see IMenuCreator#getMenu(Control)
- */
- private void createMenuItems(Menu menu) {
- String previouslyCheckedActionId = fMemento.getString(LogView.P_IMPORT_LOG);
- if (actions.length == 0) {
- Action action = new Action(Messages.get().ImportLogAction_noLaunchHistory) {
- // dummy action
- };
- action.setEnabled(false);
- ActionContributionItem actionItem = new ActionContributionItem(action);
- actionItem.fill(menu, -1);
- } else {
- for (int i = 0; i < actions.length; i++) {
- actions[i].setChecked(actions[i].getId().equals(previouslyCheckedActionId) && !logView.isPlatformLogOpen());
- ActionContributionItem item = new ActionContributionItem(actions[i]);
- item.fill(menu, -1);
- }
- }
-
- (new Separator()).fill(menu, -1);
- ImportConfigurationLogAction importWorkspaceLogAction = new ImportConfigurationLogAction(Messages.get().ImportLogAction_reloadWorkspaceLog, Platform.getLogFileLocation().toFile().getAbsolutePath()) {
-
- public void doRun() {
- logView.setPlatformLog();
- }
-
- };
- importWorkspaceLogAction.setChecked(logView.isPlatformLogOpen());
- ActionContributionItem item = new ActionContributionItem(importWorkspaceLogAction);
- item.fill(menu, -1);
- }
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.jface.action.IMenuCreator#dispose()
- */
- public void dispose() {
- if (toolbarMenu != null) {
- toolbarMenu.dispose();
- toolbarMenu = null;
- }
- if (popupMenu != null) {
- popupMenu.dispose();
- popupMenu = null;
- }
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ * Benjamin Cabe <benjamin.cabe@anyware-tech.com> - bug 218293
+ * Arnaud Mergey - <a_mergey@yahoo.fr>
+ *******************************************************************************/
+package org.eclipse.ui.internal.views.log;
+
+import java.util.*;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jface.action.*;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.ui.IMemento;
+
+/**
+ * Imports log to Log View from such sources as file in local file system, file in workspace,
+ * files from log files manager.
+ */
+public class ImportLogAction extends Action implements IMenuCreator {
+
+ private Menu toolbarMenu = null;
+ private Menu popupMenu = null;
+
+ /**
+ * View to import logs to.
+ */
+ private final LogView logView;
+ private ImportConfigurationLogAction[] actions;
+ private IMemento fMemento;
+
+ /**
+ * Action imports log file from given location to Log View.
+ */
+ private class ImportConfigurationLogAction extends Action {
+ private String name;
+ private String location;
+
+ public ImportConfigurationLogAction(String name, String location) {
+ super(name, AS_RADIO_BUTTON);
+ this.name = name;
+ this.location = location;
+ setId(name + "#" + location); //$NON-NLS-1$
+ }
+
+ protected void doRun() {
+ logView.handleImportPath(location);
+ }
+
+ @Override
+ public void run() {
+ doRun();
+
+ // remember we clicked on that item
+ if (isChecked()) {
+ fMemento.putString(LogView.P_IMPORT_LOG, getId());
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (o instanceof ImportConfigurationLogAction) {
+ ImportConfigurationLogAction action = (ImportConfigurationLogAction) o;
+ return name.equals(action.name) && location.equals(action.name);
+ }
+
+ return false;
+ }
+ }
+
+ public ImportLogAction(LogView logView, String text, IMemento memento) {
+ super(text);
+ this.logView = logView;
+ this.fMemento = memento;
+ setMenuCreator(this);
+ }
+
+ @Override
+ public void run() {
+ // by default import file selected by user
+ logView.handleImport();
+ }
+
+ @Override
+ public Menu getMenu(Control parent) {
+ if (menuUpdateNeeded(toolbarMenu)) {
+ toolbarMenu = new Menu(parent);
+ createMenuItems(toolbarMenu);
+ }
+ return toolbarMenu;
+ }
+
+ @Override
+ public Menu getMenu(Menu parent) {
+ if (menuUpdateNeeded(popupMenu)) {
+ popupMenu = new Menu(parent);
+ createMenuItems(popupMenu);
+ }
+ return popupMenu;
+ }
+
+ /**
+ * Returns whether menu should be updated or not. Menu should be updated
+ * if either number of actions or any of actions has been changed.
+ * @return true if menu should be updated, false otherwise
+ */
+ private boolean menuUpdateNeeded(Menu menu) {
+ boolean result = false;
+
+ ImportConfigurationLogAction[] currActions = getLogActions();
+
+ if (menu == null) {
+ result = true;
+ } else if (actions == null) {
+ result = true;
+ } else if (currActions.length != actions.length) {
+ result = true;
+ } else {
+ for (int i = 0; i < currActions.length; i++) {
+ if (!currActions[i].equals(actions[i])) {
+ result = true;
+ }
+ }
+ }
+
+ if (result == true) {
+ actions = currActions;
+
+ if (toolbarMenu != null) {
+ toolbarMenu.dispose();
+ toolbarMenu = null;
+ }
+ if (popupMenu != null) {
+ popupMenu.dispose();
+ popupMenu = null;
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ * Returns list of all actions from LogFilesManager.
+ * @return list of all actions from LogFilesManager
+ */
+ private ImportConfigurationLogAction[] getLogActions() {
+ List result = new ArrayList();
+ Map sources = LogFilesManager.getLogSources();
+
+ for (Iterator j = sources.keySet().iterator(); j.hasNext();) {
+ String name = (String) j.next();
+ String location = (String) sources.get(name);
+ result.add(new ImportConfigurationLogAction(name, location));
+ }
+
+ return (ImportConfigurationLogAction[]) result.toArray(new ImportConfigurationLogAction[result.size()]);
+ }
+
+ /**
+ * Builds menu of ImportLogAction actions from log files provided by LogFilesManager.
+ *
+ * @see IMenuCreator#getMenu(Control)
+ */
+ private void createMenuItems(Menu menu) {
+ String previouslyCheckedActionId = fMemento.getString(LogView.P_IMPORT_LOG);
+ if (actions.length == 0) {
+ Action action = new Action(Messages.get().ImportLogAction_noLaunchHistory) {
+ // dummy action
+ };
+ action.setEnabled(false);
+ ActionContributionItem actionItem = new ActionContributionItem(action);
+ actionItem.fill(menu, -1);
+ } else {
+ for (int i = 0; i < actions.length; i++) {
+ actions[i].setChecked(actions[i].getId().equals(previouslyCheckedActionId) && !logView.isPlatformLogOpen());
+ ActionContributionItem item = new ActionContributionItem(actions[i]);
+ item.fill(menu, -1);
+ }
+ }
+
+ (new Separator()).fill(menu, -1);
+ ImportConfigurationLogAction importWorkspaceLogAction = new ImportConfigurationLogAction(Messages.get().ImportLogAction_reloadWorkspaceLog, Platform.getLogFileLocation().toFile().getAbsolutePath()) {
+
+ @Override
+ public void doRun() {
+ logView.setPlatformLog();
+ }
+
+ };
+ importWorkspaceLogAction.setChecked(logView.isPlatformLogOpen());
+ ActionContributionItem item = new ActionContributionItem(importWorkspaceLogAction);
+ item.fill(menu, -1);
+ }
+
+ @Override
+ public void dispose() {
+ if (toolbarMenu != null) {
+ toolbarMenu.dispose();
+ toolbarMenu = null;
+ }
+ if (popupMenu != null) {
+ popupMenu.dispose();
+ popupMenu = null;
+ }
+ }
+}
diff --git a/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/LogEntry.java b/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/LogEntry.java
index f4d10e9..dd9c000 100644
--- a/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/LogEntry.java
+++ b/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/LogEntry.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2013 IBM Corporation and others.
+ * Copyright (c) 2000, 2014 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
@@ -8,7 +8,7 @@
* Contributors:
* IBM Corporation - initial API and implementation
* Jacek Pospychala <jacek.pospychala@pl.ibm.com> - bugs 209474, 207344
- * Arnaud Mergey <a_mergey@yahoo.fr> - RAP port
+ * Eike Stepper <stepper@esc-net.de> - bug 429372
*******************************************************************************/
package org.eclipse.ui.internal.views.log;
@@ -181,16 +181,12 @@
return "?"; //$NON-NLS-1$
}
- /* (non-Javadoc)
- * @see java.lang.Object#toString()
- */
+ @Override
public String toString() {
return getSeverityText();
}
- /* (non-Javadoc)
- * @see org.eclipse.ui.internal.views.log.AbstractEntry#getLabel(java.lang.Object)
- */
+ @Override
public String getLabel(Object obj) {
return getSeverityText();
}
@@ -251,7 +247,7 @@
* Adds the given token to the given buffer, adding a space as needed
* @param buffer
* @param token
- *
+ *
* @since 3.6
*/
void appendToken(StringBuffer buffer, String token) {
@@ -319,7 +315,7 @@
}
/**
- * Sets the stack to the given stack value.
+ * Sets the stack to the given stack value.
* No validation is performed on the new value.
* @param stack
*/
@@ -347,8 +343,8 @@
fDate = new Date();
fDateString = LOCAL_SDF.format(fDate);
message = status.getMessage();
- Throwable throwable = status.getException();
this.session = session;
+ Throwable throwable = status.getException();
if (throwable != null) {
StringWriter swriter = new StringWriter();
PrintWriter pwriter = new PrintWriter(swriter);
@@ -365,13 +361,12 @@
}
}
- /* (non-Javadoc)
- * @see org.eclipse.ui.internal.views.log.AbstractEntry#write(java.io.PrintWriter)
- */
+ @Override
public void write(PrintWriter writer) {
if (session != null) {
writer.println(session.getSessionData());
}
+ writer.println(pluginId);
writer.println(getSeverityText());
if (fDate != null) {
writer.println(getDate());
diff --git a/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/LogFilesManager.java b/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/LogFilesManager.java
index da5f335..069da00 100644
--- a/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/LogFilesManager.java
+++ b/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/LogFilesManager.java
@@ -1,57 +1,57 @@
-/*******************************************************************************
- * Copyright (c) 2008 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.ui.internal.views.log;
-
-import java.util.*;
-
-/**
- * Manages the log file providers.
- * One adds log file provider to let Log View know where to find log files.
- */
-public class LogFilesManager {
-
- private static List logFileProviders = new ArrayList();
-
- /**
- * Adds log file provider.
- * Has no effect if an identical provider is already registered.
- */
- public static void addLogFileProvider(ILogFileProvider provider) {
- if (!logFileProviders.contains(provider)) {
- logFileProviders.add(provider);
- }
- }
-
- /**
- * Removes log file provider.
- * Has no effect if an identical provider is already removed.
- */
- public static void removeLogFileProvider(ILogFileProvider provider) {
- logFileProviders.remove(provider);
- }
-
- /**
- * Returns the list of logs.
- */
- static Map getLogSources() {
- ILogFileProvider[] providers = (ILogFileProvider[]) logFileProviders.toArray(new ILogFileProvider[logFileProviders.size()]);
- Map result = new HashMap(providers.length);
-
- for (int i = 0; i < providers.length; i++) {
- ILogFileProvider provider = providers[i];
-
- Map sources = provider.getLogSources();
- result.putAll(sources);
- }
-
- return result;
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2008 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.ui.internal.views.log;
+
+import java.util.*;
+
+/**
+ * Manages the log file providers.
+ * One adds log file provider to let Log View know where to find log files.
+ */
+public class LogFilesManager {
+
+ private static List logFileProviders = new ArrayList();
+
+ /**
+ * Adds log file provider.
+ * Has no effect if an identical provider is already registered.
+ */
+ public static void addLogFileProvider(ILogFileProvider provider) {
+ if (!logFileProviders.contains(provider)) {
+ logFileProviders.add(provider);
+ }
+ }
+
+ /**
+ * Removes log file provider.
+ * Has no effect if an identical provider is already removed.
+ */
+ public static void removeLogFileProvider(ILogFileProvider provider) {
+ logFileProviders.remove(provider);
+ }
+
+ /**
+ * Returns the list of logs.
+ */
+ static Map getLogSources() {
+ ILogFileProvider[] providers = (ILogFileProvider[]) logFileProviders.toArray(new ILogFileProvider[logFileProviders.size()]);
+ Map result = new HashMap(providers.length);
+
+ for (int i = 0; i < providers.length; i++) {
+ ILogFileProvider provider = providers[i];
+
+ Map sources = provider.getLogSources();
+ result.putAll(sources);
+ }
+
+ return result;
+ }
+}
diff --git a/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/LogReader.java b/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/LogReader.java
index f90474b..13101b9 100644
--- a/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/LogReader.java
+++ b/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/LogReader.java
@@ -212,7 +212,7 @@
/**
* Adds entry to the list if it's not filtered. Removes entries exceeding the count limit.
- *
+ *
* @param entry
* @param entries
* @param memento
@@ -233,7 +233,7 @@
/**
* Returns whether given entry is logged (true) or filtered (false).
- *
+ *
* @param entry
* @param memento
* @return is entry logged or filtered
diff --git a/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/LogSession.java b/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/LogSession.java
index 93857cf..cf1febc 100644
--- a/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/LogSession.java
+++ b/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/LogSession.java
@@ -1,81 +1,78 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2013 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
- * Jacek Pospychala <jacek.pospychala@pl.ibm.com> - bugs 202583, 207344
- * Benjamin Cabe <benjamin.cabe@anyware-tech.com> - bug 218648
- * Arnaud Mergey <a_mergey@yahoo.fr> - RAP port
- *******************************************************************************/
-package org.eclipse.ui.internal.views.log;
-
-import java.io.PrintWriter;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-/**
- * Group of entries with additional Session data.
- */
-public class LogSession extends Group {
-
- /**
- * Describes the !SESSION header name
- *
- * @since 3.5
- */
- public static final String SESSION = "!SESSION"; //$NON-NLS-1$
- private String sessionData;
- private Date date;
-
- public LogSession() {
- super(null);
- }
-
- public Date getDate() {
- return date;
- }
-
- public void setDate(String dateString) {
- SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); //$NON-NLS-1$
- try {
- date = formatter.parse(dateString);
- } catch (ParseException e) { // do nothing
- }
- }
-
- public String getSessionData() {
- return sessionData;
- }
-
- void setSessionData(String data) {
- this.sessionData = data;
- }
-
- public void processLogLine(String line) {
- // process "!SESSION <dateUnknownFormat> ----------------------------"
- if (line.startsWith(SESSION)) {
- line = line.substring(SESSION.length()).trim(); // strip "!SESSION "
- int delim = line.indexOf("----"); //$NON-NLS-1$ // single "-" may be in date, so take few for sure
- if (delim == -1) {
- return;
- }
- String dateBuffer = line.substring(0, delim).trim();
- setDate(dateBuffer);
- }
- }
-
- public void write(PrintWriter writer) {
- writer.write(sessionData);
- writer.println();
- super.write(writer);
- }
-
- public String toString() {
- return Messages.get().LogViewLabelProvider_Session;
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2000, 2008 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
+ * Jacek Pospychala <jacek.pospychala@pl.ibm.com> - bugs 202583, 207344
+ * Benjamin Cabe <benjamin.cabe@anyware-tech.com> - bug 218648
+ * Arnaud Mergey - <a_mergey@yahoo.fr>
+ *******************************************************************************/
+package org.eclipse.ui.internal.views.log;
+
+import com.ibm.icu.text.SimpleDateFormat;
+import java.io.PrintWriter;
+import java.text.ParseException;
+import java.util.Date;
+
+/**
+ * Group of entries with additional Session data.
+ */
+public class LogSession extends Group {
+
+ /**
+ * Describes the !SESSION header name
+ *
+ * @since 3.5
+ */
+ public static final String SESSION = "!SESSION"; //$NON-NLS-1$
+ private String sessionData;
+ private Date date;
+
+ public LogSession() {
+ super(Messages.get().LogViewLabelProvider_Session);
+ }
+
+ public Date getDate() {
+ return date;
+ }
+
+ public void setDate(String dateString) {
+ SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); //$NON-NLS-1$
+ try {
+ date = formatter.parse(dateString);
+ } catch (ParseException e) { // do nothing
+ }
+ }
+
+ public String getSessionData() {
+ return sessionData;
+ }
+
+ void setSessionData(String data) {
+ this.sessionData = data;
+ }
+
+ public void processLogLine(String line) {
+ // process "!SESSION <dateUnknownFormat> ----------------------------"
+ if (line.startsWith(SESSION)) {
+ line = line.substring(SESSION.length()).trim(); // strip "!SESSION "
+ int delim = line.indexOf("----"); //$NON-NLS-1$ // single "-" may be in date, so take few for sure
+ if (delim == -1) {
+ return;
+ }
+ String dateBuffer = line.substring(0, delim).trim();
+ setDate(dateBuffer);
+ }
+ }
+
+ @Override
+ public void write(PrintWriter writer) {
+ writer.write(sessionData);
+ writer.println();
+ super.write(writer);
+ }
+}
diff --git a/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/LogView.java b/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/LogView.java
index adfeb34..68108b7 100644
--- a/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/LogView.java
+++ b/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/LogView.java
@@ -60,7 +60,7 @@
public static final String P_LOG_INFO = "info"; //$NON-NLS-1$
public static final String P_LOG_OK = "ok"; //$NON-NLS-1$
- /**
+ /**
* Maximum tail size of the log file in Mega Bytes (1024 * 1024 Bytes) considers the last XYZ MB of the log file to create log entries.
* This value should be increased if the size of the sub elements of the last (most recent) log entry in the log file exceeds the maximum tail size.
**/
@@ -152,6 +152,7 @@
}
}
+ @Override
public void run() {
if (fMemento.getInteger(LogView.P_GROUP_BY).intValue() != groupBy) {
fMemento.putInteger(LogView.P_GROUP_BY, groupBy);
@@ -198,6 +199,7 @@
PlatformUI.getWorkbench().getHelpSystem().setHelp(fFilteredTree, IHelpContextIds.LOG_VIEW);
getSite().getWorkbenchWindow().addPerspectiveListener(new IPerspectiveListener2() {
+ @Override
public void perspectiveChanged(IWorkbenchPage page, IPerspectiveDescriptor perspective, IWorkbenchPartReference partRef, String changeId) {
if (!(partRef instanceof IViewReference))
return;
@@ -224,6 +226,7 @@
// empty
}
+ @Override
public void perspectiveChanged(IWorkbenchPage page, IPerspectiveDescriptor perspective, String changeId) {
// empty
}
@@ -282,6 +285,7 @@
MenuManager popupMenuManager = new MenuManager("#PopupMenu"); //$NON-NLS-1$
IMenuListener listener = new IMenuListener() {
+ @Override
public void menuAboutToShow(IMenuManager manager) {
// manager.add(fCopyAction);
// manager.add(new Separator());
@@ -324,6 +328,7 @@
private Action createClearAction() {
Action action = new Action(Messages.get().LogView_clear) {
+ @Override
public void run() {
handleClear();
}
@@ -508,6 +513,7 @@
private void createViewer(Composite parent) {
PatternFilter filter = new PatternFilter() {
+ @Override
protected boolean isLeafMatch(Viewer viewer, Object element) {
if (element instanceof LogEntry) {
LogEntry logEntry = (LogEntry) element;
@@ -539,6 +545,7 @@
fFilteredTree.getViewer().setLabelProvider(fLabelProvider = new LogViewLabelProvider(this));
fLabelProvider.connect(this);
fFilteredTree.getViewer().addSelectionChangedListener(new ISelectionChangedListener() {
+ @Override
public void selectionChanged(SelectionChangedEvent e) {
handleSelectionChanged(e.getSelection());
if (fPropertiesAction.isEnabled())
@@ -561,6 +568,7 @@
fColumn1.setText(Messages.get().LogView_column_message);
fColumn1.setWidth(fMemento.getInteger(P_COLUMN_1).intValue());
fColumn1.addSelectionListener(new SelectionAdapter() {
+ @Override
public void widgetSelected(SelectionEvent e) {
MESSAGE_ORDER *= -1;
ViewerComparator comparator = getViewerComparator(MESSAGE);
@@ -579,6 +587,7 @@
fColumn2.setText(Messages.get().LogView_column_plugin);
fColumn2.setWidth(fMemento.getInteger(P_COLUMN_2).intValue());
fColumn2.addSelectionListener(new SelectionAdapter() {
+ @Override
public void widgetSelected(SelectionEvent e) {
PLUGIN_ORDER *= -1;
ViewerComparator comparator = getViewerComparator(PLUGIN);
@@ -597,6 +606,7 @@
fColumn3.setText(Messages.get().LogView_column_date);
fColumn3.setWidth(fMemento.getInteger(P_COLUMN_3).intValue());
fColumn3.addSelectionListener(new SelectionAdapter() {
+ @Override
public void widgetSelected(SelectionEvent e) {
DATE_ORDER *= -1;
ViewerComparator comparator = getViewerComparator(DATE);
@@ -678,6 +688,7 @@
fInputFile = path;
// fDirectory = fInputFile.getParent();
IRunnableWithProgress op = new IRunnableWithProgress() {
+ @Override
public void run(IProgressMonitor monitor) {
monitor.beginTask(Messages.get().LogView_operation_importing, IProgressMonitor.UNKNOWN);
readLogFile();
diff --git a/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/LogViewContentProvider.java b/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/LogViewContentProvider.java
index d047648..b04cce7 100644
--- a/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/LogViewContentProvider.java
+++ b/bundles/org.eclipse.rap.ui.views.log/src/org/eclipse/ui/internal/views/log/LogViewContentProvider.java
@@ -1,52 +1,58 @@
-/*******************************************************************************
- * Copyright (c) 2000, 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
- * Jacek Pospychala <jacek.pospychala@pl.ibm.com> - bugs 202583,207344
- *******************************************************************************/
-package org.eclipse.ui.internal.views.log;
-
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.Viewer;
-
-public class LogViewContentProvider implements ITreeContentProvider {
- private LogView logView;
-
- public LogViewContentProvider(LogView logView) {
- this.logView = logView;
- }
-
- public void dispose() { // do nothing
- }
-
- public Object[] getChildren(Object element) {
- return ((AbstractEntry) element).getChildren(element);
- }
-
- public Object[] getElements(Object element) {
- return logView.getElements();
- }
-
- public Object getParent(Object element) {
- if (element instanceof LogSession) {
- return null;
- }
- return ((AbstractEntry) element).getParent(element);
- }
-
- public boolean hasChildren(Object element) {
- return ((AbstractEntry) element).getChildren(element).length > 0;
- }
-
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { // do nothing
- }
-
- public boolean isDeleted(Object element) {
- return false;
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2000, 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
+ * Jacek Pospychala <jacek.pospychala@pl.ibm.com> - bugs 202583,207344
+ *******************************************************************************/
+package org.eclipse.ui.internal.views.log;
+
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+
+public class LogViewContentProvider implements ITreeContentProvider {
+ private LogView logView;
+
+ public LogViewContentProvider(LogView logView) {
+ this.logView = logView;
+ }
+
+ @Override
+ public void dispose() { // do nothing
+ }
+
+ @Override
+ public Object[] getChildren(Object element) {
+ return ((AbstractEntry) element).getChildren(element);
+ }
+
+ @Override
+ public Object[] getElements(Object element) {
+ return logView.getElements();
+ }
+
+ @Override
+ public Object getParent(Object element) {
+ if (element instanceof LogSession) {
+ return null;
+ }
+ return ((AbstractEntry) element).getParent(element);
+ }
+
+ @Override
+ public boolean hasChildren(Object element) {
+ return ((AbstractEntry) element).getChildren(element).length > 0;
+ }
+
+ @Override
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { // do nothing
+ }
+
+ public boolean isDeleted(Object element) {
+ return false;
+ }
+}