diff options
Diffstat (limited to 'org.eclipse.debug.ui')
367 files changed, 24687 insertions, 24687 deletions
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/AbstractDebugListSelectionDialog.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/AbstractDebugListSelectionDialog.java index fd2fdc4e4..7f234f4e6 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/AbstractDebugListSelectionDialog.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/AbstractDebugListSelectionDialog.java @@ -84,13 +84,13 @@ public abstract class AbstractDebugListSelectionDialog extends AbstractDebugSele return false; } - @Override + @Override protected void okPressed() { ISelection selection = fViewer.getSelection(); if (selection instanceof IStructuredSelection) { setResult(((IStructuredSelection) selection).toList()); } super.okPressed(); - } + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/AbstractDebugSelectionDialog.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/AbstractDebugSelectionDialog.java index 9cc311402..14af78526 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/AbstractDebugSelectionDialog.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/AbstractDebugSelectionDialog.java @@ -152,8 +152,8 @@ public abstract class AbstractDebugSelectionDialog extends SelectionDialog { * @return viewer used in this dialog */ protected Viewer getViewer(){ - return fViewer; - } + return fViewer; + } @Override protected Control createContents(Composite parent) { diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/CompositeDebugImageDescriptor.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/CompositeDebugImageDescriptor.java index d6c619bff..7d0e3b95d 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/CompositeDebugImageDescriptor.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/CompositeDebugImageDescriptor.java @@ -106,9 +106,9 @@ public class CompositeDebugImageDescriptor extends CompositeImageDescriptor { return fBaseImage; } - protected void setBaseImage(Image image) { - fBaseImage = image; - } + protected void setBaseImage(Image image) { + fBaseImage = image; + } protected int getFlags() { return fFlags; diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugModelPropertyTester.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugModelPropertyTester.java index f7281fee6..f8961d034 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugModelPropertyTester.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugModelPropertyTester.java @@ -66,15 +66,15 @@ public class DebugModelPropertyTester extends PropertyTester { Platform.getAdapterManager(). getAdapter(receiver, IDebugModelProvider.class); } - if (modelProvider != null) { - String[] ids = modelProvider.getModelIdentifiers(); - for (int i = 0; i < ids.length; i++) { - if (ids[i].equals(expectedValue)) { - return true; - } - } - return false; - } + if (modelProvider != null) { + String[] ids = modelProvider.getModelIdentifiers(); + for (int i = 0; i < ids.length; i++) { + if (ids[i].equals(expectedValue)) { + return true; + } + } + return false; + } // There is no element selected with an associated debug model. // Return true iff the expected value is an empty string. return "".equals(expectedValue); //$NON-NLS-1$ diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugPluginImages.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugPluginImages.java index 3d06ce444..15048895a 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugPluginImages.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugPluginImages.java @@ -51,7 +51,7 @@ public class DebugPluginImages { // Use IPath and toOSString to build the names to ensure they have the slashes correct private final static String CTOOL= ICONS_PATH + "etool16/"; //basic colors - size 16x16 //$NON-NLS-1$ - private final static String DTOOL= ICONS_PATH + "dtool16/"; //basic colors - size 16x16 //$NON-NLS-1$ + private final static String DTOOL= ICONS_PATH + "dtool16/"; //basic colors - size 16x16 //$NON-NLS-1$ private final static String DLCL= ICONS_PATH + "dlcl16/"; //disabled - size 16x16 //$NON-NLS-1$ private final static String ELCL= ICONS_PATH + "elcl16/"; //enabled - size 16x16 //$NON-NLS-1$ private final static String OBJECT= ICONS_PATH + "obj16/"; //basic colors - size 16x16 //$NON-NLS-1$ @@ -66,7 +66,7 @@ public class DebugPluginImages { // Actions declareRegistryImage(IDebugUIConstants.IMG_ACT_DEBUG, CTOOL + "debug_exc.png"); //$NON-NLS-1$ declareRegistryImage(IDebugUIConstants.IMG_ACT_RUN, CTOOL + "run_exc.png"); //$NON-NLS-1$ - declareRegistryImage(IDebugUIConstants.IMG_ACT_SYNCED, ELCL + "synced.png"); //$NON-NLS-1$ + declareRegistryImage(IDebugUIConstants.IMG_ACT_SYNCED, ELCL + "synced.png"); //$NON-NLS-1$ declareRegistryImage(IDebugUIConstants.IMG_SKIP_BREAKPOINTS, ELCL + "skip_brkp.png"); //$NON-NLS-1$ //menus @@ -87,12 +87,12 @@ public class DebugPluginImages { declareRegistryImage(IDebugUIConstants.IMG_LCL_TYPE_NAMES, ELCL + "tnames_co.png"); //$NON-NLS-1$ declareRegistryImage(IDebugUIConstants.IMG_LCL_DISCONNECT, ELCL + "disconnect_co.png"); //$NON-NLS-1$ declareRegistryImage(IDebugUIConstants.IMG_LCL_REMOVE_ALL, ELCL + "rem_all_co.png"); //$NON-NLS-1$ - declareRegistryImage(IDebugUIConstants.IMG_LCL_REMOVE, ELCL + "rem_co.png"); //$NON-NLS-1$ + declareRegistryImage(IDebugUIConstants.IMG_LCL_REMOVE, ELCL + "rem_co.png"); //$NON-NLS-1$ declareRegistryImage(IInternalDebugUIConstants.IMG_LCL_SHOW_LOGICAL_STRUCTURE, ELCL + "var_cntnt_prvdr.png"); //$NON-NLS-1$ declareRegistryImage(IInternalDebugUIConstants.IMG_LCL_COLLAPSE_ALL, ELCL + "collapseall.png"); //$NON-NLS-1$ declareRegistryImage(IInternalDebugUIConstants.IMG_LCL_TERMINATE, ELCL + "terminate_co.png"); //$NON-NLS-1$ declareRegistryImage(IInternalDebugUIConstants.IMG_LCL_RUN_TO_LINE, ELCL + "runtoline_co.png"); //$NON-NLS-1$ - declareRegistryImage(IDebugUIConstants.IMG_LCL_ADD, ELCL + "monitorexpression_tsk.png"); //$NON-NLS-1$ + declareRegistryImage(IDebugUIConstants.IMG_LCL_ADD, ELCL + "monitorexpression_tsk.png"); //$NON-NLS-1$ declareRegistryImage(IInternalDebugUIConstants.IMG_LCL_REMOVE_MEMORY, ELCL + "removememory_tsk.png"); //$NON-NLS-1$ declareRegistryImage(IInternalDebugUIConstants.IMG_LCL_RESET_MEMORY, ELCL + "memoryreset_tsk.png"); //$NON-NLS-1$ declareRegistryImage(IInternalDebugUIConstants.IMG_LCL_COPY_VIEW_TO_CLIPBOARD, ELCL + "copyviewtoclipboard_tsk.png"); //$NON-NLS-1$ @@ -110,7 +110,7 @@ public class DebugPluginImages { declareRegistryImage(IInternalDebugUIConstants.IMG_DLCL_COLLAPSE_ALL, DLCL + "collapseall.png"); //$NON-NLS-1$ declareRegistryImage(IInternalDebugUIConstants.IMG_DLCL_TERMINATE, DLCL + "terminate_co.png"); //$NON-NLS-1$ declareRegistryImage(IInternalDebugUIConstants.IMG_DLCL_REMOVE_ALL, DLCL + "rem_all_co.png"); //$NON-NLS-1$ - declareRegistryImage(IInternalDebugUIConstants.IMG_DLCL_REMOVE, DLCL + "rem_co.png"); //$NON-NLS-1$ + declareRegistryImage(IInternalDebugUIConstants.IMG_DLCL_REMOVE, DLCL + "rem_co.png"); //$NON-NLS-1$ declareRegistryImage(IInternalDebugUIConstants.IMG_DLCL_RUN_TO_LINE, DLCL + "runtoline_co.png"); //$NON-NLS-1$ declareRegistryImage(IInternalDebugUIConstants.IMG_DLCL_MONITOR_EXPRESSION, DLCL + "monitorexpression_tsk.png"); //$NON-NLS-1$ declareRegistryImage(IInternalDebugUIConstants.IMG_DLCL_REMOVE_MEMORY, DLCL + "removememory_tsk.png"); //$NON-NLS-1$ @@ -125,20 +125,20 @@ public class DebugPluginImages { declareRegistryImage(IInternalDebugUIConstants.IMG_DLCL_LINK_PROTO, DLCL + "link_proto.png"); //$NON-NLS-1$ declareRegistryImage(IInternalDebugUIConstants.IMG_DLCL_UNLINK_PROTO, DLCL + "unlink_proto.png"); //$NON-NLS-1$ declareRegistryImage(IInternalDebugUIConstants.IMG_DLCL_RESET_PROTO, DLCL + "reset_proto.png"); //$NON-NLS-1$ - declareRegistryImage(IInternalDebugUIConstants.IMG_DLCL_DISCONNECT, DLCL + "disconnect_co.png"); //$NON-NLS-1$ - declareRegistryImage(IInternalDebugUIConstants.IMG_DLCL_SUSPEND, DLCL + "suspend_co.png"); //$NON-NLS-1$ - declareRegistryImage(IInternalDebugUIConstants.IMG_DLCL_RESUME, DLCL + "resume_co.png"); //$NON-NLS-1$ - declareRegistryImage(IInternalDebugUIConstants.IMG_DLCL_STEP_RETURN, DLCL+ "stepreturn_co.png"); //$NON-NLS-1$ - declareRegistryImage(IInternalDebugUIConstants.IMG_DLCL_STEP_OVER, DLCL + "stepover_co.png"); //$NON-NLS-1$ - declareRegistryImage(IInternalDebugUIConstants.IMG_DLCL_STEP_INTO, DLCL + "stepinto_co.png"); //$NON-NLS-1$ - declareRegistryImage(IInternalDebugUIConstants.IMG_DLCL_TERMINATE_AND_REMOVE, DLCL + "terminate_rem_co.png"); //$NON-NLS-1$ - declareRegistryImage(IInternalDebugUIConstants.IMG_DLCL_TERMINATE_ALL, DLCL + "terminate_all_co.png"); //$NON-NLS-1$ - declareRegistryImage(IInternalDebugUIConstants.IMG_DLCL_TERMINATE_AND_RELAUNCH, DTOOL + "term_restart.png"); //$NON-NLS-1$ - declareRegistryImage(IInternalDebugUIConstants.IMG_DLCL_TOGGLE_STEP_FILTERS, DLCL+"stepbystep_co.png"); //$NON-NLS-1$ - declareRegistryImage(IInternalDebugUIConstants.IMG_DLCL_NEXT_THREAD, DLCL+"next_thread_nav.png"); //$NON-NLS-1$ - declareRegistryImage(IInternalDebugUIConstants.IMG_DLCL_PREVIOUS_THREAD, DLCL+"prev_thread_nav.png"); //$NON-NLS-1$ - declareRegistryImage(IInternalDebugUIConstants.IMG_DLCL_RESTART, DLCL+"restart_co.png"); //$NON-NLS-1$ - declareRegistryImage(IInternalDebugUIConstants.IMG_DLCL_EXPORT_CONFIG, DLCL + "export_config.png"); //$NON-NLS-1$ + declareRegistryImage(IInternalDebugUIConstants.IMG_DLCL_DISCONNECT, DLCL + "disconnect_co.png"); //$NON-NLS-1$ + declareRegistryImage(IInternalDebugUIConstants.IMG_DLCL_SUSPEND, DLCL + "suspend_co.png"); //$NON-NLS-1$ + declareRegistryImage(IInternalDebugUIConstants.IMG_DLCL_RESUME, DLCL + "resume_co.png"); //$NON-NLS-1$ + declareRegistryImage(IInternalDebugUIConstants.IMG_DLCL_STEP_RETURN, DLCL+ "stepreturn_co.png"); //$NON-NLS-1$ + declareRegistryImage(IInternalDebugUIConstants.IMG_DLCL_STEP_OVER, DLCL + "stepover_co.png"); //$NON-NLS-1$ + declareRegistryImage(IInternalDebugUIConstants.IMG_DLCL_STEP_INTO, DLCL + "stepinto_co.png"); //$NON-NLS-1$ + declareRegistryImage(IInternalDebugUIConstants.IMG_DLCL_TERMINATE_AND_REMOVE, DLCL + "terminate_rem_co.png"); //$NON-NLS-1$ + declareRegistryImage(IInternalDebugUIConstants.IMG_DLCL_TERMINATE_ALL, DLCL + "terminate_all_co.png"); //$NON-NLS-1$ + declareRegistryImage(IInternalDebugUIConstants.IMG_DLCL_TERMINATE_AND_RELAUNCH, DTOOL + "term_restart.png"); //$NON-NLS-1$ + declareRegistryImage(IInternalDebugUIConstants.IMG_DLCL_TOGGLE_STEP_FILTERS, DLCL+"stepbystep_co.png"); //$NON-NLS-1$ + declareRegistryImage(IInternalDebugUIConstants.IMG_DLCL_NEXT_THREAD, DLCL+"next_thread_nav.png"); //$NON-NLS-1$ + declareRegistryImage(IInternalDebugUIConstants.IMG_DLCL_PREVIOUS_THREAD, DLCL+"prev_thread_nav.png"); //$NON-NLS-1$ + declareRegistryImage(IInternalDebugUIConstants.IMG_DLCL_RESTART, DLCL+"restart_co.png"); //$NON-NLS-1$ + declareRegistryImage(IInternalDebugUIConstants.IMG_DLCL_EXPORT_CONFIG, DLCL + "export_config.png"); //$NON-NLS-1$ // enabled local toolbars declareRegistryImage(IInternalDebugUIConstants.IMG_ELCL_DETAIL_PANE, ELCL + "toggledetailpane_co.png"); //$NON-NLS-1$ @@ -158,7 +158,7 @@ public class DebugPluginImages { declareRegistryImage(IInternalDebugUIConstants.IMG_ELCL_COPY_VIEW_TO_CLIPBOARD, ELCL + "copyviewtoclipboard_tsk.png"); //$NON-NLS-1$ declareRegistryImage(IInternalDebugUIConstants.IMG_ELCL_PRINT_TOP_VIEW_TAB, ELCL + "printview_tsk.png"); //$NON-NLS-1$ declareRegistryImage(IInternalDebugUIConstants.IMG_ELCL_REMOVE_ALL, ELCL + "rem_all_co.png"); //$NON-NLS-1$ - declareRegistryImage(IInternalDebugUIConstants.IMG_ELCL_REMOVE, ELCL + "rem_co.png"); //$NON-NLS-1$ + declareRegistryImage(IInternalDebugUIConstants.IMG_ELCL_REMOVE, ELCL + "rem_co.png"); //$NON-NLS-1$ declareRegistryImage(IInternalDebugUIConstants.IMG_ELCL_HIERARCHICAL, ELCL + "hierarchicalLayout.png"); //$NON-NLS-1$ declareRegistryImage(IInternalDebugUIConstants.IMG_ELCL_FILTER_CONFIGS, ELCL + "filter_ps.png"); //$NON-NLS-1$ declareRegistryImage(IInternalDebugUIConstants.IMG_ELCL_DUPLICATE_CONFIG, ELCL + "copy_edit_co.png"); //$NON-NLS-1$ @@ -168,21 +168,21 @@ public class DebugPluginImages { declareRegistryImage(IInternalDebugUIConstants.IMG_ELCL_LINK_PROTO, ELCL + "link_proto.png"); //$NON-NLS-1$ declareRegistryImage(IInternalDebugUIConstants.IMG_ELCL_UNLINK_PROTO, ELCL + "unlink_proto.png"); //$NON-NLS-1$ declareRegistryImage(IInternalDebugUIConstants.IMG_ELCL_RESET_PROTO, ELCL + "reset_proto.png"); //$NON-NLS-1$ - declareRegistryImage(IInternalDebugUIConstants.IMG_ELCL_SUSPEND, ELCL + "suspend_co.png"); //$NON-NLS-1$ - declareRegistryImage(IInternalDebugUIConstants.IMG_ELCL_RESUME, ELCL + "resume_co.png"); //$NON-NLS-1$ - declareRegistryImage(IInternalDebugUIConstants.IMG_ELCL_STEP_RETURN, ELCL + "stepreturn_co.png"); //$NON-NLS-1$ - declareRegistryImage(IInternalDebugUIConstants.IMG_ELCL_STEP_OVER, ELCL + "stepover_co.png"); //$NON-NLS-1$ - declareRegistryImage(IInternalDebugUIConstants.IMG_ELCL_STEP_INTO, ELCL + "stepinto_co.png"); //$NON-NLS-1$ - declareRegistryImage(IInternalDebugUIConstants.IMG_ELCL_DROP_TO_FRAME, ELCL + "drop_to_frame.png"); //$NON-NLS-1$ - declareRegistryImage(IInternalDebugUIConstants.IMG_ELCL_TERMINATE_AND_REMOVE, ELCL + "terminate_rem_co.png"); //$NON-NLS-1$ - declareRegistryImage(IInternalDebugUIConstants.IMG_ELCL_TERMINATE_ALL, ELCL + "terminate_all_co.png"); //$NON-NLS-1$ - declareRegistryImage(IInternalDebugUIConstants.IMG_ELCL_TERMINATE_AND_RELAUNCH, CTOOL + "term_restart.png"); //$NON-NLS-1$ - declareRegistryImage(IInternalDebugUIConstants.IMG_ELCL_TOGGLE_STEP_FILTERS, ELCL+"stepbystep_co.png"); //$NON-NLS-1$ - declareRegistryImage(IInternalDebugUIConstants.IMG_ELCL_STANDARD_OUT, ELCL+"writeout_co.png"); //$NON-NLS-1$ - declareRegistryImage(IInternalDebugUIConstants.IMG_ELCL_STANDARD_ERR, ELCL+"writeerr_co.png"); //$NON-NLS-1$ - declareRegistryImage(IInternalDebugUIConstants.IMG_ELCL_NEXT_THREAD, ELCL+"next_thread_nav.png"); //$NON-NLS-1$ - declareRegistryImage(IInternalDebugUIConstants.IMG_ELCL_PREVIOUS_THREAD, ELCL+"prev_thread_nav.png"); //$NON-NLS-1$ - declareRegistryImage(IInternalDebugUIConstants.IMG_ELCL_RESTART, ELCL+"restart_co.png"); //$NON-NLS-1$ + declareRegistryImage(IInternalDebugUIConstants.IMG_ELCL_SUSPEND, ELCL + "suspend_co.png"); //$NON-NLS-1$ + declareRegistryImage(IInternalDebugUIConstants.IMG_ELCL_RESUME, ELCL + "resume_co.png"); //$NON-NLS-1$ + declareRegistryImage(IInternalDebugUIConstants.IMG_ELCL_STEP_RETURN, ELCL + "stepreturn_co.png"); //$NON-NLS-1$ + declareRegistryImage(IInternalDebugUIConstants.IMG_ELCL_STEP_OVER, ELCL + "stepover_co.png"); //$NON-NLS-1$ + declareRegistryImage(IInternalDebugUIConstants.IMG_ELCL_STEP_INTO, ELCL + "stepinto_co.png"); //$NON-NLS-1$ + declareRegistryImage(IInternalDebugUIConstants.IMG_ELCL_DROP_TO_FRAME, ELCL + "drop_to_frame.png"); //$NON-NLS-1$ + declareRegistryImage(IInternalDebugUIConstants.IMG_ELCL_TERMINATE_AND_REMOVE, ELCL + "terminate_rem_co.png"); //$NON-NLS-1$ + declareRegistryImage(IInternalDebugUIConstants.IMG_ELCL_TERMINATE_ALL, ELCL + "terminate_all_co.png"); //$NON-NLS-1$ + declareRegistryImage(IInternalDebugUIConstants.IMG_ELCL_TERMINATE_AND_RELAUNCH, CTOOL + "term_restart.png"); //$NON-NLS-1$ + declareRegistryImage(IInternalDebugUIConstants.IMG_ELCL_TOGGLE_STEP_FILTERS, ELCL+"stepbystep_co.png"); //$NON-NLS-1$ + declareRegistryImage(IInternalDebugUIConstants.IMG_ELCL_STANDARD_OUT, ELCL+"writeout_co.png"); //$NON-NLS-1$ + declareRegistryImage(IInternalDebugUIConstants.IMG_ELCL_STANDARD_ERR, ELCL+"writeerr_co.png"); //$NON-NLS-1$ + declareRegistryImage(IInternalDebugUIConstants.IMG_ELCL_NEXT_THREAD, ELCL+"next_thread_nav.png"); //$NON-NLS-1$ + declareRegistryImage(IInternalDebugUIConstants.IMG_ELCL_PREVIOUS_THREAD, ELCL+"prev_thread_nav.png"); //$NON-NLS-1$ + declareRegistryImage(IInternalDebugUIConstants.IMG_ELCL_RESTART, ELCL+"restart_co.png"); //$NON-NLS-1$ declareRegistryImage(IInternalDebugUIConstants.IMG_ELCL_EXPORT_CONFIG, ELCL + "export_config.png"); //$NON-NLS-1$ //Object diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIAdapterFactory.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIAdapterFactory.java index 2119bbb3c..ad3c95fa5 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIAdapterFactory.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIAdapterFactory.java @@ -39,21 +39,21 @@ public class DebugUIAdapterFactory implements IAdapterFactory { if (adapterType == IPersistableElement.class) { if (obj instanceof IBreakpoint) { - return (T) new BreakpointPersistableElementAdapter((IBreakpoint)obj); - } + return (T) new BreakpointPersistableElementAdapter((IBreakpoint)obj); + } } - if (adapterType == IWorkbenchAdapter.class) { - if (obj instanceof IBreakpointContainer) { - return (T) new BreakpointContainerWorkbenchAdapter(); - } - } + if (adapterType == IWorkbenchAdapter.class) { + if (obj instanceof IBreakpointContainer) { + return (T) new BreakpointContainerWorkbenchAdapter(); + } + } - if (adapterType == IWorkbenchAdapter2.class) { - if (obj instanceof IBreakpointContainer) { - return (T) new BreakpointContainerWorkbenchAdapter(); - } - } + if (adapterType == IWorkbenchAdapter2.class) { + if (obj instanceof IBreakpointContainer) { + return (T) new BreakpointContainerWorkbenchAdapter(); + } + } return null; } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIMessages.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIMessages.java index 85d727654..e75f65f61 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIMessages.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIMessages.java @@ -21,7 +21,7 @@ import org.eclipse.osgi.util.NLS; public class DebugUIMessages extends NLS { private static final String BUNDLE_NAME = "org.eclipse.debug.internal.ui.DebugUIMessages";//$NON-NLS-1$ - public static String AbstractAsyncTableRendering_2; + public static String AbstractAsyncTableRendering_2; public static String AbstractDebugCheckboxSelectionDialog_0; @@ -51,7 +51,7 @@ public class DebugUIMessages extends NLS { public static String SwitchMemoryBlockAction_4; - public static String WorkingDirectoryStatusHandler_0; + public static String WorkingDirectoryStatusHandler_0; public static String WorkingDirectoryStatusHandler_Eclipse_Runtime_1; public static String DebugUITools_3; @@ -299,7 +299,7 @@ public class DebugUIMessages extends NLS { // // Elements // - public static String ExpressionManagerContentProvider_1; + public static String ExpressionManagerContentProvider_1; static { // load message values from bundle file diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIPlugin.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIPlugin.java index 6049c5fa0..cf4f3b231 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIPlugin.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIPlugin.java @@ -205,18 +205,18 @@ public class DebugUIPlugin extends AbstractUIPlugin implements ILaunchListener, */ private LaunchingResourceManager fContextLaunchingManager = null; - /** - * Image descriptor registry used for images with common overlays. - * - * @since 3.1 - */ - private ImageDescriptorRegistry fImageDescriptorRegistry; - - /** - * A set of <code>ISaveParticipant</code>s that want to contribute to saving via this plugin - * - * @since 3.3 - */ + /** + * Image descriptor registry used for images with common overlays. + * + * @since 3.1 + */ + private ImageDescriptorRegistry fImageDescriptorRegistry; + + /** + * A set of <code>ISaveParticipant</code>s that want to contribute to saving via this plugin + * + * @since 3.3 + */ private Set<ISaveParticipant> fSaveParticipants = new HashSet<>(); /** @@ -226,31 +226,31 @@ public class DebugUIPlugin extends AbstractUIPlugin implements ILaunchListener, */ private IPropertyChangeListener fThemeListener; - /** - * Dummy launch node representing a launch that is waiting - * for a build to finish before proceeding. This node exists - * to provide immediate feedback to the user in the Debug view and - * allows termination, which equates to cancellation of the launch. - */ + /** + * Dummy launch node representing a launch that is waiting + * for a build to finish before proceeding. This node exists + * to provide immediate feedback to the user in the Debug view and + * allows termination, which equates to cancellation of the launch. + */ public static class PendingLaunch extends Launch { - private Job fJob; - public PendingLaunch(ILaunchConfiguration launchConfiguration, String mode, Job job) { - super(launchConfiguration, mode, null); - fJob= job; - } - - // Allow the user to terminate the dummy launch as a means to - // cancel the launch while waiting for a build to finish. - @Override + private Job fJob; + public PendingLaunch(ILaunchConfiguration launchConfiguration, String mode, Job job) { + super(launchConfiguration, mode, null); + fJob= job; + } + + // Allow the user to terminate the dummy launch as a means to + // cancel the launch while waiting for a build to finish. + @Override public boolean canTerminate() { - return true; - } + return true; + } - @Override + @Override public void terminate() throws DebugException { - fJob.cancel(); - } - } + fJob.cancel(); + } + } /** * Constructs the debug UI plug-in @@ -424,11 +424,11 @@ public class DebugUIPlugin extends AbstractUIPlugin implements ILaunchListener, @Override public void stop(BundleContext context) throws Exception { try { - if (fProcessConsoleManager != null) { - fProcessConsoleManager.shutdown(); - } + if (fProcessConsoleManager != null) { + fProcessConsoleManager.shutdown(); + } - BreakpointOrganizerManager.getDefault().shutdown(); + BreakpointOrganizerManager.getDefault().shutdown(); if (fPerspectiveManager != null) { fPerspectiveManager.shutdown(); @@ -446,15 +446,15 @@ public class DebugUIPlugin extends AbstractUIPlugin implements ILaunchListener, fgPresentation.dispose(); } - if (fImageDescriptorRegistry != null) { - fImageDescriptorRegistry.dispose(); - } + if (fImageDescriptorRegistry != null) { + fImageDescriptorRegistry.dispose(); + } - if (fgDefaultLabelProvider != null) { - fgDefaultLabelProvider.dispose(); - } + if (fgDefaultLabelProvider != null) { + fgDefaultLabelProvider.dispose(); + } - SourceLookupFacility.shutdown(); + SourceLookupFacility.shutdown(); DebugElementHelper.dispose(); @@ -557,8 +557,8 @@ public class DebugUIPlugin extends AbstractUIPlugin implements ILaunchListener, launchManager.addLaunchListener(this); } - // start the breakpoint organizer manager - BreakpointOrganizerManager.getDefault(); + // start the breakpoint organizer manager + BreakpointOrganizerManager.getDefault(); getLaunchConfigurationManager().startup(); @@ -683,94 +683,94 @@ public class DebugUIPlugin extends AbstractUIPlugin implements ILaunchListener, } /** - * Open the launch configuration dialog on the specified launch - * configuration. The dialog displays the tabs for a single configuration - * only (a tree of launch configuration is not displayed) - * <p> - * If a status is specified, a status handler is consulted to handle the - * status. The status handler is passed the instance of the launch - * configuration dialog that is opened. This gives the status handler an - * opportunity to perform error handling/initialization as required. - * </p> - * @param shell the parent shell for the launch configuration dialog - * @param configuration the configuration to display - * @param groupIdentifier group identifier of the launch group the launch configuration - * belongs to - * @param status the status to display, or <code>null</code> if none - * @param showCancel if the cancel button should be shown in the particular instance of the dialog - * @return the return code from opening the launch configuration dialog - - * one of <code>Window.OK</code> or <code>Window.CANCEL</code> - * - * @since 3.3 - * - */ - public static int openLaunchConfigurationEditDialog(Shell shell, ILaunchConfiguration configuration, String groupIdentifier, IStatus status, boolean showCancel) { - LaunchGroupExtension group = DebugUIPlugin.getDefault().getLaunchConfigurationManager().getLaunchGroup(groupIdentifier); - if (group != null) { - LaunchConfigurationEditDialog dialog = new LaunchConfigurationEditDialog(shell, configuration, group, showCancel); - dialog.setInitialStatus(status); - return dialog.open(); - } - return Window.CANCEL; - } - - /** - * Open the launch configuration dialog on the specified launch - * configuration. The dialog displays the tabs for a single configuration - * only (a tree of launch configuration is not displayed) - * <p> - * If a status is specified, a status handler is consulted to handle the - * status. The status handler is passed the instance of the launch - * configuration dialog that is opened. This gives the status handler an - * opportunity to perform error handling/initialization as required. - * </p> - * @param shell the parent shell for the launch configuration dialog - * @param configuration the configuration to display - * @param groupIdentifier group identifier of the launch group the launch configuration - * belongs to - * @param reservednames a set of launch configuration names that cannot be used when creating or renaming - * the specified launch configuration - * @param status the status to display, or <code>null</code> if none - * @param setDefaults whether to set default values in the configuration - * @return the return code from opening the launch configuration dialog - - * one of <code>Window.OK</code> or <code>Window.CANCEL</code> - * - * @since 3.3 - * - */ + * Open the launch configuration dialog on the specified launch + * configuration. The dialog displays the tabs for a single configuration + * only (a tree of launch configuration is not displayed) + * <p> + * If a status is specified, a status handler is consulted to handle the + * status. The status handler is passed the instance of the launch + * configuration dialog that is opened. This gives the status handler an + * opportunity to perform error handling/initialization as required. + * </p> + * @param shell the parent shell for the launch configuration dialog + * @param configuration the configuration to display + * @param groupIdentifier group identifier of the launch group the launch configuration + * belongs to + * @param status the status to display, or <code>null</code> if none + * @param showCancel if the cancel button should be shown in the particular instance of the dialog + * @return the return code from opening the launch configuration dialog - + * one of <code>Window.OK</code> or <code>Window.CANCEL</code> + * + * @since 3.3 + * + */ + public static int openLaunchConfigurationEditDialog(Shell shell, ILaunchConfiguration configuration, String groupIdentifier, IStatus status, boolean showCancel) { + LaunchGroupExtension group = DebugUIPlugin.getDefault().getLaunchConfigurationManager().getLaunchGroup(groupIdentifier); + if (group != null) { + LaunchConfigurationEditDialog dialog = new LaunchConfigurationEditDialog(shell, configuration, group, showCancel); + dialog.setInitialStatus(status); + return dialog.open(); + } + return Window.CANCEL; + } + + /** + * Open the launch configuration dialog on the specified launch + * configuration. The dialog displays the tabs for a single configuration + * only (a tree of launch configuration is not displayed) + * <p> + * If a status is specified, a status handler is consulted to handle the + * status. The status handler is passed the instance of the launch + * configuration dialog that is opened. This gives the status handler an + * opportunity to perform error handling/initialization as required. + * </p> + * @param shell the parent shell for the launch configuration dialog + * @param configuration the configuration to display + * @param groupIdentifier group identifier of the launch group the launch configuration + * belongs to + * @param reservednames a set of launch configuration names that cannot be used when creating or renaming + * the specified launch configuration + * @param status the status to display, or <code>null</code> if none + * @param setDefaults whether to set default values in the configuration + * @return the return code from opening the launch configuration dialog - + * one of <code>Window.OK</code> or <code>Window.CANCEL</code> + * + * @since 3.3 + * + */ public static int openLaunchConfigurationPropertiesDialog(Shell shell, ILaunchConfiguration configuration, String groupIdentifier, Set<String> reservednames, IStatus status, boolean setDefaults) { - LaunchGroupExtension group = DebugUIPlugin.getDefault().getLaunchConfigurationManager().getLaunchGroup(groupIdentifier); - if (group != null) { - LaunchConfigurationPropertiesDialog dialog = new LaunchConfigurationPropertiesDialog(shell, configuration, group, reservednames); - dialog.setInitialStatus(status); - dialog.setDefaultsOnOpen(setDefaults); - return dialog.open(); - } - return Window.CANCEL; - } - - /** - * Opens the {@link LaunchConfigurationsDialog} on the given selection for the given group. A status - * can be provided or <code>null</code> and the dialog can initialize the given {@link ILaunchConfiguration} - * to its defaults when opening as well - as long as the specified configuration is an {@link ILaunchConfigurationWorkingCopy}. - * @param shell the shell to open the dialog on - * @param selection the non-null selection to show when the dialog opens - * @param groupIdentifier the identifier of the launch group to open the dialog on - * @param setDefaults if the default values should be set on the opened configuration - if there is one - * @return the return code from the dialog.open() call - * @since 3.6 - */ - public static int openLaunchConfigurationsDialog(Shell shell, IStructuredSelection selection, String groupIdentifier, boolean setDefaults) { - LaunchGroupExtension group = DebugUIPlugin.getDefault().getLaunchConfigurationManager().getLaunchGroup(groupIdentifier); - if (group != null) { + LaunchGroupExtension group = DebugUIPlugin.getDefault().getLaunchConfigurationManager().getLaunchGroup(groupIdentifier); + if (group != null) { + LaunchConfigurationPropertiesDialog dialog = new LaunchConfigurationPropertiesDialog(shell, configuration, group, reservednames); + dialog.setInitialStatus(status); + dialog.setDefaultsOnOpen(setDefaults); + return dialog.open(); + } + return Window.CANCEL; + } + + /** + * Opens the {@link LaunchConfigurationsDialog} on the given selection for the given group. A status + * can be provided or <code>null</code> and the dialog can initialize the given {@link ILaunchConfiguration} + * to its defaults when opening as well - as long as the specified configuration is an {@link ILaunchConfigurationWorkingCopy}. + * @param shell the shell to open the dialog on + * @param selection the non-null selection to show when the dialog opens + * @param groupIdentifier the identifier of the launch group to open the dialog on + * @param setDefaults if the default values should be set on the opened configuration - if there is one + * @return the return code from the dialog.open() call + * @since 3.6 + */ + public static int openLaunchConfigurationsDialog(Shell shell, IStructuredSelection selection, String groupIdentifier, boolean setDefaults) { + LaunchGroupExtension group = DebugUIPlugin.getDefault().getLaunchConfigurationManager().getLaunchGroup(groupIdentifier); + if (group != null) { LaunchConfigurationsDialog dialog = new LaunchConfigurationsDialog(shell, group); dialog.setOpenMode(LaunchConfigurationsDialog.LAUNCH_CONFIGURATION_DIALOG_OPEN_ON_SELECTION); dialog.setInitialSelection(selection); dialog.setDefaultsOnOpen(setDefaults); return dialog.open(); - } - return Window.CANCEL; - } + } + return Window.CANCEL; + } /** * Save all dirty editors in the workbench. @@ -953,38 +953,38 @@ public class DebugUIPlugin extends AbstractUIPlugin implements ILaunchListener, } public static boolean DEBUG_TEST_PRESENTATION_ID(IPresentationContext context) { - if (context == null) { - return true; - } - return DEBUG_PRESENTATION_ID == null || DEBUG_PRESENTATION_ID.equals(context.getId()); + if (context == null) { + return true; + } + return DEBUG_PRESENTATION_ID == null || DEBUG_PRESENTATION_ID.equals(context.getId()); } /** - * Return the ILaunch associated with a model element, or null if there is - * no such association. - * - * @param element the model element - * @return the ILaunch associated with the element, or null. - * @since 3.6 - */ - public static ILaunch getLaunch(Object element) { - // support for custom models - ILaunch launch= (ILaunch)DebugPlugin.getAdapter(element, ILaunch.class); - if (launch == null) { - // support for standard debug model - if (element instanceof IDebugElement) { - launch= ((IDebugElement)element).getLaunch(); - } else if (element instanceof ILaunch) { - launch= ((ILaunch)element); - } else if (element instanceof IProcess) { - launch= ((IProcess)element).getLaunch(); - } - } - return launch; - } - - - /** + * Return the ILaunch associated with a model element, or null if there is + * no such association. + * + * @param element the model element + * @return the ILaunch associated with the element, or null. + * @since 3.6 + */ + public static ILaunch getLaunch(Object element) { + // support for custom models + ILaunch launch= (ILaunch)DebugPlugin.getAdapter(element, ILaunch.class); + if (launch == null) { + // support for standard debug model + if (element instanceof IDebugElement) { + launch= ((IDebugElement)element).getLaunch(); + } else if (element instanceof ILaunch) { + launch= ((ILaunch)element); + } else if (element instanceof IProcess) { + launch= ((IProcess)element).getLaunch(); + } + } + return launch; + } + + + /** * Save dirty editors before launching, according to preferences. * * @return whether to proceed with launch @@ -1199,33 +1199,33 @@ public class DebugUIPlugin extends AbstractUIPlugin implements ILaunchListener, workingCopy.setAttribute(ATTR_LAUNCHING_CONFIG_HANDLE, configuration.getMemento()); final ILaunch pendingLaunch = new PendingLaunch(workingCopy, mode, this); DebugPlugin.getDefault().getLaunchManager().addLaunch(pendingLaunch); - IJobChangeListener listener= new IJobChangeListener() { - @Override + IJobChangeListener listener= new IJobChangeListener() { + @Override public void sleeping(IJobChangeEvent event) {} - @Override + @Override public void scheduled(IJobChangeEvent event) {} - @Override + @Override public void running(IJobChangeEvent event) {} - @Override + @Override public void awake(IJobChangeEvent event) {} - @Override + @Override public void aboutToRun(IJobChangeEvent event) {} - @Override + @Override public void done(IJobChangeEvent event) { - DebugPlugin dp = DebugPlugin.getDefault(); - if (dp != null) { - dp.getLaunchManager().removeLaunch(pendingLaunch); - } - removeJobChangeListener(this); - } - }; - addJobChangeListener(listener); + DebugPlugin dp = DebugPlugin.getDefault(); + if (dp != null) { + dp.getLaunchManager().removeLaunch(pendingLaunch); + } + removeJobChangeListener(this); + } + }; + addJobChangeListener(listener); try { jobManager.join(ResourcesPlugin.FAMILY_MANUAL_BUILD, new SubProgressMonitor(monitor, 1)); jobManager.join(ResourcesPlugin.FAMILY_AUTO_BUILD, new SubProgressMonitor(monitor, 1)); } catch (InterruptedException e) {/*just continue.*/} - DebugPlugin.getDefault().getLaunchManager().removeLaunch(pendingLaunch); + DebugPlugin.getDefault().getLaunchManager().removeLaunch(pendingLaunch); } else { monitor.worked(2); /* don't wait for jobs to finish */ @@ -1273,28 +1273,28 @@ public class DebugUIPlugin extends AbstractUIPlugin implements ILaunchListener, * * @return label without accelerators */ - public static String removeAccelerators(String label) { - String title = label; - if (title != null) { - // strip out any '&' (accelerators) - int index = title.indexOf('&'); - if (index == 0) { - title = title.substring(1); - } else if (index > 0) { - //DBCS languages use "(&X)" format - if (title.charAt(index - 1) == '(' && title.length() >= index + 3 && title.charAt(index + 2) == ')') { - String first = title.substring(0, index - 1); - String last = title.substring(index + 3); - title = first + last; - } else if (index < (title.length() - 1)) { - String first = title.substring(0, index); - String last = title.substring(index + 1); - title = first + last; - } - } - } - return title; - } + public static String removeAccelerators(String label) { + String title = label; + if (title != null) { + // strip out any '&' (accelerators) + int index = title.indexOf('&'); + if (index == 0) { + title = title.substring(1); + } else if (index > 0) { + //DBCS languages use "(&X)" format + if (title.charAt(index - 1) == '(' && title.length() >= index + 3 && title.charAt(index + 2) == ')') { + String first = title.substring(0, index - 1); + String last = title.substring(index + 3); + title = first + last; + } else if (index < (title.length() - 1)) { + String first = title.substring(0, index); + String last = title.substring(index + 1); + title = first + last; + } + } + } + return title; + } /** * Returns the label with any DBCS accelerator moved to the end of the string. @@ -1303,52 +1303,52 @@ public class DebugUIPlugin extends AbstractUIPlugin implements ILaunchListener, * * @return label with moved accelerator */ - public static String adjustDBCSAccelerator(String label) { - String title = label; - if (title != null) { - // strip out any '&' (accelerators) - int index = title.indexOf('&'); - if (index > 0) { - //DBCS languages use "(&X)" format - if (title.charAt(index - 1) == '(' && title.length() >= index + 3 && title.charAt(index + 2) == ')') { - String first = title.substring(0, index - 1); - String accel = title.substring(index - 1, index + 3); - String last = title.substring(index + 3); - title = first + last; - if (title.endsWith("...")) { //$NON-NLS-1$ - title = title.substring(0, title.length() - 3); - title = title + accel + "..."; //$NON-NLS-1$ - } else { - title = title + accel; - } - } - } - } - return title; - } - - /** - * Returns the image descriptor registry used for this plug-in. - * @return the singleton {@link ImageDescriptorRegistry} - * - * @since 3.1 - */ - public static ImageDescriptorRegistry getImageDescriptorRegistry() { - if (getDefault().fImageDescriptorRegistry == null) { - getDefault().fImageDescriptorRegistry = new ImageDescriptorRegistry(); - } - return getDefault().fImageDescriptorRegistry; - } - - /** - * Returns an image descriptor for the icon referenced by the given attribute - * and configuration element, or <code>null</code> if none. - * - * @param element the configuration element - * @param attr the name of the attribute - * @return image descriptor or <code>null</code> - */ - public static ImageDescriptor getImageDescriptor(IConfigurationElement element, String attr) { + public static String adjustDBCSAccelerator(String label) { + String title = label; + if (title != null) { + // strip out any '&' (accelerators) + int index = title.indexOf('&'); + if (index > 0) { + //DBCS languages use "(&X)" format + if (title.charAt(index - 1) == '(' && title.length() >= index + 3 && title.charAt(index + 2) == ')') { + String first = title.substring(0, index - 1); + String accel = title.substring(index - 1, index + 3); + String last = title.substring(index + 3); + title = first + last; + if (title.endsWith("...")) { //$NON-NLS-1$ + title = title.substring(0, title.length() - 3); + title = title + accel + "..."; //$NON-NLS-1$ + } else { + title = title + accel; + } + } + } + } + return title; + } + + /** + * Returns the image descriptor registry used for this plug-in. + * @return the singleton {@link ImageDescriptorRegistry} + * + * @since 3.1 + */ + public static ImageDescriptorRegistry getImageDescriptorRegistry() { + if (getDefault().fImageDescriptorRegistry == null) { + getDefault().fImageDescriptorRegistry = new ImageDescriptorRegistry(); + } + return getDefault().fImageDescriptorRegistry; + } + + /** + * Returns an image descriptor for the icon referenced by the given attribute + * and configuration element, or <code>null</code> if none. + * + * @param element the configuration element + * @param attr the name of the attribute + * @return image descriptor or <code>null</code> + */ + public static ImageDescriptor getImageDescriptor(IConfigurationElement element, String attr) { Bundle bundle = Platform.getBundle(element.getContributor().getName()); String iconPath = element.getAttribute(attr); if (iconPath != null) { @@ -1367,18 +1367,18 @@ public class DebugUIPlugin extends AbstractUIPlugin implements ILaunchListener, } } return null; - } - - /** - * Returns an image descriptor for the icon referenced by the given path - * and contributor name, or <code>null</code> if none. - * - * @param name the name of the contributor - * @param path the path of the icon (from the configuration element) - * @return image descriptor or <code>null</code> - * @since 3.3 - */ - public static ImageDescriptor getImageDescriptor(String name, String path) { + } + + /** + * Returns an image descriptor for the icon referenced by the given path + * and contributor name, or <code>null</code> if none. + * + * @param name the name of the contributor + * @param path the path of the icon (from the configuration element) + * @return image descriptor or <code>null</code> + * @since 3.3 + */ + public static ImageDescriptor getImageDescriptor(String name, String path) { Bundle bundle = Platform.getBundle(name); if (path != null) { URL iconURL = FileLocator.find(bundle , new Path(path), null); @@ -1387,9 +1387,9 @@ public class DebugUIPlugin extends AbstractUIPlugin implements ILaunchListener, } } return null; - } + } - /** + /** * Performs extra filtering for launch configurations based on the preferences set on the * Launch Configurations page * @param config the config to filter @@ -1409,7 +1409,7 @@ public class DebugUIPlugin extends AbstractUIPlugin implements ILaunchListener, ret &= new LaunchConfigurationTypeFilter().select(null, null, config.getType()); } catch(CoreException e) { - DebugUIPlugin.log(e); + DebugUIPlugin.log(e); } } return ret; diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIPreferenceInitializer.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIPreferenceInitializer.java index 59de95449..955bda6f4 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIPreferenceInitializer.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIPreferenceInitializer.java @@ -160,7 +160,7 @@ public class DebugUIPreferenceInitializer extends AbstractPreferenceInitializer * * @since 3.5 */ - prefs.setDefault(IDebugPreferenceConstants.DEBUG_VIEW_MODE, IDebugPreferenceConstants.DEBUG_VIEW_MODE_AUTO); + prefs.setDefault(IDebugPreferenceConstants.DEBUG_VIEW_MODE, IDebugPreferenceConstants.DEBUG_VIEW_MODE_AUTO); } /** diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DefaultLabelProvider.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DefaultLabelProvider.java index 8c5021e06..9254cd8b2 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DefaultLabelProvider.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DefaultLabelProvider.java @@ -441,38 +441,38 @@ public class DefaultLabelProvider implements ILabelProvider { protected String getBreakpointImageKey(IBreakpoint breakpoint) { if (breakpoint != null && breakpoint.getMarker().exists()) { - try { - boolean enabled = breakpoint.isEnabled(); - if (breakpoint instanceof IWatchpoint) { - IWatchpoint watchpoint = (IWatchpoint) breakpoint; - if (watchpoint.isAccess()) { - if (watchpoint.isModification()) { - //access and modification - if (enabled) { - return IDebugUIConstants.IMG_OBJS_WATCHPOINT; - } - return IDebugUIConstants.IMG_OBJS_WATCHPOINT_DISABLED; - } - if (enabled) { - return IDebugUIConstants.IMG_OBJS_ACCESS_WATCHPOINT; - } - return IDebugUIConstants.IMG_OBJS_ACCESS_WATCHPOINT_DISABLED; - } else if (watchpoint.isModification()) { - if (enabled) { - return IDebugUIConstants.IMG_OBJS_MODIFICATION_WATCHPOINT; - } - return IDebugUIConstants.IMG_OBJS_MODIFICATION_WATCHPOINT_DISABLED; - } else { - //neither access nor modification - return IDebugUIConstants.IMG_OBJS_WATCHPOINT_DISABLED; - } - } - if (enabled) { + try { + boolean enabled = breakpoint.isEnabled(); + if (breakpoint instanceof IWatchpoint) { + IWatchpoint watchpoint = (IWatchpoint) breakpoint; + if (watchpoint.isAccess()) { + if (watchpoint.isModification()) { + //access and modification + if (enabled) { + return IDebugUIConstants.IMG_OBJS_WATCHPOINT; + } + return IDebugUIConstants.IMG_OBJS_WATCHPOINT_DISABLED; + } + if (enabled) { + return IDebugUIConstants.IMG_OBJS_ACCESS_WATCHPOINT; + } + return IDebugUIConstants.IMG_OBJS_ACCESS_WATCHPOINT_DISABLED; + } else if (watchpoint.isModification()) { + if (enabled) { + return IDebugUIConstants.IMG_OBJS_MODIFICATION_WATCHPOINT; + } + return IDebugUIConstants.IMG_OBJS_MODIFICATION_WATCHPOINT_DISABLED; + } else { + //neither access nor modification + return IDebugUIConstants.IMG_OBJS_WATCHPOINT_DISABLED; + } + } + if (enabled) { return IDebugUIConstants.IMG_OBJS_BREAKPOINT; } return IDebugUIConstants.IMG_OBJS_BREAKPOINT_DISABLED; - } catch (CoreException e) { - } + } catch (CoreException e) { + } } return null; } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DelegatingModelPresentation.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DelegatingModelPresentation.java index 94bf2b550..20694eba4 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DelegatingModelPresentation.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DelegatingModelPresentation.java @@ -146,14 +146,14 @@ public class DelegatingModelPresentation implements IDebugModelPresentation, IDe return getDefaultImage(item); } - @Override + @Override public String getText(Object item) { - IDebugModelPresentation lp= getConfiguredPresentation(item); - if (lp != null) { - return lp.getText(item); - } - return getDefaultText(item); - } + IDebugModelPresentation lp= getConfiguredPresentation(item); + if (lp != null) { + return lp.getText(item); + } + return getDefaultText(item); + } @Override public IEditorInput getEditorInput(Object item) { @@ -319,35 +319,35 @@ public class DelegatingModelPresentation implements IDebugModelPresentation, IDe return fLabelProviders; } - @Override + @Override public Color getForeground(Object element) { - IDebugModelPresentation presentation = getConfiguredPresentation(element); - if (presentation instanceof IColorProvider) { - IColorProvider colorProvider = (IColorProvider) presentation; - return colorProvider.getForeground(element); - } - return null; - } - - @Override + IDebugModelPresentation presentation = getConfiguredPresentation(element); + if (presentation instanceof IColorProvider) { + IColorProvider colorProvider = (IColorProvider) presentation; + return colorProvider.getForeground(element); + } + return null; + } + + @Override public Color getBackground(Object element) { - IDebugModelPresentation presentation = getConfiguredPresentation(element); - if (presentation instanceof IColorProvider) { - IColorProvider colorProvider = (IColorProvider) presentation; - return colorProvider.getBackground(element); - } - return null; - } - - @Override + IDebugModelPresentation presentation = getConfiguredPresentation(element); + if (presentation instanceof IColorProvider) { + IColorProvider colorProvider = (IColorProvider) presentation; + return colorProvider.getBackground(element); + } + return null; + } + + @Override public Font getFont(Object element) { - IDebugModelPresentation presentation = getConfiguredPresentation(element); - if (presentation instanceof IFontProvider) { - IFontProvider fontProvider = (IFontProvider) presentation; - return fontProvider.getFont(element); - } - return null; - } + IDebugModelPresentation presentation = getConfiguredPresentation(element); + if (presentation instanceof IFontProvider) { + IFontProvider fontProvider = (IFontProvider) presentation; + return fontProvider.getFont(element); + } + return null; + } @Override public Annotation getInstructionPointerAnnotation(IEditorPart editorPart, IStackFrame frame) { @@ -371,7 +371,7 @@ public class DelegatingModelPresentation implements IDebugModelPresentation, IDe } } if (annotation == null) { - boolean defaultAnnotation = id == null; + boolean defaultAnnotation = id == null; if (id == null || text == null || (defaultAnnotation && image == null)) { IThread thread = frame.getThread(); IStackFrame tos = null; diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/IDebugHelpContextIds.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/IDebugHelpContextIds.java index 439243b8a..d1d2216c4 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/IDebugHelpContextIds.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/IDebugHelpContextIds.java @@ -61,27 +61,27 @@ public interface IDebugHelpContextIds { String DETAIL_PANE_PASTE_ACTION = PREFIX + "detail_pane_paste_action_context"; //$NON-NLS-1$ String DETAIL_PANE_SELECT_ALL_ACTION = PREFIX + "detail_pane_select_all_action_context"; //$NON-NLS-1$ String DETAIL_PANE_FIND_REPLACE_ACTION = PREFIX + "detail_pane_find_replace_action_context"; //$NON-NLS-1$ - String DETAIL_PANE_WORD_WRAP_ACTION = PREFIX + "detail_pane_word_wrap_action_context"; //$NON-NLS-1$ - String DETAIL_PANE_MAX_LENGTH_ACTION = PREFIX + "detail_pane_max_length_action_context"; //$NON-NLS-1$ - String CONSOLE_TERMINATE_ACTION = PREFIX + "console_terminate_action_context"; //$NON-NLS-1$ - String CONSOLE_REMOVE_ALL_TERMINATED = PREFIX + "console_remove_all_terminated_context"; //$NON-NLS-1$ - String CONSOLE_REMOVE_LAUNCH = PREFIX + "console_remove_launch_context"; //$NON-NLS-1$; - String CONSOLE_SHOW_PREFERENCES = PREFIX + "console_show_preferences_action_context"; //$NON-NLS-1$ - String SHOW_COLUMNS_ACTION = PREFIX + "show_columns_context"; //$NON-NLS-1$; - String CONFIGURE_COLUMNS_ACTION = PREFIX + "configure_columns_context"; //$NON-NLS-1$; - String MEMORY_VIEW_PANE_ORIENTATION_ACTION = PREFIX + "memory_view_pane_orientation_action_context"; //$NON-NLS-1$ - String SHOW_WHEN_STDOUT_CHANGES_ACTION = PREFIX + "show_stdout_action_context"; //$NON-NLS-1$ - String SHOW_WHEN_STDERR_CHANGES_ACTION = PREFIX + "show_stderr_action_context"; //$NON-NLS-1$ - String HORIZONTAL_DETAIL_PANE_LAYOUT_ACTION = PREFIX + "horizontal_detail_pane_layout_action_context"; //$NON-NLS-1$ - String VERTICAL_DETAIL_PANE_LAYOUT_ACTION = PREFIX + "vertical_detail_pane_layout_action_context"; //$NON-NLS-1$ - String DETAIL_PANE_HIDDEN_LAYOUT_ACTION = PREFIX + "detail_pane_hidden_layout_action_context"; //$NON-NLS-1$ - String DEBUG_VIEW_MODE_AUTO_ACTION = PREFIX + "debug_view_mode_auto_action_context"; //$NON-NLS-1$ - String DEBUG_VIEW_MODE_FULL_ACTION = PREFIX + "debug_view_mode_full_action_context"; //$NON-NLS-1$ - String DEBUG_VIEW_MODE_COMPACT_ACTION = PREFIX + "debug_view_mode_compact_action_context"; //$NON-NLS-1$ - String DEBUG_VIEW_DROP_DOWN_AUTOEXPAND_ACTION = PREFIX + "debug_view_drop_down_autoexpand_action_context"; //$NON-NLS-1$ - String DEBUG_TOOLBAR_VIEW_ACTION = PREFIX + "debug_toolbar_view_action_context"; //$NON-NLS-1$ - String DEBUG_TOOLBAR_WINDOW_ACTION = PREFIX + "debug_toolbar_window_action_context"; //$NON-NLS-1$ - String DEBUG_TOOLBAR_BOTH_ACTION = PREFIX + "debug_toolbar_both_action_context"; //$NON-NLS-1$ + String DETAIL_PANE_WORD_WRAP_ACTION = PREFIX + "detail_pane_word_wrap_action_context"; //$NON-NLS-1$ + String DETAIL_PANE_MAX_LENGTH_ACTION = PREFIX + "detail_pane_max_length_action_context"; //$NON-NLS-1$ + String CONSOLE_TERMINATE_ACTION = PREFIX + "console_terminate_action_context"; //$NON-NLS-1$ + String CONSOLE_REMOVE_ALL_TERMINATED = PREFIX + "console_remove_all_terminated_context"; //$NON-NLS-1$ + String CONSOLE_REMOVE_LAUNCH = PREFIX + "console_remove_launch_context"; //$NON-NLS-1$; + String CONSOLE_SHOW_PREFERENCES = PREFIX + "console_show_preferences_action_context"; //$NON-NLS-1$ + String SHOW_COLUMNS_ACTION = PREFIX + "show_columns_context"; //$NON-NLS-1$; + String CONFIGURE_COLUMNS_ACTION = PREFIX + "configure_columns_context"; //$NON-NLS-1$; + String MEMORY_VIEW_PANE_ORIENTATION_ACTION = PREFIX + "memory_view_pane_orientation_action_context"; //$NON-NLS-1$ + String SHOW_WHEN_STDOUT_CHANGES_ACTION = PREFIX + "show_stdout_action_context"; //$NON-NLS-1$ + String SHOW_WHEN_STDERR_CHANGES_ACTION = PREFIX + "show_stderr_action_context"; //$NON-NLS-1$ + String HORIZONTAL_DETAIL_PANE_LAYOUT_ACTION = PREFIX + "horizontal_detail_pane_layout_action_context"; //$NON-NLS-1$ + String VERTICAL_DETAIL_PANE_LAYOUT_ACTION = PREFIX + "vertical_detail_pane_layout_action_context"; //$NON-NLS-1$ + String DETAIL_PANE_HIDDEN_LAYOUT_ACTION = PREFIX + "detail_pane_hidden_layout_action_context"; //$NON-NLS-1$ + String DEBUG_VIEW_MODE_AUTO_ACTION = PREFIX + "debug_view_mode_auto_action_context"; //$NON-NLS-1$ + String DEBUG_VIEW_MODE_FULL_ACTION = PREFIX + "debug_view_mode_full_action_context"; //$NON-NLS-1$ + String DEBUG_VIEW_MODE_COMPACT_ACTION = PREFIX + "debug_view_mode_compact_action_context"; //$NON-NLS-1$ + String DEBUG_VIEW_DROP_DOWN_AUTOEXPAND_ACTION = PREFIX + "debug_view_drop_down_autoexpand_action_context"; //$NON-NLS-1$ + String DEBUG_TOOLBAR_VIEW_ACTION = PREFIX + "debug_toolbar_view_action_context"; //$NON-NLS-1$ + String DEBUG_TOOLBAR_WINDOW_ACTION = PREFIX + "debug_toolbar_window_action_context"; //$NON-NLS-1$ + String DEBUG_TOOLBAR_BOTH_ACTION = PREFIX + "debug_toolbar_both_action_context"; //$NON-NLS-1$ // Views String DEBUG_VIEW = PREFIX + "debug_view_context"; //$NON-NLS-1$ @@ -91,7 +91,7 @@ public interface IDebugHelpContextIds { String LAUNCH_CONFIGURATION_VIEW = PREFIX + "launch_configuration_view_context"; //$NON-NLS-1$ String REGISTERS_VIEW = PREFIX + "registers_view_context"; //$NON-NLS-1$ String PROCESS_CONSOLE = PREFIX + "process_console_context"; //$NON-NLS-1$ - String MODULES_VIEW = PREFIX + "modules_view_context"; //$NON-NLS-1$ + String MODULES_VIEW = PREFIX + "modules_view_context"; //$NON-NLS-1$ // Preference pages String DEBUG_PREFERENCE_PAGE = PREFIX + "debug_preference_page_context"; //$NON-NLS-1$ diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/IInternalDebugUIConstants.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/IInternalDebugUIConstants.java index fb4a8a76e..270fa4468 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/IInternalDebugUIConstants.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/IInternalDebugUIConstants.java @@ -24,288 +24,288 @@ import org.eclipse.debug.ui.IDebugUIConstants; public interface IInternalDebugUIConstants { - String DIALOGSTORE_LASTEXTJAR= "org.eclipse.debug.ui.lastextjar"; //$NON-NLS-1$ - - //Folders - String ID_NAVIGATOR_FOLDER_VIEW= "org.eclipse.debug.internal.ui.NavigatorFolderView"; //$NON-NLS-1$ - String ID_TOOLS_FOLDER_VIEW= "org.eclipse.debug.internal.ui.ToolsFolderView"; //$NON-NLS-1$ - String ID_CONSOLE_FOLDER_VIEW= "org.eclipse.debug.internal.ui.ConsoleFolderView"; //$NON-NLS-1$ - String ID_OUTLINE_FOLDER_VIEW= "org.eclipse.debug.internal.ui.OutlineFolderView"; //$NON-NLS-1$ - - // tool images - String IMG_LCL_COLLAPSE_ALL = "IMG_LCL_COLLAPSE_ALL"; //$NON-NLS-1$ - String IMG_LCL_TERMINATE = "IMG_LCL_TERMINATE"; //$NON-NLS-1$ - String IMG_LCL_SHOW_LOGICAL_STRUCTURE = "IMG_LCL_SHOW_LOGICAL_STRUCTURE"; //$NON-NLS-1$ - String IMG_LCL_RUN_TO_LINE= "IMG_LCL_RUN_TO_LINE"; //$NON-NLS-1$ - String IMG_SRC_LOOKUP_MENU = "IMG_SRC_LOOKUP_MENU"; //$NON-NLS-1$ - - /** - * @deprecated Use IDebugUIConstants#IMG_LCL_ADD - */ - @Deprecated String IMG_LCL_MONITOR_EXPRESSION= IDebugUIConstants.IMG_LCL_ADD; - String IMG_LCL_REMOVE_MEMORY= "IMG_LCL_REMOVE_MEMORY"; //$NON-NLS-1$ - String IMG_LCL_RESET_MEMORY= "IMG_LCL_RESET_MEMORY";//$NON-NLS-1$ - String IMG_LCL_COPY_VIEW_TO_CLIPBOARD = "IMG_LCL_COPY_VIEW_TO_CLIPBOARD"; //$NON-NLS-1$ - String IMG_LCL_PRINT_TOP_VIEW_TAB = "IMG_LCL_PRINT_TOP_VIEW_TAB"; //$NON-NLS-1$ - - // disabled local tool images - String IMG_DLCL_LOCK= "IMG_DLCL_LOCK"; //$NON-NLS-1$ - String IMG_DLCL_DETAIL_PANE= "IMG_DLCL_DETAIL_PANE"; //$NON-NLS-1$ - String IMG_DLCL_CHANGE_VARIABLE_VALUE= "IMG_DLCL_CHANGE_VARIABLE_VALUE"; //$NON-NLS-1$ - String IMG_DLCL_TYPE_NAMES= "IMG_DLCL_TYPE_NAMES"; //$NON-NLS-1$ - String IMG_DLCL_SHOW_LOGICAL_STRUCTURE= "IMG_DLCL_SHOW_LOGICAL_STRUCTURE"; //$NON-NLS-1$ - String IMG_DLCL_DETAIL_PANE_UNDER= "IMG_DLCL_DETAIL_PANE_UNDER"; //$NON-NLS-1$ - String IMG_DLCL_DETAIL_PANE_RIGHT= "IMG_DLCL_DETAIL_PANE_RIGHT"; //$NON-NLS-1$ - String IMG_DLCL_DETAIL_PANE_HIDE= "IMG_DLCL_DETAIL_PANE_HIDE"; //$NON-NLS-1$ - String IMG_DLCL_DETAIL_PANE_AUTO= "IMG_DLCL_DETAIL_PANE_AUTO"; //$NON-NLS-1$ - String IMG_DLCL_COLLAPSE_ALL = "IMG_DLCL_COLLAPSE_ALL"; //$NON-NLS-1$ - String IMG_DLCL_TERMINATE = "IMG_DLCL_TERMINATE"; //$NON-NLS-1$ - String IMG_DLCL_REMOVE_ALL = "IMG_DLCL_REMOVE_ALL"; //$NON-NLS-1$ - String IMG_DLCL_REMOVE = "IMG_DLCL_REMOVE"; //$NON-NLS-1$ - String IMG_DLCL_RUN_TO_LINE= "IMG_DLCL_RUN_TO_LINE"; //$NON-NLS-1$ - String IMG_SRC_LOOKUP_MENU_DLCL = "IMG_SRC_LOOKUP_MENU_DISABLED"; //$NON-NLS-1$ - String IMG_DLCL_MONITOR_EXPRESSION= "IMG_DLCL_MONITOR_EXPRESSION"; //$NON-NLS-1$ - String IMG_DLCL_REMOVE_MEMORY= "IMG_DLCL_REMOVE_MEMORY"; //$NON-NLS-1$ - String IMG_DLCL_RESET_MEMORY= "IMG_DLCL_RESET_MEMORY"; //$NON-NLS-1$ - String IMG_DLCL_COPY_VIEW_TO_CLIPBOARD= "IMG_DLCL_COPY_VIEW_TO_CLIPBOARD"; //$NON-NLS-1$ - String IMG_DLCL_PRINT_TOP_VIEW_TAB= "IMG_DLCL_PRINT_TOP_VIEW_TAB"; //$NON-NLS-1$ - String IMG_DLCL_NEW_CONFIG = "IMG_DLCL_NEW_CONFIG"; //$NON-NLS-1$ - String IMG_DLCL_DUPLICATE_CONFIG = "IMG_DLCL_DUPLICATE_CONFIG"; //$NON-NLS-1$ - String IMG_DLCL_DELETE_CONFIG = "IMG_DLCL_DELETE_CONFIG"; //$NON-NLS-1$ - String IMG_DLCL_FILTER_CONFIGS = "IMG_DLCL_FILTER_CONFIGS"; //$NON-NLS-1$ - String IMG_DLCL_NEW_PROTO = "IMG_DLCL_NEW_PROTO"; //$NON-NLS-1$ - String IMG_DLCL_LINK_PROTO = "IMG_DLCL_LINK_PROTO"; //$NON-NLS-1$ - String IMG_DLCL_UNLINK_PROTO = "IMG_DLCL_UNLINK_PROTO"; //$NON-NLS-1$ - String IMG_DLCL_RESET_PROTO = "IMG_DLCL_RESET_PROTO"; //$NON-NLS-1$ - String IMG_DLCL_SUSPEND = "IMG_DLCL_SUSPEND"; //$NON-NLS-1$ - String IMG_DLCL_RESUME = "IMG_DLCL_RESUME"; //$NON-NLS-1$ - String IMG_DLCL_STEP_RETURN = "IMG_DLCL_STEP_RETURN"; //$NON-NLS-1$ - String IMG_DLCL_STEP_OVER = "IMG_DLCL_STEP_OVER"; //$NON-NLS-1$ - String IMG_DLCL_STEP_INTO = "IMG_DLCL_STEP_INTO"; //$NON-NLS-1$ - String IMG_DLCL_TERMINATE_AND_REMOVE = "IMG_DLCL_TERMINATE_AND_REMOVE"; //$NON-NLS-1$ - String IMG_DLCL_TERMINATE_ALL = "IMG_DLCL_TERMINATE_ALL"; //$NON-NLS-1$ - String IMG_DLCL_TERMINATE_AND_RELAUNCH = "IMG_DLCL_TERMINATE_AND_RELAUNCH"; //$NON-NLS-1$ - String IMG_DLCL_TOGGLE_STEP_FILTERS = "IMG_DLCL_TOGGLE_STEP_FILTERS"; //$NON-NLS-1$ - String IMG_DLCL_NEXT_THREAD = "IMG_DLCL_NEXT_THREAD"; //$NON-NLS-1$ - String IMG_DLCL_PREVIOUS_THREAD = "IMG_DLCL_PREVIOUS_THREAD"; //$NON-NLS-1$ - String IMG_DLCL_RESTART = "IMG_DLCL_RESTART"; //$NON-NLS-1$ + String DIALOGSTORE_LASTEXTJAR= "org.eclipse.debug.ui.lastextjar"; //$NON-NLS-1$ + + //Folders + String ID_NAVIGATOR_FOLDER_VIEW= "org.eclipse.debug.internal.ui.NavigatorFolderView"; //$NON-NLS-1$ + String ID_TOOLS_FOLDER_VIEW= "org.eclipse.debug.internal.ui.ToolsFolderView"; //$NON-NLS-1$ + String ID_CONSOLE_FOLDER_VIEW= "org.eclipse.debug.internal.ui.ConsoleFolderView"; //$NON-NLS-1$ + String ID_OUTLINE_FOLDER_VIEW= "org.eclipse.debug.internal.ui.OutlineFolderView"; //$NON-NLS-1$ + + // tool images + String IMG_LCL_COLLAPSE_ALL = "IMG_LCL_COLLAPSE_ALL"; //$NON-NLS-1$ + String IMG_LCL_TERMINATE = "IMG_LCL_TERMINATE"; //$NON-NLS-1$ + String IMG_LCL_SHOW_LOGICAL_STRUCTURE = "IMG_LCL_SHOW_LOGICAL_STRUCTURE"; //$NON-NLS-1$ + String IMG_LCL_RUN_TO_LINE= "IMG_LCL_RUN_TO_LINE"; //$NON-NLS-1$ + String IMG_SRC_LOOKUP_MENU = "IMG_SRC_LOOKUP_MENU"; //$NON-NLS-1$ + + /** + * @deprecated Use IDebugUIConstants#IMG_LCL_ADD + */ + @Deprecated String IMG_LCL_MONITOR_EXPRESSION= IDebugUIConstants.IMG_LCL_ADD; + String IMG_LCL_REMOVE_MEMORY= "IMG_LCL_REMOVE_MEMORY"; //$NON-NLS-1$ + String IMG_LCL_RESET_MEMORY= "IMG_LCL_RESET_MEMORY";//$NON-NLS-1$ + String IMG_LCL_COPY_VIEW_TO_CLIPBOARD = "IMG_LCL_COPY_VIEW_TO_CLIPBOARD"; //$NON-NLS-1$ + String IMG_LCL_PRINT_TOP_VIEW_TAB = "IMG_LCL_PRINT_TOP_VIEW_TAB"; //$NON-NLS-1$ + + // disabled local tool images + String IMG_DLCL_LOCK= "IMG_DLCL_LOCK"; //$NON-NLS-1$ + String IMG_DLCL_DETAIL_PANE= "IMG_DLCL_DETAIL_PANE"; //$NON-NLS-1$ + String IMG_DLCL_CHANGE_VARIABLE_VALUE= "IMG_DLCL_CHANGE_VARIABLE_VALUE"; //$NON-NLS-1$ + String IMG_DLCL_TYPE_NAMES= "IMG_DLCL_TYPE_NAMES"; //$NON-NLS-1$ + String IMG_DLCL_SHOW_LOGICAL_STRUCTURE= "IMG_DLCL_SHOW_LOGICAL_STRUCTURE"; //$NON-NLS-1$ + String IMG_DLCL_DETAIL_PANE_UNDER= "IMG_DLCL_DETAIL_PANE_UNDER"; //$NON-NLS-1$ + String IMG_DLCL_DETAIL_PANE_RIGHT= "IMG_DLCL_DETAIL_PANE_RIGHT"; //$NON-NLS-1$ + String IMG_DLCL_DETAIL_PANE_HIDE= "IMG_DLCL_DETAIL_PANE_HIDE"; //$NON-NLS-1$ + String IMG_DLCL_DETAIL_PANE_AUTO= "IMG_DLCL_DETAIL_PANE_AUTO"; //$NON-NLS-1$ + String IMG_DLCL_COLLAPSE_ALL = "IMG_DLCL_COLLAPSE_ALL"; //$NON-NLS-1$ + String IMG_DLCL_TERMINATE = "IMG_DLCL_TERMINATE"; //$NON-NLS-1$ + String IMG_DLCL_REMOVE_ALL = "IMG_DLCL_REMOVE_ALL"; //$NON-NLS-1$ + String IMG_DLCL_REMOVE = "IMG_DLCL_REMOVE"; //$NON-NLS-1$ + String IMG_DLCL_RUN_TO_LINE= "IMG_DLCL_RUN_TO_LINE"; //$NON-NLS-1$ + String IMG_SRC_LOOKUP_MENU_DLCL = "IMG_SRC_LOOKUP_MENU_DISABLED"; //$NON-NLS-1$ + String IMG_DLCL_MONITOR_EXPRESSION= "IMG_DLCL_MONITOR_EXPRESSION"; //$NON-NLS-1$ + String IMG_DLCL_REMOVE_MEMORY= "IMG_DLCL_REMOVE_MEMORY"; //$NON-NLS-1$ + String IMG_DLCL_RESET_MEMORY= "IMG_DLCL_RESET_MEMORY"; //$NON-NLS-1$ + String IMG_DLCL_COPY_VIEW_TO_CLIPBOARD= "IMG_DLCL_COPY_VIEW_TO_CLIPBOARD"; //$NON-NLS-1$ + String IMG_DLCL_PRINT_TOP_VIEW_TAB= "IMG_DLCL_PRINT_TOP_VIEW_TAB"; //$NON-NLS-1$ + String IMG_DLCL_NEW_CONFIG = "IMG_DLCL_NEW_CONFIG"; //$NON-NLS-1$ + String IMG_DLCL_DUPLICATE_CONFIG = "IMG_DLCL_DUPLICATE_CONFIG"; //$NON-NLS-1$ + String IMG_DLCL_DELETE_CONFIG = "IMG_DLCL_DELETE_CONFIG"; //$NON-NLS-1$ + String IMG_DLCL_FILTER_CONFIGS = "IMG_DLCL_FILTER_CONFIGS"; //$NON-NLS-1$ + String IMG_DLCL_NEW_PROTO = "IMG_DLCL_NEW_PROTO"; //$NON-NLS-1$ + String IMG_DLCL_LINK_PROTO = "IMG_DLCL_LINK_PROTO"; //$NON-NLS-1$ + String IMG_DLCL_UNLINK_PROTO = "IMG_DLCL_UNLINK_PROTO"; //$NON-NLS-1$ + String IMG_DLCL_RESET_PROTO = "IMG_DLCL_RESET_PROTO"; //$NON-NLS-1$ + String IMG_DLCL_SUSPEND = "IMG_DLCL_SUSPEND"; //$NON-NLS-1$ + String IMG_DLCL_RESUME = "IMG_DLCL_RESUME"; //$NON-NLS-1$ + String IMG_DLCL_STEP_RETURN = "IMG_DLCL_STEP_RETURN"; //$NON-NLS-1$ + String IMG_DLCL_STEP_OVER = "IMG_DLCL_STEP_OVER"; //$NON-NLS-1$ + String IMG_DLCL_STEP_INTO = "IMG_DLCL_STEP_INTO"; //$NON-NLS-1$ + String IMG_DLCL_TERMINATE_AND_REMOVE = "IMG_DLCL_TERMINATE_AND_REMOVE"; //$NON-NLS-1$ + String IMG_DLCL_TERMINATE_ALL = "IMG_DLCL_TERMINATE_ALL"; //$NON-NLS-1$ + String IMG_DLCL_TERMINATE_AND_RELAUNCH = "IMG_DLCL_TERMINATE_AND_RELAUNCH"; //$NON-NLS-1$ + String IMG_DLCL_TOGGLE_STEP_FILTERS = "IMG_DLCL_TOGGLE_STEP_FILTERS"; //$NON-NLS-1$ + String IMG_DLCL_NEXT_THREAD = "IMG_DLCL_NEXT_THREAD"; //$NON-NLS-1$ + String IMG_DLCL_PREVIOUS_THREAD = "IMG_DLCL_PREVIOUS_THREAD"; //$NON-NLS-1$ + String IMG_DLCL_RESTART = "IMG_DLCL_RESTART"; //$NON-NLS-1$ String IMG_DLCL_EXPORT_CONFIG = "IMG_DLCL_EXPORT_CONFIG"; //$NON-NLS-1$ - //TODO: Move this IDebugUIConstants. Created too late in 3.2 cycle to add API. - //The enabled icon is already API. - String IMG_DLCL_DISCONNECT= "IMG_DLCL_DISCONNECT"; //$NON-NLS-1$ - - // enabled local tool images - String IMG_ELCL_LOCK= "IMG_ELCL_LOCK"; //$NON-NLS-1$ - String IMG_ELCL_DETAIL_PANE= "IMG_ELCL_DETAIL_PANE"; //$NON-NLS-1$ - String IMG_ELCL_CHANGE_VARIABLE_VALUE= "IMG_ELCL_CHANGE_VARIABLE_VALUE"; //$NON-NLS-1$ - String IMG_ELCL_TYPE_NAMES= "IMG_ELCL_TYPE_NAMES"; //$NON-NLS-1$ - String IMG_ELCL_SHOW_LOGICAL_STRUCTURE= "IMG_ELCL_SHOW_LOGICAL_STRUCTURE"; //$NON-NLS-1$ - String IMG_ELCL_DETAIL_PANE_UNDER= "IMG_ELCL_DETAIL_PANE_UNDER"; //$NON-NLS-1$ - String IMG_ELCL_DETAIL_PANE_RIGHT= "IMG_ELCL_DETAIL_PANE_RIGHT"; //$NON-NLS-1$ - String IMG_ELCL_DETAIL_PANE_HIDE= "IMG_ELCL_DETAIL_PANE_HIDE"; //$NON-NLS-1$ - String IMG_ELCL_DETAIL_PANE_AUTO= "IMG_ELCL_DETAIL_PANE_AUTO"; //$NON-NLS-1$ - String IMG_ELCL_COLLAPSE_ALL = "IMG_ELCL_COLLAPSE_ALL"; //$NON-NLS-1$ - String IMG_ELCL_TERMINATE = "IMG_ELCL_TERMINATE"; //$NON-NLS-1$ - String IMG_SRC_LOOKUP_MENU_ELCL = "IMG_SRC_LOOKUP_MENU_ENABLED"; //$NON-NLS-1$ - String IMG_ELCL_MONITOR_EXPRESSION= "IMG_ELCL_MONITOR_EXPRESSION"; //$NON-NLS-1$ - String IMG_ELCL_REMOVE_MEMORY= "IMG_ELCL_REMOVE_MEMORY"; //$NON-NLS-1$ - String IMG_ELCL_RESET_MEMORY= "IMG_ELCL_RESET_MEMORY"; //$NON-NLS-1$ - String IMG_ELCL_COPY_VIEW_TO_CLIPBOARD= "IMG_ELCL_COPY_VIEW_TO_CLIPBOARD"; //$NON-NLS-1$ - String IMG_ELCL_PRINT_TOP_VIEW_TAB= "IMG_ELCL_PRINT_TOP_VIEW_TAB"; //$NON-NLS-1$ - String IMG_ELCL_REMOVE_ALL = "IMG_ELCL_REMOVE_ALL"; //$NON-NLS-1$ - String IMG_ELCL_REMOVE = "IMG_ELCL_REMOVE"; //$NON-NLS-1$ - String IMG_ELCL_HIERARCHICAL = "IMG_ELCL_HIERARCHICAL"; //$NON-NLS-1$ - String IMG_ELCL_HELP = "IMG_ELCL_HELP"; //$NON-NLS-1$ - String IMG_ELCL_NEW_CONFIG = "IMG_ELCL_NEW_CONFIG"; //$NON-NLS-1$ - String IMG_ELCL_DELETE_CONFIG = "IMG_ELCL_DELETE_CONFIG"; //$NON-NLS-1$ - String IMG_ELCL_FILTER_CONFIGS = "IMG_ELCL_FILTER_CONFIGS"; //$NON-NLS-1$ - String IMG_ELCL_DUPLICATE_CONFIG = "IMG_ELCL_DUPLICATE_CONFIG"; //$NON-NLS-1$ - String IMG_ELCL_NEW_PROTO = "IMG_ELCL_NEW_PROTO"; //$NON-NLS-1$ - String IMG_ELCL_LINK_PROTO = "IMG_ELCL_LINK_PROTO"; //$NON-NLS-1$ - String IMG_ELCL_UNLINK_PROTO = "IMG_ELCL_UNLINK_PROTO"; //$NON-NLS-1$ - String IMG_ELCL_RESET_PROTO = "IMG_ELCL_RESET_PROTO"; //$NON-NLS-1$ - String IMG_ELCL_SUSPEND = "IMG_ELCL_SUSPEND"; //$NON-NLS-1$ - String IMG_ELCL_RESUME = "IMG_ELCL_RESUME"; //$NON-NLS-1$ - String IMG_ELCL_STEP_RETURN = "IMG_ELCL_STEP_RETURN"; //$NON-NLS-1$ - String IMG_ELCL_STEP_OVER = "IMG_ELCL_STEP_OVER"; //$NON-NLS-1$ - String IMG_ELCL_STEP_INTO = "IMG_ELCL_STEP_INTO"; //$NON-NLS-1$ - String IMG_ELCL_DROP_TO_FRAME = "IMG_ELCL_DROP_TO_FRAME"; //$NON-NLS-1$ - String IMG_ELCL_TERMINATE_AND_REMOVE = "IMG_ELCL_TERMINATE_AND_REMOVE"; //$NON-NLS-1$ - String IMG_ELCL_TERMINATE_ALL = "IMG_ELCL_TERMINATE_ALL"; //$NON-NLS-1$ - String IMG_ELCL_TERMINATE_AND_RELAUNCH = "IMG_ELCL_TERMINATE_AND_RELAUNCH"; //$NON-NLS-1$ - String IMG_ELCL_TOGGLE_STEP_FILTERS = "IMG_ELCL_TOGGLE_STEP_FILTERS"; //$NON-NLS-1$ - String IMG_ELCL_STANDARD_OUT = "IMG_ELCL_STANDARD_OUT"; //$NON-NLS-1$ - String IMG_ELCL_STANDARD_ERR = "IMG_ELCL_STANDARD_ERR"; //$NON-NLS-1$ - String IMG_ELCL_NEXT_THREAD = "IMG_ELCL_NEXT_THREAD"; //$NON-NLS-1$ - String IMG_ELCL_PREVIOUS_THREAD = "IMG_ELCL_PREVIOUS_THREAD"; //$NON-NLS-1$ - String IMG_ELCL_RESTART = "IMG_ELCL_RESTART"; //$NON-NLS-1$ - String IMG_ELCL_DEBUG_VIEW_COMPACT_LAYOUT = "IMG_ELCL_DEBUG_VIEW_BREADCRUMB_LAYOUT"; //$NON-NLS-1$ + //TODO: Move this IDebugUIConstants. Created too late in 3.2 cycle to add API. + //The enabled icon is already API. + String IMG_DLCL_DISCONNECT= "IMG_DLCL_DISCONNECT"; //$NON-NLS-1$ + + // enabled local tool images + String IMG_ELCL_LOCK= "IMG_ELCL_LOCK"; //$NON-NLS-1$ + String IMG_ELCL_DETAIL_PANE= "IMG_ELCL_DETAIL_PANE"; //$NON-NLS-1$ + String IMG_ELCL_CHANGE_VARIABLE_VALUE= "IMG_ELCL_CHANGE_VARIABLE_VALUE"; //$NON-NLS-1$ + String IMG_ELCL_TYPE_NAMES= "IMG_ELCL_TYPE_NAMES"; //$NON-NLS-1$ + String IMG_ELCL_SHOW_LOGICAL_STRUCTURE= "IMG_ELCL_SHOW_LOGICAL_STRUCTURE"; //$NON-NLS-1$ + String IMG_ELCL_DETAIL_PANE_UNDER= "IMG_ELCL_DETAIL_PANE_UNDER"; //$NON-NLS-1$ + String IMG_ELCL_DETAIL_PANE_RIGHT= "IMG_ELCL_DETAIL_PANE_RIGHT"; //$NON-NLS-1$ + String IMG_ELCL_DETAIL_PANE_HIDE= "IMG_ELCL_DETAIL_PANE_HIDE"; //$NON-NLS-1$ + String IMG_ELCL_DETAIL_PANE_AUTO= "IMG_ELCL_DETAIL_PANE_AUTO"; //$NON-NLS-1$ + String IMG_ELCL_COLLAPSE_ALL = "IMG_ELCL_COLLAPSE_ALL"; //$NON-NLS-1$ + String IMG_ELCL_TERMINATE = "IMG_ELCL_TERMINATE"; //$NON-NLS-1$ + String IMG_SRC_LOOKUP_MENU_ELCL = "IMG_SRC_LOOKUP_MENU_ENABLED"; //$NON-NLS-1$ + String IMG_ELCL_MONITOR_EXPRESSION= "IMG_ELCL_MONITOR_EXPRESSION"; //$NON-NLS-1$ + String IMG_ELCL_REMOVE_MEMORY= "IMG_ELCL_REMOVE_MEMORY"; //$NON-NLS-1$ + String IMG_ELCL_RESET_MEMORY= "IMG_ELCL_RESET_MEMORY"; //$NON-NLS-1$ + String IMG_ELCL_COPY_VIEW_TO_CLIPBOARD= "IMG_ELCL_COPY_VIEW_TO_CLIPBOARD"; //$NON-NLS-1$ + String IMG_ELCL_PRINT_TOP_VIEW_TAB= "IMG_ELCL_PRINT_TOP_VIEW_TAB"; //$NON-NLS-1$ + String IMG_ELCL_REMOVE_ALL = "IMG_ELCL_REMOVE_ALL"; //$NON-NLS-1$ + String IMG_ELCL_REMOVE = "IMG_ELCL_REMOVE"; //$NON-NLS-1$ + String IMG_ELCL_HIERARCHICAL = "IMG_ELCL_HIERARCHICAL"; //$NON-NLS-1$ + String IMG_ELCL_HELP = "IMG_ELCL_HELP"; //$NON-NLS-1$ + String IMG_ELCL_NEW_CONFIG = "IMG_ELCL_NEW_CONFIG"; //$NON-NLS-1$ + String IMG_ELCL_DELETE_CONFIG = "IMG_ELCL_DELETE_CONFIG"; //$NON-NLS-1$ + String IMG_ELCL_FILTER_CONFIGS = "IMG_ELCL_FILTER_CONFIGS"; //$NON-NLS-1$ + String IMG_ELCL_DUPLICATE_CONFIG = "IMG_ELCL_DUPLICATE_CONFIG"; //$NON-NLS-1$ + String IMG_ELCL_NEW_PROTO = "IMG_ELCL_NEW_PROTO"; //$NON-NLS-1$ + String IMG_ELCL_LINK_PROTO = "IMG_ELCL_LINK_PROTO"; //$NON-NLS-1$ + String IMG_ELCL_UNLINK_PROTO = "IMG_ELCL_UNLINK_PROTO"; //$NON-NLS-1$ + String IMG_ELCL_RESET_PROTO = "IMG_ELCL_RESET_PROTO"; //$NON-NLS-1$ + String IMG_ELCL_SUSPEND = "IMG_ELCL_SUSPEND"; //$NON-NLS-1$ + String IMG_ELCL_RESUME = "IMG_ELCL_RESUME"; //$NON-NLS-1$ + String IMG_ELCL_STEP_RETURN = "IMG_ELCL_STEP_RETURN"; //$NON-NLS-1$ + String IMG_ELCL_STEP_OVER = "IMG_ELCL_STEP_OVER"; //$NON-NLS-1$ + String IMG_ELCL_STEP_INTO = "IMG_ELCL_STEP_INTO"; //$NON-NLS-1$ + String IMG_ELCL_DROP_TO_FRAME = "IMG_ELCL_DROP_TO_FRAME"; //$NON-NLS-1$ + String IMG_ELCL_TERMINATE_AND_REMOVE = "IMG_ELCL_TERMINATE_AND_REMOVE"; //$NON-NLS-1$ + String IMG_ELCL_TERMINATE_ALL = "IMG_ELCL_TERMINATE_ALL"; //$NON-NLS-1$ + String IMG_ELCL_TERMINATE_AND_RELAUNCH = "IMG_ELCL_TERMINATE_AND_RELAUNCH"; //$NON-NLS-1$ + String IMG_ELCL_TOGGLE_STEP_FILTERS = "IMG_ELCL_TOGGLE_STEP_FILTERS"; //$NON-NLS-1$ + String IMG_ELCL_STANDARD_OUT = "IMG_ELCL_STANDARD_OUT"; //$NON-NLS-1$ + String IMG_ELCL_STANDARD_ERR = "IMG_ELCL_STANDARD_ERR"; //$NON-NLS-1$ + String IMG_ELCL_NEXT_THREAD = "IMG_ELCL_NEXT_THREAD"; //$NON-NLS-1$ + String IMG_ELCL_PREVIOUS_THREAD = "IMG_ELCL_PREVIOUS_THREAD"; //$NON-NLS-1$ + String IMG_ELCL_RESTART = "IMG_ELCL_RESTART"; //$NON-NLS-1$ + String IMG_ELCL_DEBUG_VIEW_COMPACT_LAYOUT = "IMG_ELCL_DEBUG_VIEW_BREADCRUMB_LAYOUT"; //$NON-NLS-1$ String IMG_ELCL_EXPORT_CONFIG = "IMG_ELCL_EXPORT_CONFIG"; //$NON-NLS-1$ - String IMG_OBJS_COMMON_TAB = "IMG_OBJS_COMMON_TAB"; //$NON-NLS-1$ - String IMG_OBJS_REFRESH_TAB = "IMG_OBJS_REFRESH_TAB"; //$NON-NLS-1$ - String IMG_OBJS_PERSPECTIVE_TAB = "IMG_OBJS_PERSPECTIVE_TAB"; //$NON-NLS-1$ - String IMG_OBJS_ARRAY_PARTITION = "IMG_OBJS_ARRAY_PARTITION"; //$NON-NLS-1$ - String IMG_SRC_LOOKUP_TAB = "IMG_SRC_LOOKUP_TAB"; //$NON-NLS-1$ - String IMG_OBJECT_MEMORY_CHANGED="IMG_OBJECT_MEMORY_CHANGED"; //$NON-NLS-1$ - String IMG_OBJECT_MEMORY="IMG_OBJECT_MEMORY"; //$NON-NLS-1$ - String IMG_OBJS_BREAKPOINT_TYPE="IMG_OBJ_BREAKPOINT_TYPE"; //$NON-NLS-1$ - String IMG_OBJS_LAUNCH_GROUP = "IMG_OBJ_LAUNCH_GROUP"; //$NON-NLS-1$ - String IMG_OBJS_CHECK = "IMG_OBJS_CHECK"; //$NON-NLS-1$ - String IMG_OBJS_UNCHECK = "IMG_OBJS_UNCHECK"; //$NON-NLS-1$ - String IMG_OBJS_PROTO_TAB = "IMG_OBJS_PROTO_TAB"; //$NON-NLS-1$ - - // wizard images - String IMG_WIZBAN_IMPORT_BREAKPOINTS = "IMG_WIZBAN_IMPORT_BREAKPOINTS"; //$NON-NLS-1$ - String IMG_WIZBAN_EXPORT_BREAKPOINTS = "IMG_WIZBAN_EXPORT_BREAKPOINTS"; //$NON-NLS-1$ - String IMG_WIZBAN_IMPORT_CONFIGS = "IMG_WIZBAN_IMPORT_CONFIGS"; //$NON-NLS-1$ - String IMG_WIZBAN_EXPORT_CONFIGS = "IMG_WIZBAN_EXPORT_CONFIGS"; //$NON-NLS-1$ - String IMG_ADD_SRC_LOC_WIZ = "IMG_ADD_SRC_LOCATION"; //$NON-NLS-1$ - String IMG_EDIT_SRC_LOC_WIZ = "IMG_EDIT_SRC_LOCATION"; //$NON-NLS-1$ - String IMG_ADD_SRC_DIR_WIZ = "IMG_ADD_SRC_DIRECTORY"; //$NON-NLS-1$ - String IMG_EDIT_SRC_DIR_WIZ = "IMG_EDIT_SRC_DIRECTORY"; //$NON-NLS-1$ - - // internal preferences - /** - * XML for perspective settings - see PerspectiveManager. - * @since 3.0 - */ - String PREF_LAUNCH_PERSPECTIVES = IDebugUIConstants.PLUGIN_ID + ".PREF_LAUNCH_PERSPECTIVES"; //$NON-NLS-1$ - - /** - * Preference for enabling/disabling launch configuration filtering based on project accessibility status - * - * @since 3.2 - */ - String PREF_FILTER_LAUNCH_CLOSED = IDebugUIConstants.PLUGIN_ID + ".PREF_FILTER_LAUNCH_CLOSED"; //$NON-NLS-1$ - - /** - * Preference for enabling/disabling launch configuration filtering based on project context - * - * @since 3.2 - */ - String PREF_FILTER_LAUNCH_DELETED = IDebugUIConstants.PLUGIN_ID + ".PREF_FILTER_LAUNCH_DELETED"; //$NON-NLS-1$ - - /** - * Preference for enabling/disabling filtering based on selected items from the launch configuration type table - * @since 3.2 - */ - String PREF_FILTER_LAUNCH_TYPES = IDebugUIConstants.PLUGIN_ID + ".PREF_FILTER_LAUNCH_TYPES"; //$NON-NLS-1$ - - /** - * Preference that saves which launch configuration types have been checked on the Launch Configurations pref page - * @since 3.2 - */ - String PREF_FILTER_TYPE_LIST = IDebugUIConstants.PLUGIN_ID + ".PREF_FILTER_TYPE_LIST"; //$NON-NLS-1$ - - /** - * Preference for filtering launch configurations based on the currently active working sets - * @since 3.2 - */ - String PREF_FILTER_WORKING_SETS = IDebugUIConstants.PLUGIN_ID + ".PREF_FILTER_WORKING_SETS"; //$NON-NLS-1$ - - /** - * Transparent overlay image identifier. - */ - String IMG_OVR_TRANSPARENT = "IMG_OVR_TRANSPARENT"; //$NON-NLS-1$ + String IMG_OBJS_COMMON_TAB = "IMG_OBJS_COMMON_TAB"; //$NON-NLS-1$ + String IMG_OBJS_REFRESH_TAB = "IMG_OBJS_REFRESH_TAB"; //$NON-NLS-1$ + String IMG_OBJS_PERSPECTIVE_TAB = "IMG_OBJS_PERSPECTIVE_TAB"; //$NON-NLS-1$ + String IMG_OBJS_ARRAY_PARTITION = "IMG_OBJS_ARRAY_PARTITION"; //$NON-NLS-1$ + String IMG_SRC_LOOKUP_TAB = "IMG_SRC_LOOKUP_TAB"; //$NON-NLS-1$ + String IMG_OBJECT_MEMORY_CHANGED="IMG_OBJECT_MEMORY_CHANGED"; //$NON-NLS-1$ + String IMG_OBJECT_MEMORY="IMG_OBJECT_MEMORY"; //$NON-NLS-1$ + String IMG_OBJS_BREAKPOINT_TYPE="IMG_OBJ_BREAKPOINT_TYPE"; //$NON-NLS-1$ + String IMG_OBJS_LAUNCH_GROUP = "IMG_OBJ_LAUNCH_GROUP"; //$NON-NLS-1$ + String IMG_OBJS_CHECK = "IMG_OBJS_CHECK"; //$NON-NLS-1$ + String IMG_OBJS_UNCHECK = "IMG_OBJS_UNCHECK"; //$NON-NLS-1$ + String IMG_OBJS_PROTO_TAB = "IMG_OBJS_PROTO_TAB"; //$NON-NLS-1$ + + // wizard images + String IMG_WIZBAN_IMPORT_BREAKPOINTS = "IMG_WIZBAN_IMPORT_BREAKPOINTS"; //$NON-NLS-1$ + String IMG_WIZBAN_EXPORT_BREAKPOINTS = "IMG_WIZBAN_EXPORT_BREAKPOINTS"; //$NON-NLS-1$ + String IMG_WIZBAN_IMPORT_CONFIGS = "IMG_WIZBAN_IMPORT_CONFIGS"; //$NON-NLS-1$ + String IMG_WIZBAN_EXPORT_CONFIGS = "IMG_WIZBAN_EXPORT_CONFIGS"; //$NON-NLS-1$ + String IMG_ADD_SRC_LOC_WIZ = "IMG_ADD_SRC_LOCATION"; //$NON-NLS-1$ + String IMG_EDIT_SRC_LOC_WIZ = "IMG_EDIT_SRC_LOCATION"; //$NON-NLS-1$ + String IMG_ADD_SRC_DIR_WIZ = "IMG_ADD_SRC_DIRECTORY"; //$NON-NLS-1$ + String IMG_EDIT_SRC_DIR_WIZ = "IMG_EDIT_SRC_DIRECTORY"; //$NON-NLS-1$ + + // internal preferences + /** + * XML for perspective settings - see PerspectiveManager. + * @since 3.0 + */ + String PREF_LAUNCH_PERSPECTIVES = IDebugUIConstants.PLUGIN_ID + ".PREF_LAUNCH_PERSPECTIVES"; //$NON-NLS-1$ + + /** + * Preference for enabling/disabling launch configuration filtering based on project accessibility status + * + * @since 3.2 + */ + String PREF_FILTER_LAUNCH_CLOSED = IDebugUIConstants.PLUGIN_ID + ".PREF_FILTER_LAUNCH_CLOSED"; //$NON-NLS-1$ + + /** + * Preference for enabling/disabling launch configuration filtering based on project context + * + * @since 3.2 + */ + String PREF_FILTER_LAUNCH_DELETED = IDebugUIConstants.PLUGIN_ID + ".PREF_FILTER_LAUNCH_DELETED"; //$NON-NLS-1$ + + /** + * Preference for enabling/disabling filtering based on selected items from the launch configuration type table + * @since 3.2 + */ + String PREF_FILTER_LAUNCH_TYPES = IDebugUIConstants.PLUGIN_ID + ".PREF_FILTER_LAUNCH_TYPES"; //$NON-NLS-1$ + + /** + * Preference that saves which launch configuration types have been checked on the Launch Configurations pref page + * @since 3.2 + */ + String PREF_FILTER_TYPE_LIST = IDebugUIConstants.PLUGIN_ID + ".PREF_FILTER_TYPE_LIST"; //$NON-NLS-1$ + + /** + * Preference for filtering launch configurations based on the currently active working sets + * @since 3.2 + */ + String PREF_FILTER_WORKING_SETS = IDebugUIConstants.PLUGIN_ID + ".PREF_FILTER_WORKING_SETS"; //$NON-NLS-1$ + + /** + * Transparent overlay image identifier. + */ + String IMG_OVR_TRANSPARENT = "IMG_OVR_TRANSPARENT"; //$NON-NLS-1$ /** * Logical Structure overlay image identifier. */ String IMG_OVR_SHOW_LOGICAL_STRUCTURE = "IMG_OVR_SHOW_LOGICAL_STRUCTURE"; //$NON-NLS-1$ - /** - * Editor Id for the "Source Not Found" editor - */ - String ID_SOURCE_NOT_FOUND_EDITOR = "org.eclipse.debug.ui.NoSourceFoundEditor"; //$NON-NLS-1$ - - /** - * Boolean preference indicating if contextual launch options should be visible - * to the user rather than the "run as" menu. - * - * @since 3.3.0 - * CONTEXTLAUNCHING - */ - String PREF_USE_CONTEXTUAL_LAUNCH = IDebugUIConstants.PLUGIN_ID + ".UseContextualLaunch"; //$NON-NLS-1$ - - /** - * Boolean preference indicating that if the selected resource is not launchable, then we should - * launch the last configuration that was launched. - * - * @since 3.3.0 - * CONTEXTLAUNCHING - */ - String PREF_LAUNCH_LAST_IF_NOT_LAUNCHABLE = IDebugUIConstants.PLUGIN_ID + ".LaunchLastIfNotLaunchable"; //$NON-NLS-1$ - - /** - * Boolean preference indicating if we should always consider the parent project when - * a selected context is not runnable - * - * @since 3.3.0 - * CONTEXTLAUNCHING - */ - String PREF_LAUNCH_PARENT_PROJECT = IDebugUIConstants.PLUGIN_ID + ".LaunchParentProject"; //$NON-NLS-1$ - - /** - * Boolean preference indicating if the user should be prompted prior to removing a launch configuration - * from the launch history drop down - * - * @since 3.4 - */ - String PREF_REMOVE_FROM_LAUNCH_HISTORY = IDebugUIConstants.PLUGIN_ID + ".RemoveFromLaunchHistory"; //$NON-NLS-1$ - - /** - * String preference controlling whether editors are saved before launching. - * Valid values are either "always", "never", or "prompt". - * If "always" or "never", launching will save editors (or not) automatically. - * If "prompt", the user will be prompted each time. - * - * @since 3.0 - */ - String PREF_SAVE_DIRTY_EDITORS_BEFORE_LAUNCH = IDebugUIConstants.PLUGIN_ID + ".save_dirty_editors_before_launch"; //$NON-NLS-1$ - - /** - * Preference specifying that all launches should be DEBUG_MODE if breakpoints exist in the workspace - * @since 3.0 - */ - String PREF_RELAUNCH_IN_DEBUG_MODE = IDebugUIConstants.PLUGIN_ID + ".relaunch_in_debug_mode"; //$NON-NLS-1$ - - /** - * Preference specifying that launches should continue when compile errors exist. - * @since 3.0 - */ - String PREF_CONTINUE_WITH_COMPILE_ERROR = IDebugUIConstants.PLUGIN_ID + ".cancel_launch_with_compile_errors"; //$NON-NLS-1$ - - /** - * Boolean preference controlling whether the debugger will force activate the debug - * view when a breakpoint is hit. - * - * @since 3.0 - */ - String PREF_ACTIVATE_DEBUG_VIEW= IDebugUIConstants.PLUGIN_ID + ".activate_debug_view"; //$NON-NLS-1$ - - /** - * String preference controlling whether the debugger switching to - * the associated perspective when launching. - * Valid values are either "always", "never", or "prompt". - * If "always" or "never", launching will switch perspectives (or not) automatically. - * If "prompt", the user will be prompted each time. - * - * @since 3.0 - */ - String PREF_SWITCH_TO_PERSPECTIVE= IDebugUIConstants.PLUGIN_ID + ".switch_to_perspective"; //$NON-NLS-1$ - - /** - * String preference controlling whether the debugger switching to - * the associated perspective when a launch suspends. - * Valid values are either "always", "never", or "prompt". - * If "always" or "never", suspension will switch perspectives (or not) automatically. - * If "prompt", the user will be prompted each time. - * - * @since 3.0 - */ - String PREF_SWITCH_PERSPECTIVE_ON_SUSPEND= IDebugUIConstants.PLUGIN_ID + ".switch_perspective_on_suspend"; //$NON-NLS-1$ + /** + * Editor Id for the "Source Not Found" editor + */ + String ID_SOURCE_NOT_FOUND_EDITOR = "org.eclipse.debug.ui.NoSourceFoundEditor"; //$NON-NLS-1$ + + /** + * Boolean preference indicating if contextual launch options should be visible + * to the user rather than the "run as" menu. + * + * @since 3.3.0 + * CONTEXTLAUNCHING + */ + String PREF_USE_CONTEXTUAL_LAUNCH = IDebugUIConstants.PLUGIN_ID + ".UseContextualLaunch"; //$NON-NLS-1$ + + /** + * Boolean preference indicating that if the selected resource is not launchable, then we should + * launch the last configuration that was launched. + * + * @since 3.3.0 + * CONTEXTLAUNCHING + */ + String PREF_LAUNCH_LAST_IF_NOT_LAUNCHABLE = IDebugUIConstants.PLUGIN_ID + ".LaunchLastIfNotLaunchable"; //$NON-NLS-1$ + + /** + * Boolean preference indicating if we should always consider the parent project when + * a selected context is not runnable + * + * @since 3.3.0 + * CONTEXTLAUNCHING + */ + String PREF_LAUNCH_PARENT_PROJECT = IDebugUIConstants.PLUGIN_ID + ".LaunchParentProject"; //$NON-NLS-1$ + + /** + * Boolean preference indicating if the user should be prompted prior to removing a launch configuration + * from the launch history drop down + * + * @since 3.4 + */ + String PREF_REMOVE_FROM_LAUNCH_HISTORY = IDebugUIConstants.PLUGIN_ID + ".RemoveFromLaunchHistory"; //$NON-NLS-1$ + + /** + * String preference controlling whether editors are saved before launching. + * Valid values are either "always", "never", or "prompt". + * If "always" or "never", launching will save editors (or not) automatically. + * If "prompt", the user will be prompted each time. + * + * @since 3.0 + */ + String PREF_SAVE_DIRTY_EDITORS_BEFORE_LAUNCH = IDebugUIConstants.PLUGIN_ID + ".save_dirty_editors_before_launch"; //$NON-NLS-1$ + + /** + * Preference specifying that all launches should be DEBUG_MODE if breakpoints exist in the workspace + * @since 3.0 + */ + String PREF_RELAUNCH_IN_DEBUG_MODE = IDebugUIConstants.PLUGIN_ID + ".relaunch_in_debug_mode"; //$NON-NLS-1$ + + /** + * Preference specifying that launches should continue when compile errors exist. + * @since 3.0 + */ + String PREF_CONTINUE_WITH_COMPILE_ERROR = IDebugUIConstants.PLUGIN_ID + ".cancel_launch_with_compile_errors"; //$NON-NLS-1$ + + /** + * Boolean preference controlling whether the debugger will force activate the debug + * view when a breakpoint is hit. + * + * @since 3.0 + */ + String PREF_ACTIVATE_DEBUG_VIEW= IDebugUIConstants.PLUGIN_ID + ".activate_debug_view"; //$NON-NLS-1$ + + /** + * String preference controlling whether the debugger switching to + * the associated perspective when launching. + * Valid values are either "always", "never", or "prompt". + * If "always" or "never", launching will switch perspectives (or not) automatically. + * If "prompt", the user will be prompted each time. + * + * @since 3.0 + */ + String PREF_SWITCH_TO_PERSPECTIVE= IDebugUIConstants.PLUGIN_ID + ".switch_to_perspective"; //$NON-NLS-1$ + + /** + * String preference controlling whether the debugger switching to + * the associated perspective when a launch suspends. + * Valid values are either "always", "never", or "prompt". + * If "always" or "never", suspension will switch perspectives (or not) automatically. + * If "prompt", the user will be prompted each time. + * + * @since 3.0 + */ + String PREF_SWITCH_PERSPECTIVE_ON_SUSPEND= IDebugUIConstants.PLUGIN_ID + ".switch_perspective_on_suspend"; //$NON-NLS-1$ /** * String preference controlling whether the debugger waits for a currently @@ -328,135 +328,135 @@ public interface IInternalDebugUIConstants { int ADD_UNIT_PER_LINE = 16; // number of addressable unit per line int CHAR_PER_BYTE = 2; // number of characters to represent one byte - /** - * Memory view's rendering view pane identifier (value <code>"org.eclipse.debug.ui.MemoryView.RenderingViewPane"</code>). - * @since 3.1 - */ - String ID_RENDERING_VIEW_PANE = RenderingViewPane.RENDERING_VIEW_PANE_ID; - - /** - * Memory view's memory block tree viewer's identifier. (value <code>"org.eclipse.debug.ui.MemoryView.MemoryBlocksTreeViewPane"</code>). - * @since 3.1 - */ - String ID_MEMORY_BLOCK_TREE_VIEWER = MemoryBlocksTreeViewPane.PANE_ID; - - /** - * Memory view image identifier - * - * @since 3.0 - * */ - String IMG_CVIEW_MEMORY_VIEW= "IMG_CVIEW_MEMORY_VIEW"; //$NON-NLS-1$ - - - /** - * Modules view image identifier - * - * @since 3.4 - * */ - String IMG_CVIEW_MODULES_VIEW= "IMG_CVIEW_MODULES_VIEW"; //$NON-NLS-1$ - - /** - * Boolean preference controlling whether the debug view tracks - * views as the user manually opens/closes them for the purpose - * of not automatically opening/closing such views. - * - * @since 3.0 - */ - String PREF_TRACK_VIEWS= IDebugUIConstants.PLUGIN_ID + ".track_views"; //$NON-NLS-1$ - - /** - * Comma separated list of view ids closed by the user, that have view context bindings. - * @since 3.2 - */ - String PREF_USER_VIEW_BINDINGS = IDebugUIConstants.PLUGIN_ID + ".user_view_bindings"; //$NON-NLS-1$ - - /** - * Preference storing memento for the default breakpoint working set in - * the breakpoints view. - * - * @since 3.1 - */ - String MEMENTO_BREAKPOINT_WORKING_SET_NAME = DebugUIPlugin.getUniqueIdentifier() + ".MEMENTO_BREAKPOINT_WORKING_SET_NAME"; //$NON-NLS-1$ - - /** - * Breakpoint working set identifier. - * - * @since 3.1 - * @deprecated There is an API equivalent constant that should be used, see - * {@link IDebugUIConstants#BREAKPOINT_WORKINGSET_ID} - */ + /** + * Memory view's rendering view pane identifier (value <code>"org.eclipse.debug.ui.MemoryView.RenderingViewPane"</code>). + * @since 3.1 + */ + String ID_RENDERING_VIEW_PANE = RenderingViewPane.RENDERING_VIEW_PANE_ID; + + /** + * Memory view's memory block tree viewer's identifier. (value <code>"org.eclipse.debug.ui.MemoryView.MemoryBlocksTreeViewPane"</code>). + * @since 3.1 + */ + String ID_MEMORY_BLOCK_TREE_VIEWER = MemoryBlocksTreeViewPane.PANE_ID; + + /** + * Memory view image identifier + * + * @since 3.0 + * */ + String IMG_CVIEW_MEMORY_VIEW= "IMG_CVIEW_MEMORY_VIEW"; //$NON-NLS-1$ + + + /** + * Modules view image identifier + * + * @since 3.4 + * */ + String IMG_CVIEW_MODULES_VIEW= "IMG_CVIEW_MODULES_VIEW"; //$NON-NLS-1$ + + /** + * Boolean preference controlling whether the debug view tracks + * views as the user manually opens/closes them for the purpose + * of not automatically opening/closing such views. + * + * @since 3.0 + */ + String PREF_TRACK_VIEWS= IDebugUIConstants.PLUGIN_ID + ".track_views"; //$NON-NLS-1$ + + /** + * Comma separated list of view ids closed by the user, that have view context bindings. + * @since 3.2 + */ + String PREF_USER_VIEW_BINDINGS = IDebugUIConstants.PLUGIN_ID + ".user_view_bindings"; //$NON-NLS-1$ + + /** + * Preference storing memento for the default breakpoint working set in + * the breakpoints view. + * + * @since 3.1 + */ + String MEMENTO_BREAKPOINT_WORKING_SET_NAME = DebugUIPlugin.getUniqueIdentifier() + ".MEMENTO_BREAKPOINT_WORKING_SET_NAME"; //$NON-NLS-1$ + + /** + * Breakpoint working set identifier. + * + * @since 3.1 + * @deprecated There is an API equivalent constant that should be used, see + * {@link IDebugUIConstants#BREAKPOINT_WORKINGSET_ID} + */ @Deprecated String ID_BREAKPOINT_WORKINGSET = "org.eclipse.debug.ui.breakpointWorkingSet"; //$NON-NLS-1$ - /** - * Address at the beginning of a page in a table rendering. - * @since 3.1 - */ - String PROPERTY_PAGE_START_ADDRESS = "pageStart"; //$NON-NLS-1$ - - - /** - * This constant is used as a "quick-fix" for the issue of breakpoint to working set - * persistence when the state of a project changes. - * - * @since 3.2 - */ - String WORKING_SET_NAME = "workingset_name"; //$NON-NLS-1$ - - /** - * This constant is used as a "quick-fix" for the issue of breakpoint to working set - * persistence when the state of a project changes. - * - * @since 3.2 - */ - String WORKING_SET_ID = "workingset_id"; //$NON-NLS-1$ - - /** - * Annotation type identifier for annotation of the an instruction - * pointer with a dynamic image. Value is <code>org.eclipse.debug.ui.dynamicIP</code>, - * identifying a <code>org.eclipse.ui.editors.markerAnnotationSpecification</code> - * extension. - * - * @since 3.2 - */ - String ANNOTATION_TYPE_DYNAMIC_INSTRUCTION_POINTER = "org.eclipse.debug.ui.dynamicIP"; //$NON-NLS-1$ - - /** - * Identifier of the external tool builder launch category. Defined here since - * external tools is actually a dependent plug-in. - * - * @since 3.4 - */ - String ID_EXTERNAL_TOOL_BUILDER_LAUNCH_CATEGORY = "org.eclipse.ui.externaltools.builder"; //$NON-NLS-1$ - - //themes - - /** - * Theme color definition for process console background color. - * - * @since 3.4 - */ - String THEME_CONSOLE_COLOR_BACKGROUND= "org.eclipse.debug.ui.console.background"; //$NON-NLS-1$ - - /** - * Theme color definition for process console standard out. - * - * @since 3.4 - */ - String THEME_CONSOLE_COLOR_STD_OUT= "org.eclipse.debug.ui.console.stream.out"; //$NON-NLS-1$ - - /** - * Theme color definition for process console standard in. - * - * @since 3.4 - */ - String THEME_CONSOLE_COLOR_STD_IN= "org.eclipse.debug.ui.console.stream.in"; //$NON-NLS-1$ - - /** - * Theme color definition for process console standard err. - * - * @since 3.4 - */ + /** + * Address at the beginning of a page in a table rendering. + * @since 3.1 + */ + String PROPERTY_PAGE_START_ADDRESS = "pageStart"; //$NON-NLS-1$ + + + /** + * This constant is used as a "quick-fix" for the issue of breakpoint to working set + * persistence when the state of a project changes. + * + * @since 3.2 + */ + String WORKING_SET_NAME = "workingset_name"; //$NON-NLS-1$ + + /** + * This constant is used as a "quick-fix" for the issue of breakpoint to working set + * persistence when the state of a project changes. + * + * @since 3.2 + */ + String WORKING_SET_ID = "workingset_id"; //$NON-NLS-1$ + + /** + * Annotation type identifier for annotation of the an instruction + * pointer with a dynamic image. Value is <code>org.eclipse.debug.ui.dynamicIP</code>, + * identifying a <code>org.eclipse.ui.editors.markerAnnotationSpecification</code> + * extension. + * + * @since 3.2 + */ + String ANNOTATION_TYPE_DYNAMIC_INSTRUCTION_POINTER = "org.eclipse.debug.ui.dynamicIP"; //$NON-NLS-1$ + + /** + * Identifier of the external tool builder launch category. Defined here since + * external tools is actually a dependent plug-in. + * + * @since 3.4 + */ + String ID_EXTERNAL_TOOL_BUILDER_LAUNCH_CATEGORY = "org.eclipse.ui.externaltools.builder"; //$NON-NLS-1$ + + //themes + + /** + * Theme color definition for process console background color. + * + * @since 3.4 + */ + String THEME_CONSOLE_COLOR_BACKGROUND= "org.eclipse.debug.ui.console.background"; //$NON-NLS-1$ + + /** + * Theme color definition for process console standard out. + * + * @since 3.4 + */ + String THEME_CONSOLE_COLOR_STD_OUT= "org.eclipse.debug.ui.console.stream.out"; //$NON-NLS-1$ + + /** + * Theme color definition for process console standard in. + * + * @since 3.4 + */ + String THEME_CONSOLE_COLOR_STD_IN= "org.eclipse.debug.ui.console.stream.in"; //$NON-NLS-1$ + + /** + * Theme color definition for process console standard err. + * + * @since 3.4 + */ String THEME_CONSOLE_COLOR_STD_ERR = "org.eclipse.debug.ui.console.stream.err"; //$NON-NLS-1$ diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/InstructionPointerManager.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/InstructionPointerManager.java index c9132420d..f5d1db073 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/InstructionPointerManager.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/InstructionPointerManager.java @@ -95,11 +95,11 @@ public class InstructionPointerManager{ IDocumentProvider docProvider = textEditor.getDocumentProvider(); IEditorInput editorInput = textEditor.getEditorInput(); - // If there is no annotation model, there's nothing more to do - IAnnotationModel annModel = docProvider.getAnnotationModel(editorInput); - if (annModel == null) { - return; - } + // If there is no annotation model, there's nothing more to do + IAnnotationModel annModel = docProvider.getAnnotationModel(editorInput); + if (annModel == null) { + return; + } // Create the Position object that specifies a location for the annotation Position position = null; diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/LazyModelPresentation.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/LazyModelPresentation.java index 8bf88af20..cdc78ef3b 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/LazyModelPresentation.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/LazyModelPresentation.java @@ -127,17 +127,17 @@ public class LazyModelPresentation implements IDebugModelPresentation, IDebugEdi public Image getImage(Object element) { initImageRegistry(); Image image = getPresentation().getImage(element); - if (image == null) { - image = getDefaultImage(element); - } - if (image != null) { - int flags= computeAdornmentFlags(element); - if (flags > 0) { - CompositeDebugImageDescriptor descriptor= new CompositeDebugImageDescriptor(image, flags); - return DebugUIPlugin.getImageDescriptorRegistry().get(descriptor); - } - } - return image; + if (image == null) { + image = getDefaultImage(element); + } + if (image != null) { + int flags= computeAdornmentFlags(element); + if (flags > 0) { + CompositeDebugImageDescriptor descriptor= new CompositeDebugImageDescriptor(image, flags); + return DebugUIPlugin.getImageDescriptorRegistry().get(descriptor); + } + } + return image; } /** @@ -150,81 +150,81 @@ public class LazyModelPresentation implements IDebugModelPresentation, IDebugEdi } /** - * Computes and return common adornment flags for the given element. - * - * @param element - * @return adornment flags defined in CompositeDebugImageDescriptor - */ - private int computeAdornmentFlags(Object element) { - if (element instanceof IBreakpoint) { - if (!DebugPlugin.getDefault().getBreakpointManager().isEnabled()) { - return CompositeDebugImageDescriptor.SKIP_BREAKPOINT; - } - } - return 0; - } - - /** - * Returns a default text label for the debug element - */ - protected String getDefaultText(Object element) { - return DebugUIPlugin.getDefaultLabelProvider().getText(element); - } - - /** - * Returns a default image for the debug element - */ - protected Image getDefaultImage(Object element) { - return DebugUIPlugin.getDefaultLabelProvider().getImage(element); - } - - /** + * Computes and return common adornment flags for the given element. + * + * @param element + * @return adornment flags defined in CompositeDebugImageDescriptor + */ + private int computeAdornmentFlags(Object element) { + if (element instanceof IBreakpoint) { + if (!DebugPlugin.getDefault().getBreakpointManager().isEnabled()) { + return CompositeDebugImageDescriptor.SKIP_BREAKPOINT; + } + } + return 0; + } + + /** + * Returns a default text label for the debug element + */ + protected String getDefaultText(Object element) { + return DebugUIPlugin.getDefaultLabelProvider().getText(element); + } + + /** + * Returns a default image for the debug element + */ + protected Image getDefaultImage(Object element) { + return DebugUIPlugin.getDefaultLabelProvider().getImage(element); + } + + /** * @see IDebugModelPresentation#getText(Object) */ @Override public String getText(Object element) { - if (!(element instanceof IndexedVariablePartition)) { - // Attempt to delegate - String text = getPresentation().getText(element); - if (text != null) { - return text; - } - } - // If no delegate returned a text label, use the default - if (showVariableTypeNames()) { - try { - if (element instanceof IExpression) { - StringBuilder buf = new StringBuilder(); - IValue value = ((IExpression)element).getValue(); - if (value != null) { - String type = value.getReferenceTypeName(); - if (type != null && type.length() > 0) { - buf.append(type); - buf.append(' '); - } - } - buf.append(getDefaultText(element)); - return buf.toString(); - } else if (element instanceof IVariable) { - return new StringBuffer(((IVariable)element).getValue().getReferenceTypeName()).append(' ').append(getDefaultText(element)).toString(); - } - } catch (DebugException de) { - DebugUIPlugin.log(de); - } - } - return getDefaultText(element); - } - - /** - * Whether or not to show variable type names. - * This option is configured per model presentation. - * This allows this option to be set per view, for example. - */ - protected boolean showVariableTypeNames() { + if (!(element instanceof IndexedVariablePartition)) { + // Attempt to delegate + String text = getPresentation().getText(element); + if (text != null) { + return text; + } + } + // If no delegate returned a text label, use the default + if (showVariableTypeNames()) { + try { + if (element instanceof IExpression) { + StringBuilder buf = new StringBuilder(); + IValue value = ((IExpression)element).getValue(); + if (value != null) { + String type = value.getReferenceTypeName(); + if (type != null && type.length() > 0) { + buf.append(type); + buf.append(' '); + } + } + buf.append(getDefaultText(element)); + return buf.toString(); + } else if (element instanceof IVariable) { + return new StringBuffer(((IVariable)element).getValue().getReferenceTypeName()).append(' ').append(getDefaultText(element)).toString(); + } + } catch (DebugException de) { + DebugUIPlugin.log(de); + } + } + return getDefaultText(element); + } + + /** + * Whether or not to show variable type names. + * This option is configured per model presentation. + * This allows this option to be set per view, for example. + */ + protected boolean showVariableTypeNames() { Boolean show = (Boolean) fAttributes.get(DISPLAY_VARIABLE_TYPE_NAMES); show = show == null ? Boolean.FALSE : show; - return show.booleanValue(); - } + return show.booleanValue(); + } /** * @see IDebugModelPresentation#computeDetail(IValue, IValueDetailListener) @@ -293,7 +293,7 @@ public class LazyModelPresentation implements IDebugModelPresentation, IDebugEdi } ListenerList<ILabelProviderListener> listeners = fListeners; if (listeners != null) { - listeners.remove(listener); + listeners.remove(listener); } } @@ -302,12 +302,12 @@ public class LazyModelPresentation implements IDebugModelPresentation, IDebugEdi */ protected IDebugModelPresentation getPresentation() { if (fPresentation == null) { - synchronized (this) { - if (fPresentation != null) { - // In the case that the synchronization is enforced, the "blocked" thread - // should return the presentation configured by the "owning" thread. - return fPresentation; - } + synchronized (this) { + if (fPresentation != null) { + // In the case that the synchronization is enforced, the "blocked" thread + // should return the presentation configured by the "owning" thread. + return fPresentation; + } try { IDebugModelPresentation tempPresentation= (IDebugModelPresentation) DebugUIPlugin.createExtension(fConfig, "class"); //$NON-NLS-1$ // configure it @@ -326,7 +326,7 @@ public class LazyModelPresentation implements IDebugModelPresentation, IDebugEdi } catch (CoreException e) { DebugUIPlugin.log(e); } - } + } } return fPresentation; } @@ -394,35 +394,35 @@ public class LazyModelPresentation implements IDebugModelPresentation, IDebugEdi return fAttributes; } - @Override + @Override public Color getForeground(Object element) { - IDebugModelPresentation presentation = getPresentation(); - if (presentation instanceof IColorProvider) { - IColorProvider colorProvider = (IColorProvider) presentation; - return colorProvider.getForeground(element); - } - return null; - } - - @Override + IDebugModelPresentation presentation = getPresentation(); + if (presentation instanceof IColorProvider) { + IColorProvider colorProvider = (IColorProvider) presentation; + return colorProvider.getForeground(element); + } + return null; + } + + @Override public Color getBackground(Object element) { - IDebugModelPresentation presentation = getPresentation(); - if (presentation instanceof IColorProvider) { - IColorProvider colorProvider = (IColorProvider) presentation; - return colorProvider.getBackground(element); - } - return null; - } - - @Override + IDebugModelPresentation presentation = getPresentation(); + if (presentation instanceof IColorProvider) { + IColorProvider colorProvider = (IColorProvider) presentation; + return colorProvider.getBackground(element); + } + return null; + } + + @Override public Font getFont(Object element) { - IDebugModelPresentation presentation = getPresentation(); - if (presentation instanceof IFontProvider) { - IFontProvider fontProvider = (IFontProvider) presentation; - return fontProvider.getFont(element); - } - return null; - } + IDebugModelPresentation presentation = getPresentation(); + if (presentation instanceof IFontProvider) { + IFontProvider fontProvider = (IFontProvider) presentation; + return fontProvider.getFont(element); + } + return null; + } @Override public Annotation getInstructionPointerAnnotation(IEditorPart editorPart, IStackFrame frame) { diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/MultipleInputDialog.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/MultipleInputDialog.java index 4e7d834eb..c9e2932f4 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/MultipleInputDialog.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/MultipleInputDialog.java @@ -305,13 +305,13 @@ public class MultipleInputDialog extends Dialog { text.setData(FIELD_NAME, labelText); text.addTraverseListener(new TraverseListener () { - @Override + @Override public void keyTraversed(TraverseEvent e) { - if(e.detail == SWT.TRAVERSE_RETURN && e.stateMask == SWT.SHIFT) { - e.doit = true; - } - } - }); + if(e.detail == SWT.TRAVERSE_RETURN && e.stateMask == SWT.SHIFT) { + e.doit = true; + } + } + }); // make sure rows are the same height on both panels. label.setSize(label.getSize().x, text.getSize().y); diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/ResourceExtender.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/ResourceExtender.java index 53c76a253..bb50f1fa2 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/ResourceExtender.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/ResourceExtender.java @@ -40,100 +40,100 @@ import org.eclipse.ui.IPathEditorInput; */ public class ResourceExtender extends PropertyTester { - private static final String PROPERTY_MATCHES_PATTERN = "matchesPattern"; //$NON-NLS-1$ + private static final String PROPERTY_MATCHES_PATTERN = "matchesPattern"; //$NON-NLS-1$ - private static final String PROJECT_NATURE = "projectNature"; //$NON-NLS-1$ + private static final String PROJECT_NATURE = "projectNature"; //$NON-NLS-1$ - private static final String PROPERTY_MATCHES_CONTENT_TYPE = "matchesContentType"; //$NON-NLS-1$ + private static final String PROPERTY_MATCHES_CONTENT_TYPE = "matchesContentType"; //$NON-NLS-1$ - @Override + @Override public boolean test(Object receiver, String method, Object[] args, Object expectedValue) { - IResource resource = ((IAdaptable) receiver).getAdapter(IResource.class); - if (resource == null) { - if (PROPERTY_MATCHES_CONTENT_TYPE.equals(method)) { - IPathEditorInput editorInput = ((IAdaptable) receiver).getAdapter(IPathEditorInput.class); - if (editorInput != null) { - IPath path= editorInput.getPath(); - File file= path.toFile(); - if (file.exists()) { + IResource resource = ((IAdaptable) receiver).getAdapter(IResource.class); + if (resource == null) { + if (PROPERTY_MATCHES_CONTENT_TYPE.equals(method)) { + IPathEditorInput editorInput = ((IAdaptable) receiver).getAdapter(IPathEditorInput.class); + if (editorInput != null) { + IPath path= editorInput.getPath(); + File file= path.toFile(); + if (file.exists()) { try (FileReader reader = new FileReader(file)) { - IContentType contentType= Platform.getContentTypeManager().getContentType((String)expectedValue); - IContentDescription description= contentType.getDescriptionFor(reader, IContentDescription.ALL); - if (description != null) { - return matchesContentType(description.getContentType(), (String)expectedValue); - } - } catch (FileNotFoundException e) { - return false; - } catch (IOException e) { - return false; - } - } - } - } - } else { - if (PROPERTY_MATCHES_PATTERN.equals(method)) { - String fileName = resource.getName(); - String expected = (String) expectedValue; - expected = expected.replaceAll("\\.", "\\\\."); //$NON-NLS-1$//$NON-NLS-2$ - expected = expected.replaceAll("\\*", "\\.\\*"); //$NON-NLS-1$//$NON-NLS-2$ - Pattern pattern = Pattern.compile(expected); - boolean retVal = pattern.matcher(fileName).find(); - return retVal; - } else if (PROJECT_NATURE.equals(method)) { - try { - IProject proj = resource.getProject(); - return proj != null && proj.isAccessible() && proj.hasNature((String) expectedValue); - } catch (CoreException e) { - return false; - } - } else if (PROPERTY_MATCHES_CONTENT_TYPE.equals(method)) { - return matchesContentType(resource, (String) expectedValue); - } - } - return false; - } + IContentType contentType= Platform.getContentTypeManager().getContentType((String)expectedValue); + IContentDescription description= contentType.getDescriptionFor(reader, IContentDescription.ALL); + if (description != null) { + return matchesContentType(description.getContentType(), (String)expectedValue); + } + } catch (FileNotFoundException e) { + return false; + } catch (IOException e) { + return false; + } + } + } + } + } else { + if (PROPERTY_MATCHES_PATTERN.equals(method)) { + String fileName = resource.getName(); + String expected = (String) expectedValue; + expected = expected.replaceAll("\\.", "\\\\."); //$NON-NLS-1$//$NON-NLS-2$ + expected = expected.replaceAll("\\*", "\\.\\*"); //$NON-NLS-1$//$NON-NLS-2$ + Pattern pattern = Pattern.compile(expected); + boolean retVal = pattern.matcher(fileName).find(); + return retVal; + } else if (PROJECT_NATURE.equals(method)) { + try { + IProject proj = resource.getProject(); + return proj != null && proj.isAccessible() && proj.hasNature((String) expectedValue); + } catch (CoreException e) { + return false; + } + } else if (PROPERTY_MATCHES_CONTENT_TYPE.equals(method)) { + return matchesContentType(resource, (String) expectedValue); + } + } + return false; + } - /** - * Returns whether the given type or one of its base types matches the - * given content type identifier. - * - * @param type content type or <code>null</code> - * @param typeId content type identifier - * @return - */ - private boolean matchesContentType(IContentType type, String typeId) { - while (type != null) { - if (typeId.equals(type.getId())) { - return true; - } - type = type.getBaseType(); - } - return false; - } + /** + * Returns whether the given type or one of its base types matches the + * given content type identifier. + * + * @param type content type or <code>null</code> + * @param typeId content type identifier + * @return + */ + private boolean matchesContentType(IContentType type, String typeId) { + while (type != null) { + if (typeId.equals(type.getId())) { + return true; + } + type = type.getBaseType(); + } + return false; + } - /** - * Returns whether or not the given file's content type matches the - * specified content type. - * - * Content types are looked up in the content type registry. - * - * @return whether or not the given resource has the given content type - */ - private boolean matchesContentType(IResource resource, String contentType) { - if (resource == null || !(resource instanceof IFile) || !resource.exists()) { - return false; - } - IFile file = (IFile) resource; - IContentDescription description; - try { - description = file.getContentDescription(); - } catch (CoreException e) { - return false; - } - if (description != null) { - return matchesContentType(description.getContentType(), contentType); - } - return false; - } + /** + * Returns whether or not the given file's content type matches the + * specified content type. + * + * Content types are looked up in the content type registry. + * + * @return whether or not the given resource has the given content type + */ + private boolean matchesContentType(IResource resource, String contentType) { + if (resource == null || !(resource instanceof IFile) || !resource.exists()) { + return false; + } + IFile file = (IFile) resource; + IContentDescription description; + try { + description = file.getContentDescription(); + } catch (CoreException e) { + return false; + } + if (description != null) { + return matchesContentType(description.getContentType(), contentType); + } + return false; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/SWTFactory.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/SWTFactory.java index e43c22b70..6139c95bd 100755 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/SWTFactory.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/SWTFactory.java @@ -322,13 +322,13 @@ public class SWTFactory { * */ public static Text createSingleText(Composite parent, int hspan) { - Text t = new Text(parent, SWT.SINGLE | SWT.BORDER); - t.setFont(parent.getFont()); - GridData gd = new GridData(GridData.FILL_HORIZONTAL); - gd.horizontalSpan = hspan; - t.setLayoutData(gd); - return t; - } + Text t = new Text(parent, SWT.SINGLE | SWT.BORDER); + t.setFont(parent.getFont()); + GridData gd = new GridData(GridData.FILL_HORIZONTAL); + gd.horizontalSpan = hspan; + t.setLayoutData(gd); + return t; + } /** * Creates a new text widget @@ -340,13 +340,13 @@ public class SWTFactory { * @since 3.3 */ public static Text createText(Composite parent, int style, int hspan, int fill) { - Text t = new Text(parent, style); - t.setFont(parent.getFont()); - GridData gd = new GridData(fill); - gd.horizontalSpan = hspan; - t.setLayoutData(gd); - return t; - } + Text t = new Text(parent, style); + t.setFont(parent.getFont()); + GridData gd = new GridData(fill); + gd.horizontalSpan = hspan; + t.setLayoutData(gd); + return t; + } /** * Creates a new text widget @@ -357,13 +357,13 @@ public class SWTFactory { * @since 3.3 */ public static Text createText(Composite parent, int style, int hspan) { - Text t = new Text(parent, style); - t.setFont(parent.getFont()); - GridData gd = new GridData(GridData.FILL_HORIZONTAL); - gd.horizontalSpan = hspan; - t.setLayoutData(gd); - return t; - } + Text t = new Text(parent, style); + t.setFont(parent.getFont()); + GridData gd = new GridData(GridData.FILL_HORIZONTAL); + gd.horizontalSpan = hspan; + t.setLayoutData(gd); + return t; + } /** * Creates a new text widget @@ -377,15 +377,15 @@ public class SWTFactory { * @since 3.3 */ public static Text createText(Composite parent, int style, int hspan, int width, int height, int fill) { - Text t = new Text(parent, style); - t.setFont(parent.getFont()); - GridData gd = new GridData(fill); - gd.horizontalSpan = hspan; - gd.widthHint = width; - gd.heightHint = height; - t.setLayoutData(gd); - return t; - } + Text t = new Text(parent, style); + t.setFont(parent.getFont()); + GridData gd = new GridData(fill); + gd.horizontalSpan = hspan; + gd.widthHint = width; + gd.heightHint = height; + t.setLayoutData(gd); + return t; + } /** * Creates a new styled text widget @@ -419,14 +419,14 @@ public class SWTFactory { * @since 3.6 */ public static Text createText(Composite parent, int style, int hspan, String text) { - Text t = new Text(parent, style); - t.setFont(parent.getFont()); - GridData gd = new GridData(GridData.FILL_HORIZONTAL); - gd.horizontalSpan = hspan; - t.setLayoutData(gd); - t.setText(text); - return t; - } + Text t = new Text(parent, style); + t.setFont(parent.getFont()); + GridData gd = new GridData(GridData.FILL_HORIZONTAL); + gd.horizontalSpan = hspan; + t.setLayoutData(gd); + t.setText(text); + return t; + } /** * Creates a Group widget @@ -440,15 +440,15 @@ public class SWTFactory { * */ public static Group createGroup(Composite parent, String text, int columns, int hspan, int fill) { - Group g = new Group(parent, SWT.NONE); - g.setLayout(new GridLayout(columns, false)); - g.setText(text); - g.setFont(parent.getFont()); - GridData gd = new GridData(fill); + Group g = new Group(parent, SWT.NONE); + g.setLayout(new GridLayout(columns, false)); + g.setText(text); + g.setFont(parent.getFont()); + GridData gd = new GridData(fill); gd.horizontalSpan = hspan; - g.setLayoutData(gd); - return g; - } + g.setLayoutData(gd); + return g; + } /** * Creates a Composite widget @@ -461,14 +461,14 @@ public class SWTFactory { * @since 3.3 */ public static Composite createComposite(Composite parent, Font font, int columns, int hspan, int fill) { - Composite g = new Composite(parent, SWT.NONE); - g.setLayout(new GridLayout(columns, false)); - g.setFont(font); - GridData gd = new GridData(fill); + Composite g = new Composite(parent, SWT.NONE); + g.setLayout(new GridLayout(columns, false)); + g.setFont(font); + GridData gd = new GridData(fill); gd.horizontalSpan = hspan; - g.setLayoutData(gd); - return g; - } + g.setLayoutData(gd); + return g; + } /** * Creates an ExpandibleComposite widget @@ -503,12 +503,12 @@ public class SWTFactory { */ public static Composite createComposite(Composite parent, int columns, int hspan, int fill) { Composite g = new Composite(parent, SWT.NONE); - g.setLayout(new GridLayout(columns, false)); - g.setFont(parent.getFont()); - GridData gd = new GridData(fill); + g.setLayout(new GridLayout(columns, false)); + g.setFont(parent.getFont()); + GridData gd = new GridData(fill); gd.horizontalSpan = hspan; - g.setLayoutData(gd); - return g; + g.setLayoutData(gd); + return g; } /** @@ -561,12 +561,12 @@ public class SWTFactory { GridLayout layout = new GridLayout(columns, false); layout.marginWidth = marginwidth; layout.marginHeight = marginheight; - g.setLayout(layout); - g.setFont(font); - GridData gd = new GridData(fill); + g.setLayout(layout); + g.setFont(font); + GridData gd = new GridData(fill); gd.horizontalSpan = hspan; - g.setLayoutData(gd); - return g; + g.setLayoutData(gd); + return g; } /** @@ -585,9 +585,9 @@ public class SWTFactory { ViewForm form = new ViewForm(parent, style); form.setFont(parent.getFont()); GridLayout layout = new GridLayout(cols, false); - layout.marginWidth = marginwidth; + layout.marginWidth = marginwidth; layout.marginHeight = marginheight; - form.setLayout(layout); + form.setLayout(layout); GridData gd = new GridData(fill); gd.horizontalSpan = span; form.setLayoutData(gd); @@ -612,12 +612,12 @@ public class SWTFactory { GridLayout layout = new GridLayout(columns, false); layout.marginWidth = marginwidth; layout.marginHeight = marginheight; - g.setLayout(layout); - g.setFont(font); - GridData gd = new GridData(fill); + g.setLayout(layout); + g.setFont(font); + GridData gd = new GridData(fill); gd.horizontalSpan = hspan; - g.setLayoutData(gd); - return g; + g.setLayoutData(gd); + return g; } /** diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/VariableValueEditorManager.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/VariableValueEditorManager.java index be0c60993..4266ff096 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/VariableValueEditorManager.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/VariableValueEditorManager.java @@ -33,65 +33,65 @@ import org.eclipse.debug.ui.actions.IVariableValueEditor; */ public class VariableValueEditorManager { - /** - * Mapping of debug model identifiers to variable value editors. - * The keys in this map are always Strings (model ids). - * The values in the map are IConfigurationElements at startup, - * which are replaced by IVariableValueEditors as the editors - * are instantiated (editors are loaded lazily, then cached). - */ + /** + * Mapping of debug model identifiers to variable value editors. + * The keys in this map are always Strings (model ids). + * The values in the map are IConfigurationElements at startup, + * which are replaced by IVariableValueEditors as the editors + * are instantiated (editors are loaded lazily, then cached). + */ private Map<String, Object> fEditorMap = new HashMap<>(); - /** - * The singleton instance of this manager. - */ - private static VariableValueEditorManager fgManager; + /** + * The singleton instance of this manager. + */ + private static VariableValueEditorManager fgManager; - /** - * Creates a new variable value editor manager. Clients - * should access the singleton instance of this manager - * by calling getDefault() - */ - private VariableValueEditorManager() { - loadVariableEditors(); - } + /** + * Creates a new variable value editor manager. Clients + * should access the singleton instance of this manager + * by calling getDefault() + */ + private VariableValueEditorManager() { + loadVariableEditors(); + } - /** - * Returns the singleton instance of this manager. - * @return the singleton instance of this manager - */ - public static VariableValueEditorManager getDefault() { - if (fgManager == null) { - fgManager= new VariableValueEditorManager(); - } - return fgManager; - } + /** + * Returns the singleton instance of this manager. + * @return the singleton instance of this manager + */ + public static VariableValueEditorManager getDefault() { + if (fgManager == null) { + fgManager= new VariableValueEditorManager(); + } + return fgManager; + } - /** - * Returns the variable value editor associated with the given debug - * model identifier or <code>null</code> if no editor has been supplied - * for the given debug model. - * @param modelIdentifier the debug model identifier - * @return the variable value editor associated with the given debug model - * identifier or <code>null</code> - */ - public IVariableValueEditor getVariableValueEditor(String modelIdentifier) { - Object object = fEditorMap.get(modelIdentifier); - IVariableValueEditor editor= null; - if (object instanceof IVariableValueEditor) { - editor= (IVariableValueEditor) object; - } else if (object instanceof IConfigurationElement) { - try { - editor = (IVariableValueEditor) ((IConfigurationElement) object).createExecutableExtension("class"); //$NON-NLS-1$ - fEditorMap.put(modelIdentifier, editor); - } catch (CoreException e) { - // If an exception occurs, loading the extension, just log it and - // return null. - DebugUIPlugin.log(e); - } - } - return editor; - } + /** + * Returns the variable value editor associated with the given debug + * model identifier or <code>null</code> if no editor has been supplied + * for the given debug model. + * @param modelIdentifier the debug model identifier + * @return the variable value editor associated with the given debug model + * identifier or <code>null</code> + */ + public IVariableValueEditor getVariableValueEditor(String modelIdentifier) { + Object object = fEditorMap.get(modelIdentifier); + IVariableValueEditor editor= null; + if (object instanceof IVariableValueEditor) { + editor= (IVariableValueEditor) object; + } else if (object instanceof IConfigurationElement) { + try { + editor = (IVariableValueEditor) ((IConfigurationElement) object).createExecutableExtension("class"); //$NON-NLS-1$ + fEditorMap.put(modelIdentifier, editor); + } catch (CoreException e) { + // If an exception occurs, loading the extension, just log it and + // return null. + DebugUIPlugin.log(e); + } + } + return editor; + } /** * Loads contributors to the org.eclipse.debug.ui.variableValueEditors extension point, @@ -101,11 +101,11 @@ public class VariableValueEditorManager { IExtensionPoint ep = Platform.getExtensionRegistry().getExtensionPoint(DebugUIPlugin.getUniqueIdentifier(), IDebugUIConstants.EXTENSION_POINT_VARIABLE_VALUE_EDITORS); IConfigurationElement[] elements = ep.getConfigurationElements(); for (int i = 0; i < elements.length; i++) { - IConfigurationElement element = elements[i]; - String modelId = element.getAttribute("modelId"); //$NON-NLS-1$ - if (modelId != null) { - fEditorMap.put(modelId, element); - } - } + IConfigurationElement element = elements[i]; + String modelId = element.getAttribute("modelId"); //$NON-NLS-1$ + if (modelId != null) { + fEditorMap.put(modelId, element); + } + } } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/AbstractDebugActionDelegate.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/AbstractDebugActionDelegate.java index 0a1293bfe..e6192a6da 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/AbstractDebugActionDelegate.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/AbstractDebugActionDelegate.java @@ -76,18 +76,18 @@ public abstract class AbstractDebugActionDelegate implements IViewActionDelegate @Override public void dispose(){ - fSelection= null; + fSelection= null; } @Override public void run(IAction action){ - if (action.isEnabled()) { + if (action.isEnabled()) { IStructuredSelection selection = getSelection(); // disable the action so it cannot be run again until an event or selection change // updates the enablement action.setEnabled(false); runInForeground(selection, false); - } + } } /** @@ -96,7 +96,7 @@ public abstract class AbstractDebugActionDelegate implements IViewActionDelegate */ private void runInForeground(final IStructuredSelection selection, boolean isShift) { fIsShift = isShift; - final MultiStatus status= + final MultiStatus status= new MultiStatus(DebugUIPlugin.getUniqueIdentifier(), DebugException.REQUEST_FAILED, getStatusMessage(), null); BusyIndicator.showWhile(Display.getCurrent(), () -> { Iterator<?> selectionIter = selection.iterator(); diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/ActionMessages.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/ActionMessages.java index 03e6fb189..59d220b26 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/ActionMessages.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/ActionMessages.java @@ -17,39 +17,39 @@ package org.eclipse.debug.internal.ui.actions; import org.eclipse.osgi.util.NLS; public class ActionMessages extends NLS { - private static final String BUNDLE_NAME = "org.eclipse.debug.internal.ui.actions.ActionMessages";//$NON-NLS-1$ + private static final String BUNDLE_NAME = "org.eclipse.debug.internal.ui.actions.ActionMessages";//$NON-NLS-1$ - public static String AbstractLaunchHistoryAction_0; - public static String AbstractLaunchHistoryAction_1; - public static String AbstractLaunchHistoryAction_2; - public static String AbstractLaunchHistoryAction_3; - public static String AbstractLaunchHistoryAction_4; + public static String AbstractLaunchHistoryAction_0; + public static String AbstractLaunchHistoryAction_1; + public static String AbstractLaunchHistoryAction_2; + public static String AbstractLaunchHistoryAction_3; + public static String AbstractLaunchHistoryAction_4; public static String AbstractLaunchHistoryAction_5; public static String AbstractLaunchHistoryAction_6; - public static String AddToFavoritesAction_1; - public static String AddToFavoritesAction_2; - public static String AddToFavoritesAction_3; + public static String AddToFavoritesAction_1; + public static String AddToFavoritesAction_2; + public static String AddToFavoritesAction_3; - public static String ChangeVariableValue_errorDialogMessage; - public static String ChangeVariableValue_errorDialogTitle; - public static String ChangeVariableValue_title; - public static String ChangeVariableValue_toolTipText; - public static String ChangeVariableValue_1; - public static String ChangeVariableValue_2; - public static String ChangeVariableValue_3; - public static String ChangeVariableValue_4; + public static String ChangeVariableValue_errorDialogMessage; + public static String ChangeVariableValue_errorDialogTitle; + public static String ChangeVariableValue_title; + public static String ChangeVariableValue_toolTipText; + public static String ChangeVariableValue_1; + public static String ChangeVariableValue_2; + public static String ChangeVariableValue_3; + public static String ChangeVariableValue_4; - public static String CollapseAllAction_0; + public static String CollapseAllAction_0; - public static String ConfigureColumnsAction_0; + public static String ConfigureColumnsAction_0; public static String ConfigureColumnsAction_1; public static String ConfigureColumnsAction_2; - public static String CopyToClipboardActionDelegate_Problem_Copying_to_Clipboard_1; - public static String CopyToClipboardActionDelegate_There_was_a_problem_when_accessing_the_system_clipboard__Retry__2; + public static String CopyToClipboardActionDelegate_Problem_Copying_to_Clipboard_1; + public static String CopyToClipboardActionDelegate_There_was_a_problem_when_accessing_the_system_clipboard__Retry__2; public static String DebugLastAction_0; @@ -62,21 +62,21 @@ public class ActionMessages extends NLS { public static String DetailPaneAssignValueAction_2; public static String DetailPaneAssignValueAction_3; public static String DetailPaneAssignValueAction_4; - public static String DetailPaneWordWrapAction_0; - public static String DetailPaneMaxLengthAction_0; + public static String DetailPaneWordWrapAction_0; + public static String DetailPaneMaxLengthAction_0; - public static String EditLaunchConfigurationAction_1; + public static String EditLaunchConfigurationAction_1; - public static String EnableBreakpointAction_Enable_breakpoint_s__failed_2; - public static String EnableBreakpointAction_Enabling_breakpoints_3; - public static String EnableBreakpointAction_Exceptions_occurred_enabling_the_breakpoint_s___4; + public static String EnableBreakpointAction_Enable_breakpoint_s__failed_2; + public static String EnableBreakpointAction_Enabling_breakpoints_3; + public static String EnableBreakpointAction_Exceptions_occurred_enabling_the_breakpoint_s___4; public static String LaunchConfigurationAction_0; - public static String OpenBreakpointMarkerAction__Go_to_File_1; - public static String OpenBreakpointMarkerAction_Exceptions_occurred_attempting_to_open_the_editor_for_the_breakpoint_resource_2; - public static String OpenBreakpointMarkerAction_Go_to_Breakpoint_1; - public static String OpenBreakpointMarkerAction_Go_to_File_for_Breakpoint_2; + public static String OpenBreakpointMarkerAction__Go_to_File_1; + public static String OpenBreakpointMarkerAction_Exceptions_occurred_attempting_to_open_the_editor_for_the_breakpoint_resource_2; + public static String OpenBreakpointMarkerAction_Go_to_Breakpoint_1; + public static String OpenBreakpointMarkerAction_Go_to_File_for_Breakpoint_2; public static String OpenLaunchDialogAction_1; @@ -88,22 +88,22 @@ public class ActionMessages extends NLS { public static String ProfileLastAction_2; public static String ProfileLastAction_3; - public static String RelaunchActionDelegate_An_exception_occurred_while_launching_2; - public static String RelaunchActionDelegate_Launch_Failed_1; - public static String RelaunchLastAction_Cannot_relaunch_1; - public static String RelaunchLastAction_Cannot_relaunch___0___because_it_does_not_support__2__mode_2; - public static String RelaunchLastAction_Error_relaunching_3; - public static String RelaunchLastAction_Error_encountered_attempting_to_relaunch_4; + public static String RelaunchActionDelegate_An_exception_occurred_while_launching_2; + public static String RelaunchActionDelegate_Launch_Failed_1; + public static String RelaunchLastAction_Cannot_relaunch_1; + public static String RelaunchLastAction_Cannot_relaunch___0___because_it_does_not_support__2__mode_2; + public static String RelaunchLastAction_Error_relaunching_3; + public static String RelaunchLastAction_Error_encountered_attempting_to_relaunch_4; - public static String RemoveAllBreakpointsAction_0; - public static String RemoveAllBreakpointsAction_1; - public static String RemoveAllBreakpointsAction_2; + public static String RemoveAllBreakpointsAction_0; + public static String RemoveAllBreakpointsAction_1; + public static String RemoveAllBreakpointsAction_2; public static String RemoveAllBreakpointsAction_3; public static String RemoveAllBreakpointsAction_4; - public static String RemoveBreakpointAction_0; - public static String RemoveBreakpointAction_1; - public static String RemoveBreakpointAction_2; - public static String RemoveBreakpointAction_3; + public static String RemoveBreakpointAction_0; + public static String RemoveBreakpointAction_1; + public static String RemoveBreakpointAction_2; + public static String RemoveBreakpointAction_3; public static String RemoveBreakpointAction_4; public static String RemoveBreakpointAction_5; public static String RemoveBreakpointAction_6; @@ -124,93 +124,93 @@ public class ActionMessages extends NLS { public static String RunLastAction_2; public static String RunLastAction_3; - public static String ShowSupportedBreakpointsAction_Show_For_Selected; - public static String ShowSupportedBreakpointsAction_tooltip; + public static String ShowSupportedBreakpointsAction_Show_For_Selected; + public static String ShowSupportedBreakpointsAction_tooltip; - public static String ShowTypesAction_Show__Type_Names_1; - public static String ShowTypesAction_Show_Type_Names; + public static String ShowTypesAction_Show__Type_Names_1; + public static String ShowTypesAction_Show_Type_Names; - public static String SkipAllBreakpointsAction_0; - public static String SkipAllBreakpointsAction_2; + public static String SkipAllBreakpointsAction_0; + public static String SkipAllBreakpointsAction_2; - public static String TerminateAndRelaunchAction_0; - public static String TerminateAndRelaunchAction_3; - public static String TerminateAndRelaunchAction_4; - public static String TerminateAndRemoveAction_0; - public static String TerminateAndRemoveAction_3; + public static String TerminateAndRelaunchAction_0; + public static String TerminateAndRelaunchAction_3; + public static String TerminateAndRelaunchAction_4; + public static String TerminateAndRemoveAction_0; + public static String TerminateAndRemoveAction_3; - public static String ToggleDetailPaneAction_0; + public static String ToggleDetailPaneAction_0; public static String ToggleDetailPaneAction_1; - public static String ToggleDetailPaneAction_2; + public static String ToggleDetailPaneAction_2; public static String ToggleDetailPaneAction_3; - public static String ToggleDetailPaneAction_4; - public static String ToggleDetailPaneAction_5; - public static String ToggleDetailPaneAction_8; - public static String ToggleBreakpointAction_0; - public static String ToggleBreakpointAction_1; - public static String ToggleBreakpointAction_2; + public static String ToggleDetailPaneAction_4; + public static String ToggleDetailPaneAction_5; + public static String ToggleDetailPaneAction_8; + public static String ToggleBreakpointAction_0; + public static String ToggleBreakpointAction_1; + public static String ToggleBreakpointAction_2; public static String ToggleBreakpointAction_3; public static String ToggleStepFiltersAction_0; public static String ToggleStepFiltersAction_1; - public static String WatchExpressionDialog_0; - public static String WatchExpressionDialog_1; - public static String WatchExpressionDialog_2; - public static String WatchExpressionDialog_3; - public static String WatchExpressionDialog_4; + public static String WatchExpressionDialog_0; + public static String WatchExpressionDialog_1; + public static String WatchExpressionDialog_2; + public static String WatchExpressionDialog_3; + public static String WatchExpressionDialog_4; public static String WatchExpressionDialog_5; public static String WatchExpressionDialogMenu_0; public static String WatchExpressionDialogMenu_1; public static String WatchExpressionDialogMenu_2; - public static String WatchAction_0; - public static String WatchAction_1; + public static String WatchAction_0; + public static String WatchAction_1; - public static String RunToLineAction_0; - public static String RunToLineAction_1; + public static String RunToLineAction_0; + public static String RunToLineAction_1; public static String RunToLineAction_2; public static String RunToLineAction_3; - public static String RunToLineHandler_0; - public static String RunToLineActionDelegate_4; - - public static String RetargetAction_2; - public static String RetargetAction_3; - public static String ModifyWatchpointAction_0; - public static String ModifyWatchpointAction_1; - public static String RemoveAllExpressionsAction_0; - public static String RemoveAllExpressionsAction_1; - public static String LaunchShortcutsAction_1; - public static String FindDialog_1; - public static String FindDialog_3; - public static String FindAction_0; - - static { - // load message values from bundle file - NLS.initializeMessages(BUNDLE_NAME, ActionMessages.class); - } - - public static String AbstractDebugActionDelegate_0; - - public static String RetargetAddMemoryBlockAction_0; - public static String RetargetAddMemoryBlockAction_1; - public static String AddMemoryRenderingActionDelegate_0; - public static String AddMemoryRenderingActionDelegate_1; - public static String AddMemoryRenderingActionDelegate_2; - - public static String RulerEnableDisableBreakpointAction_0; - public static String RulerEnableDisableBreakpointAction_1; - public static String RulerEnableDisableBreakpointAction_2; - public static String RulerEnableDisableBreakpointAction_3; + public static String RunToLineHandler_0; + public static String RunToLineActionDelegate_4; + + public static String RetargetAction_2; + public static String RetargetAction_3; + public static String ModifyWatchpointAction_0; + public static String ModifyWatchpointAction_1; + public static String RemoveAllExpressionsAction_0; + public static String RemoveAllExpressionsAction_1; + public static String LaunchShortcutsAction_1; + public static String FindDialog_1; + public static String FindDialog_3; + public static String FindAction_0; + + static { + // load message values from bundle file + NLS.initializeMessages(BUNDLE_NAME, ActionMessages.class); + } + + public static String AbstractDebugActionDelegate_0; + + public static String RetargetAddMemoryBlockAction_0; + public static String RetargetAddMemoryBlockAction_1; + public static String AddMemoryRenderingActionDelegate_0; + public static String AddMemoryRenderingActionDelegate_1; + public static String AddMemoryRenderingActionDelegate_2; + + public static String RulerEnableDisableBreakpointAction_0; + public static String RulerEnableDisableBreakpointAction_1; + public static String RulerEnableDisableBreakpointAction_2; + public static String RulerEnableDisableBreakpointAction_3; public static String RulerEnableDisableBreakpointAction_4; - public static String DisconnectAction_0; - public static String DisconnectAction_3; - public static String DropToFrameAction_0; - public static String DropToFrameAction_3; - public static String LaunchAction_0; + public static String DisconnectAction_0; + public static String DisconnectAction_3; + public static String DropToFrameAction_0; + public static String DropToFrameAction_3; + public static String LaunchAction_0; public static String LaunchAction_1; @@ -218,23 +218,23 @@ public class ActionMessages extends NLS { public static String RestartCommandAction__text; - public static String RestartCommandAction_tooltip; - - public static String ResumeAction_0; - public static String ResumeAction_3; - public static String StepIntoAction_0; - public static String StepIntoAction_3; - public static String StepOverAction_0; - public static String StepOverAction_3; - public static String StepReturnAction_2; - public static String StepReturnAction_3; - public static String SuspendAction_0; - public static String SuspendAction_3; - public static String TerminateAction_0; - public static String TerminateAction_3; + public static String RestartCommandAction_tooltip; + + public static String ResumeAction_0; + public static String ResumeAction_3; + public static String StepIntoAction_0; + public static String StepIntoAction_3; + public static String StepOverAction_0; + public static String StepOverAction_3; + public static String StepReturnAction_2; + public static String StepReturnAction_3; + public static String SuspendAction_0; + public static String SuspendAction_3; + public static String TerminateAction_0; + public static String TerminateAction_3; public static String TerminateAndLaunchFailure; - public static String TerminateAllAction_2; - public static String TerminateAllAction_3; + public static String TerminateAllAction_2; + public static String TerminateAllAction_3; public static String DeleteWorkingsetsMessageDialog_0; public static String DeleteWorkingsetsMessageDialog_1; @@ -245,5 +245,5 @@ public class ActionMessages extends NLS { public static String VirtualFindAction_1; public static String ToggleBreakpointsTargetManager_defaultToggleTarget_name; - public static String ToggleBreakpointsTargetManager_defaultToggleTarget_description; + public static String ToggleBreakpointsTargetManager_defaultToggleTarget_description; }
\ No newline at end of file diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/AddToFavoritesAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/AddToFavoritesAction.java index 7ae847bb9..74483bf22 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/AddToFavoritesAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/AddToFavoritesAction.java @@ -84,7 +84,7 @@ public class AddToFavoritesAction extends SelectionListenerAction { if (configuration != null) { ILaunchGroup group= DebugUITools.getLaunchGroup(configuration, getMode()); if (group == null) { - return false; + return false; } setGroup(group); setLaunchConfiguration(configuration); diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/CollapseAllAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/CollapseAllAction.java index a32cd70c4..7043872a7 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/CollapseAllAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/CollapseAllAction.java @@ -44,6 +44,6 @@ public class CollapseAllAction extends Action implements IUpdate { @Override public void update() { - setEnabled( fViewer.getInput() != null && fViewer.getChildCount(TreePath.EMPTY) > 0 ); + setEnabled( fViewer.getInput() != null && fViewer.getChildCount(TreePath.EMPTY) > 0 ); } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/RetargetAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/RetargetAction.java index 26f3a0d35..88ee2a48d 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/RetargetAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/RetargetAction.java @@ -73,7 +73,7 @@ public abstract class RetargetAction implements IWorkbenchWindowActionDelegate, } protected IWorkbenchPart getActivePart() { - return fActivePart; + return fActivePart; } @Override @@ -141,7 +141,7 @@ public abstract class RetargetAction implements IWorkbenchWindowActionDelegate, fTargetAdapter = getAdapter((IAdaptable) object); } } - action.setEnabled(fTargetAdapter != null && isTargetEnabled()); + action.setEnabled(fTargetAdapter != null && isTargetEnabled()); } } @@ -219,9 +219,9 @@ public abstract class RetargetAction implements IWorkbenchWindowActionDelegate, */ protected boolean isTargetEnabled() { if (fTargetAdapter != null) { - if (fActivePart != null) { - return canPerformAction(fTargetAdapter, getTargetSelection(), fActivePart); - } + if (fActivePart != null) { + return canPerformAction(fTargetAdapter, getTargetSelection(), fActivePart); + } } return false; } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/RetargetRunToLineAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/RetargetRunToLineAction.java index 083b01085..478489982 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/RetargetRunToLineAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/RetargetRunToLineAction.java @@ -45,8 +45,8 @@ public class RetargetRunToLineAction extends RetargetAction { if (selection instanceof IStructuredSelection) { IStructuredSelection ss = (IStructuredSelection) selection; if (ss.size() == 1) { - fTargetElement = (ISuspendResume) - DebugPlugin.getAdapter(ss.getFirstElement(), ISuspendResume.class); + fTargetElement = (ISuspendResume) + DebugPlugin.getAdapter(ss.getFirstElement(), ISuspendResume.class); } } IAction action = getAction(); @@ -80,8 +80,8 @@ public class RetargetRunToLineAction extends RetargetAction { @Override public void init(IAction action) { - super.init(action); - action.setActionDefinitionId("org.eclipse.debug.ui.commands.RunToLine"); //$NON-NLS-1$ + super.init(action); + action.setActionDefinitionId("org.eclipse.debug.ui.commands.RunToLine"); //$NON-NLS-1$ } @Override diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/ToggleBreakpointsTargetManager.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/ToggleBreakpointsTargetManager.java index eba6a00e3..6c9509d95 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/ToggleBreakpointsTargetManager.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/ToggleBreakpointsTargetManager.java @@ -77,660 +77,660 @@ import org.eclipse.ui.texteditor.SimpleMarkerAnnotation; */ public class ToggleBreakpointsTargetManager implements IToggleBreakpointsTargetManager { - /** - * Toggle breakpoints target ID which refers to a target contributed - * through the legacy adapter mechanism. - */ - public static String DEFAULT_TOGGLE_TARGET_ID = "default"; //$NON-NLS-1$ + /** + * Toggle breakpoints target ID which refers to a target contributed + * through the legacy adapter mechanism. + */ + public static String DEFAULT_TOGGLE_TARGET_ID = "default"; //$NON-NLS-1$ private static Set<String> DEFAULT_TOGGLE_TARGET_ID_SET = new TreeSet<>(); - static { - DEFAULT_TOGGLE_TARGET_ID_SET.add(DEFAULT_TOGGLE_TARGET_ID); - } - - /** - * Acts as a proxy between the toggle breakpoints target manager and the factories - * contributed to the extension point. Only loads information from the plug-in XML - * and only instantiates the specified factory if required (lazy loading). - */ - private static class ToggleTargetFactory implements IToggleBreakpointsTargetFactory { - - private IConfigurationElement fConfigElement; - private IToggleBreakpointsTargetFactory fFactory; - private Expression fEnablementExpression; - - public ToggleTargetFactory(IConfigurationElement configElement){ - fConfigElement = configElement; - } - - /** - * @return Returns the instantiated factory specified by the class property. - */ - private IToggleBreakpointsTargetFactory getFactory() { - if (fFactory != null) { + static { + DEFAULT_TOGGLE_TARGET_ID_SET.add(DEFAULT_TOGGLE_TARGET_ID); + } + + /** + * Acts as a proxy between the toggle breakpoints target manager and the factories + * contributed to the extension point. Only loads information from the plug-in XML + * and only instantiates the specified factory if required (lazy loading). + */ + private static class ToggleTargetFactory implements IToggleBreakpointsTargetFactory { + + private IConfigurationElement fConfigElement; + private IToggleBreakpointsTargetFactory fFactory; + private Expression fEnablementExpression; + + public ToggleTargetFactory(IConfigurationElement configElement){ + fConfigElement = configElement; + } + + /** + * @return Returns the instantiated factory specified by the class property. + */ + private IToggleBreakpointsTargetFactory getFactory() { + if (fFactory != null) { return fFactory; } - try{ - Object obj = fConfigElement.createExecutableExtension(IConfigurationElementConstants.CLASS); - if(obj instanceof IToggleBreakpointsTargetFactory) { - fFactory = (IToggleBreakpointsTargetFactory)obj; - } else { - throw new CoreException(new Status(IStatus.ERROR, DebugUIPlugin.getUniqueIdentifier(), IDebugUIConstants.INTERNAL_ERROR, "org.eclipse.debug.ui.toggleBreakpointsTargetFactories extension failed to load breakpoint toggle target because the specified class does not implement org.eclipse.debug.ui.actions.IToggleBreakpointsTargetFactory. Class specified was: " + obj, null)); //$NON-NLS-1$ - } - } catch (CoreException e){ - DebugUIPlugin.log(e.getStatus()); - fFactory = null; - } - return fFactory; - } - - /** - * Checks if the enablement expression for the factory evaluates to true for the - * given part and selection. - * @param part The active part. - * @param selection The current selection - * @return whether the delegated target factory is enabled for given - * part and selection. - */ - public boolean isEnabled(IWorkbenchPart part, ISelection selection) { - boolean enabled = false; - Expression expression = getEnablementExpression(); - if (expression != null) { - enabled = evalEnablementExpression(part, selection, expression); - } else { - enabled = true; - } - return enabled; - } - - /** - * Returns the active debug context given the active part. It is used - * in creating the evaluation context for the factories' enablement expression. - * @param part active part - * @return current active debug context - */ - private IStructuredSelection getDebugContext(IWorkbenchPart part) { - ISelection selection = DebugUITools.getDebugContextManager(). - getContextService(part.getSite().getWorkbenchWindow()).getActiveContext(); - if (selection instanceof IStructuredSelection) { - return (IStructuredSelection)selection; - } - return StructuredSelection.EMPTY; - } - - /** - * Evaluate the given expression within the given context and return - * the result. Returns <code>true</code> iff result is either TRUE. - * - * @param part the {@link IWorkbenchPart} context - * @param selection the current selection in the part - * @param exp the current expression - * @return the result of evaluating the expression - */ - private boolean evalEnablementExpression(IWorkbenchPart part, ISelection selection, Expression exp) { - if (exp != null){ - IEvaluationContext context = DebugUIPlugin.createEvaluationContext(part); + try{ + Object obj = fConfigElement.createExecutableExtension(IConfigurationElementConstants.CLASS); + if(obj instanceof IToggleBreakpointsTargetFactory) { + fFactory = (IToggleBreakpointsTargetFactory)obj; + } else { + throw new CoreException(new Status(IStatus.ERROR, DebugUIPlugin.getUniqueIdentifier(), IDebugUIConstants.INTERNAL_ERROR, "org.eclipse.debug.ui.toggleBreakpointsTargetFactories extension failed to load breakpoint toggle target because the specified class does not implement org.eclipse.debug.ui.actions.IToggleBreakpointsTargetFactory. Class specified was: " + obj, null)); //$NON-NLS-1$ + } + } catch (CoreException e){ + DebugUIPlugin.log(e.getStatus()); + fFactory = null; + } + return fFactory; + } + + /** + * Checks if the enablement expression for the factory evaluates to true for the + * given part and selection. + * @param part The active part. + * @param selection The current selection + * @return whether the delegated target factory is enabled for given + * part and selection. + */ + public boolean isEnabled(IWorkbenchPart part, ISelection selection) { + boolean enabled = false; + Expression expression = getEnablementExpression(); + if (expression != null) { + enabled = evalEnablementExpression(part, selection, expression); + } else { + enabled = true; + } + return enabled; + } + + /** + * Returns the active debug context given the active part. It is used + * in creating the evaluation context for the factories' enablement expression. + * @param part active part + * @return current active debug context + */ + private IStructuredSelection getDebugContext(IWorkbenchPart part) { + ISelection selection = DebugUITools.getDebugContextManager(). + getContextService(part.getSite().getWorkbenchWindow()).getActiveContext(); + if (selection instanceof IStructuredSelection) { + return (IStructuredSelection)selection; + } + return StructuredSelection.EMPTY; + } + + /** + * Evaluate the given expression within the given context and return + * the result. Returns <code>true</code> iff result is either TRUE. + * + * @param part the {@link IWorkbenchPart} context + * @param selection the current selection in the part + * @param exp the current expression + * @return the result of evaluating the expression + */ + private boolean evalEnablementExpression(IWorkbenchPart part, ISelection selection, Expression exp) { + if (exp != null){ + IEvaluationContext context = DebugUIPlugin.createEvaluationContext(part); List<Object> debugContextList = getDebugContext(part).toList(); - context.addVariable(IConfigurationElementConstants.DEBUG_CONTEXT, debugContextList); + context.addVariable(IConfigurationElementConstants.DEBUG_CONTEXT, debugContextList); - if (selection instanceof IStructuredSelection) { + if (selection instanceof IStructuredSelection) { List<Object> selectionList = ((IStructuredSelection) selection).toList(); - context.addVariable(IConfigurationElementConstants.SELECTION, selectionList); - } - - if (part instanceof IEditorPart) { - context.addVariable(IConfigurationElementConstants.EDITOR_INPUT, ((IEditorPart)part).getEditorInput()); - } - - try{ - EvaluationResult result = exp.evaluate(context); - if (result == EvaluationResult.TRUE){ - return true; - } - } catch (CoreException e){ - // Evaluation failed - } - } - return false; - } - - /** + context.addVariable(IConfigurationElementConstants.SELECTION, selectionList); + } + + if (part instanceof IEditorPart) { + context.addVariable(IConfigurationElementConstants.EDITOR_INPUT, ((IEditorPart)part).getEditorInput()); + } + + try{ + EvaluationResult result = exp.evaluate(context); + if (result == EvaluationResult.TRUE){ + return true; + } + } catch (CoreException e){ + // Evaluation failed + } + } + return false; + } + + /** * @return Returns an expression that represents the enablement logic * for the breakpoint toggle target. */ - private Expression getEnablementExpression(){ - if (fEnablementExpression == null) { - try{ - IConfigurationElement[] elements = fConfigElement.getChildren(ExpressionTagNames.ENABLEMENT); - IConfigurationElement enablement = elements.length > 0 ? elements[0] : null; - if (enablement != null) { - fEnablementExpression = ExpressionConverter.getDefault().perform(enablement); - } - } catch (CoreException e){ - DebugUIPlugin.log(e.getStatus()); - fEnablementExpression = null; - } - } - return fEnablementExpression; - } - - /** - * Instantiates the factory and asks it to produce the IToggleBreakpointsTarget - * for the given ID - * @param targetID ID to create toggle target for - * @return The created toggle target, or null. - */ - @Override + private Expression getEnablementExpression(){ + if (fEnablementExpression == null) { + try{ + IConfigurationElement[] elements = fConfigElement.getChildren(ExpressionTagNames.ENABLEMENT); + IConfigurationElement enablement = elements.length > 0 ? elements[0] : null; + if (enablement != null) { + fEnablementExpression = ExpressionConverter.getDefault().perform(enablement); + } + } catch (CoreException e){ + DebugUIPlugin.log(e.getStatus()); + fEnablementExpression = null; + } + } + return fEnablementExpression; + } + + /** + * Instantiates the factory and asks it to produce the IToggleBreakpointsTarget + * for the given ID + * @param targetID ID to create toggle target for + * @return The created toggle target, or null. + */ + @Override public IToggleBreakpointsTarget createToggleTarget(String targetID) { - IToggleBreakpointsTargetFactory factory = getFactory(); - if (factory != null) { - return factory.createToggleTarget(targetID); - } - return null; - } - - /** - * Instantiates the factory and asks it for the set of toggle target - * IDs that the factory can produce for the given part and selection. - * @param part The active part. - * @param selection The current selection - * @return Set of <code>String</code> IDs for possible toggle breakpoint - * targets, possibly empty - */ - @Override + IToggleBreakpointsTargetFactory factory = getFactory(); + if (factory != null) { + return factory.createToggleTarget(targetID); + } + return null; + } + + /** + * Instantiates the factory and asks it for the set of toggle target + * IDs that the factory can produce for the given part and selection. + * @param part The active part. + * @param selection The current selection + * @return Set of <code>String</code> IDs for possible toggle breakpoint + * targets, possibly empty + */ + @Override public Set<String> getToggleTargets(IWorkbenchPart part, ISelection selection) { - IToggleBreakpointsTargetFactory factory = getFactory(); - if (factory != null) { - return factory.getToggleTargets(part, selection); - } - return Collections.EMPTY_SET; - } - - /** - * Instantiates the factory and asks it to produce the name of the toggle target - * for the given ID. - * @param targetID toggle breakpoints target identifier - * @return toggle target name - */ - @Override + IToggleBreakpointsTargetFactory factory = getFactory(); + if (factory != null) { + return factory.getToggleTargets(part, selection); + } + return Collections.EMPTY_SET; + } + + /** + * Instantiates the factory and asks it to produce the name of the toggle target + * for the given ID. + * @param targetID toggle breakpoints target identifier + * @return toggle target name + */ + @Override public String getToggleTargetName(String targetID) { - IToggleBreakpointsTargetFactory factory = getFactory(); - if (factory != null) { - return factory.getToggleTargetName(targetID); - } - return null; - } - - /** - * Instantiates the factory and asks it to produce the description of the toggle - * target for the given ID. - * @param targetID toggle breakpoints target identifier - * @return toggle target name or <code>null</code> if none - */ - @Override + IToggleBreakpointsTargetFactory factory = getFactory(); + if (factory != null) { + return factory.getToggleTargetName(targetID); + } + return null; + } + + /** + * Instantiates the factory and asks it to produce the description of the toggle + * target for the given ID. + * @param targetID toggle breakpoints target identifier + * @return toggle target name or <code>null</code> if none + */ + @Override public String getToggleTargetDescription(String targetID) { - IToggleBreakpointsTargetFactory factory = getFactory(); - if (factory != null) { - return factory.getToggleTargetDescription(targetID); - } - return null; - } - - /** - * Instantiates the factory and asks it for the toggle tareget ID that - * the factory considers the default for the given part and selection. - * @param part The active part. - * @param selection The current selection - * @return a breakpoint toggle target identifier or <code>null</code> - */ - @Override + IToggleBreakpointsTargetFactory factory = getFactory(); + if (factory != null) { + return factory.getToggleTargetDescription(targetID); + } + return null; + } + + /** + * Instantiates the factory and asks it for the toggle tareget ID that + * the factory considers the default for the given part and selection. + * @param part The active part. + * @param selection The current selection + * @return a breakpoint toggle target identifier or <code>null</code> + */ + @Override public String getDefaultToggleTarget(IWorkbenchPart part, ISelection selection) { - IToggleBreakpointsTargetFactory factory = getFactory(); - if (factory != null) { - return factory.getDefaultToggleTarget(part, selection); - } - return null; - } - } - - - /** - * Factory for toggle breakpoints targets contributed through the - * adapter mechanism. - */ - private static class ToggleBreakpointsTargetAdapterFactory implements IToggleBreakpointsTargetFactory { - - private Object getSelectionElement(ISelection selection) { - if (selection instanceof IStructuredSelection) { - IStructuredSelection ss = (IStructuredSelection)selection; - return ss.getFirstElement(); - } - return null; - } - - /** - * Checks whether the given element is adaptable to the toggle breakpoints target. - * This method does not force loading of the adapter. - * @param adaptable Element to adapt. - * @return returns true if element can be adapted. - */ - private boolean canGetToggleBreakpointsTarget(Object adaptable) { - if (adaptable != null) { - IToggleBreakpointsTarget adapter = null; - if (adaptable instanceof IAdaptable) { - adapter = ((IAdaptable)adaptable).getAdapter(IToggleBreakpointsTarget.class); - } - if (adapter == null) { - IAdapterManager adapterManager = Platform.getAdapterManager(); - if (adapterManager.hasAdapter(adaptable, IToggleBreakpointsTarget.class.getName())) { - return true; - } - } else { - return true; - } - } - return false; - } - - /** - * Finds the toggle breakpoints target for the active part and selection. - * It first looks for the target using the factories registered using an - * extension point. If not found it uses the <code>IAdaptable</code> - * mechanism. - * @param part The workbench part in which toggle target is to be used - * @param element The selection element to retrieve the toggle adapter from - * @return The toggle breakpoints target, or <code>null</code> if not found. - */ - private IToggleBreakpointsTarget getToggleBreakpointsTarget(IWorkbenchPart part, Object element) { - IToggleBreakpointsTarget target = null; - if (element != null) { - target = (IToggleBreakpointsTarget) DebugPlugin.getAdapter(element, IToggleBreakpointsTarget.class); - } - if (target == null) { - target = (IToggleBreakpointsTarget) DebugPlugin.getAdapter(part, IToggleBreakpointsTarget.class); - } - return target; - } - - /** - * Checks if there is an adaptable object for the given part and - * selection, and if there is, it checks whether an - * <code>IToggleBreakpointsTarget</code> can be obtained as an adapter. - * @param part The workbench part in which toggle target is to be used - * @param selection The active selection to use with toggle target - * @return Whether the adapter (default) toggle target is available. - */ - public boolean isEnabled(IWorkbenchPart part, ISelection selection) { - return canGetToggleBreakpointsTarget(getSelectionElement(selection)) || canGetToggleBreakpointsTarget(part); - } - - /** - * Not implemented use {@link #createDefaultToggleTarget(IWorkbenchPart, ISelection)} - * instead. - * @param targetID not used - * @return always returns null - */ - @Override + IToggleBreakpointsTargetFactory factory = getFactory(); + if (factory != null) { + return factory.getDefaultToggleTarget(part, selection); + } + return null; + } + } + + + /** + * Factory for toggle breakpoints targets contributed through the + * adapter mechanism. + */ + private static class ToggleBreakpointsTargetAdapterFactory implements IToggleBreakpointsTargetFactory { + + private Object getSelectionElement(ISelection selection) { + if (selection instanceof IStructuredSelection) { + IStructuredSelection ss = (IStructuredSelection)selection; + return ss.getFirstElement(); + } + return null; + } + + /** + * Checks whether the given element is adaptable to the toggle breakpoints target. + * This method does not force loading of the adapter. + * @param adaptable Element to adapt. + * @return returns true if element can be adapted. + */ + private boolean canGetToggleBreakpointsTarget(Object adaptable) { + if (adaptable != null) { + IToggleBreakpointsTarget adapter = null; + if (adaptable instanceof IAdaptable) { + adapter = ((IAdaptable)adaptable).getAdapter(IToggleBreakpointsTarget.class); + } + if (adapter == null) { + IAdapterManager adapterManager = Platform.getAdapterManager(); + if (adapterManager.hasAdapter(adaptable, IToggleBreakpointsTarget.class.getName())) { + return true; + } + } else { + return true; + } + } + return false; + } + + /** + * Finds the toggle breakpoints target for the active part and selection. + * It first looks for the target using the factories registered using an + * extension point. If not found it uses the <code>IAdaptable</code> + * mechanism. + * @param part The workbench part in which toggle target is to be used + * @param element The selection element to retrieve the toggle adapter from + * @return The toggle breakpoints target, or <code>null</code> if not found. + */ + private IToggleBreakpointsTarget getToggleBreakpointsTarget(IWorkbenchPart part, Object element) { + IToggleBreakpointsTarget target = null; + if (element != null) { + target = (IToggleBreakpointsTarget) DebugPlugin.getAdapter(element, IToggleBreakpointsTarget.class); + } + if (target == null) { + target = (IToggleBreakpointsTarget) DebugPlugin.getAdapter(part, IToggleBreakpointsTarget.class); + } + return target; + } + + /** + * Checks if there is an adaptable object for the given part and + * selection, and if there is, it checks whether an + * <code>IToggleBreakpointsTarget</code> can be obtained as an adapter. + * @param part The workbench part in which toggle target is to be used + * @param selection The active selection to use with toggle target + * @return Whether the adapter (default) toggle target is available. + */ + public boolean isEnabled(IWorkbenchPart part, ISelection selection) { + return canGetToggleBreakpointsTarget(getSelectionElement(selection)) || canGetToggleBreakpointsTarget(part); + } + + /** + * Not implemented use {@link #createDefaultToggleTarget(IWorkbenchPart, ISelection)} + * instead. + * @param targetID not used + * @return always returns null + */ + @Override public IToggleBreakpointsTarget createToggleTarget(String targetID) { - return null; - } - - /** - * @param part The workbench part in which toggle target is to be used - * @param selection The active selection to use with toggle target - * @return Returns a toggle target for the given part and selection, obtained - * through the adapter mechanism. - */ - public IToggleBreakpointsTarget createDefaultToggleTarget(IWorkbenchPart part, ISelection selection) { - return getToggleBreakpointsTarget(part, getSelectionElement(selection)); - } - - @Override + return null; + } + + /** + * @param part The workbench part in which toggle target is to be used + * @param selection The active selection to use with toggle target + * @return Returns a toggle target for the given part and selection, obtained + * through the adapter mechanism. + */ + public IToggleBreakpointsTarget createDefaultToggleTarget(IWorkbenchPart part, ISelection selection) { + return getToggleBreakpointsTarget(part, getSelectionElement(selection)); + } + + @Override public Set<String> getToggleTargets(IWorkbenchPart part, ISelection selection) { - if (isEnabled(part, selection)) { - return DEFAULT_TOGGLE_TARGET_ID_SET; - } - return Collections.EMPTY_SET; - } + if (isEnabled(part, selection)) { + return DEFAULT_TOGGLE_TARGET_ID_SET; + } + return Collections.EMPTY_SET; + } - @Override + @Override public String getToggleTargetName(String targetID) { - return ActionMessages.ToggleBreakpointsTargetManager_defaultToggleTarget_name; - } + return ActionMessages.ToggleBreakpointsTargetManager_defaultToggleTarget_name; + } - @Override + @Override public String getToggleTargetDescription(String targetID) { - return ActionMessages.ToggleBreakpointsTargetManager_defaultToggleTarget_description; - } + return ActionMessages.ToggleBreakpointsTargetManager_defaultToggleTarget_description; + } - @Override + @Override public String getDefaultToggleTarget(IWorkbenchPart part, ISelection selection) { - return DEFAULT_TOGGLE_TARGET_ID; - } - } + return DEFAULT_TOGGLE_TARGET_ID; + } + } - /** - * Preference key for storing the preferred targets map. - * @see #storePreferredTargets() - * @see #loadPreferredTargets() - */ - public static final String PREF_TARGETS = "preferredTargets"; //$NON-NLS-1$ + /** + * Preference key for storing the preferred targets map. + * @see #storePreferredTargets() + * @see #loadPreferredTargets() + */ + public static final String PREF_TARGETS = "preferredTargets"; //$NON-NLS-1$ - /** - * There should only ever be once instance of this manager for the workbench. - */ - private static ToggleBreakpointsTargetManager fgSingleton; + /** + * There should only ever be once instance of this manager for the workbench. + */ + private static ToggleBreakpointsTargetManager fgSingleton; - public static ToggleBreakpointsTargetManager getDefault(){ - if (fgSingleton == null) { + public static ToggleBreakpointsTargetManager getDefault(){ + if (fgSingleton == null) { fgSingleton = new ToggleBreakpointsTargetManager(); } - return fgSingleton; - } + return fgSingleton; + } - /** - * Maps the IDs of toggle breakpoint targets to their instances. The target - * IDs must be unique. - */ + /** + * Maps the IDs of toggle breakpoint targets to their instances. The target + * IDs must be unique. + */ private Map<String, IToggleBreakpointsTargetFactory> fKnownFactories; - /** - * Maps a Set of target id's to the one target id that is preferred. - */ + /** + * Maps a Set of target id's to the one target id that is preferred. + */ private Map<Set<String>, String> fPreferredTargets; - /** - * Maps the IDs of toggle targets to the factory that can create them. - * There can currently only be one factory for a given toggle target. - */ + /** + * Maps the IDs of toggle targets to the factory that can create them. + * There can currently only be one factory for a given toggle target. + */ private Map<String, IToggleBreakpointsTargetFactory> fFactoriesByTargetID = new HashMap<>(); - /** - * List of listeners to changes in the preferred toggle targets list. - */ + /** + * List of listeners to changes in the preferred toggle targets list. + */ private ListenerList<IToggleBreakpointsTargetManagerListener> fChangedListners = new ListenerList<>(); - /** - * Initializes the collection of known factories from extension point contributions. - */ - private void initializeFactories() { + /** + * Initializes the collection of known factories from extension point contributions. + */ + private void initializeFactories() { fKnownFactories = new LinkedHashMap<>(); - fKnownFactories.put(DEFAULT_TOGGLE_TARGET_ID, new ToggleBreakpointsTargetAdapterFactory()); - IExtensionPoint ep = Platform.getExtensionRegistry().getExtensionPoint(DebugUIPlugin.getUniqueIdentifier(), IDebugUIConstants.EXTENSION_POINT_TOGGLE_BREAKPOINTS_TARGET_FACTORIES); - IConfigurationElement[] elements = ep.getConfigurationElements(); - for (int i= 0; i < elements.length; i++) { - String id = elements[i].getAttribute(IConfigurationElementConstants.ID); - if (id != null && id.length() != 0) { - if (fKnownFactories.containsKey(id)) { - DebugUIPlugin.log(new Status(IStatus.ERROR, DebugUIPlugin.getUniqueIdentifier(), IDebugUIConstants.INTERNAL_ERROR, "org.eclipse.debug.ui.toggleBreakpointsTargetFactory extension failed to load breakpoint toggle target because the specified id is already registered. Specified ID is: " + id, null)); //$NON-NLS-1$ - } else { - fKnownFactories.put(id, new ToggleTargetFactory(elements[i])); - } - } else { - DebugUIPlugin.log(new Status(IStatus.ERROR, DebugUIPlugin.getUniqueIdentifier(), IDebugUIConstants.INTERNAL_ERROR, "org.eclipse.debug.ui.toggleBreakpointsTargetFactory extension failed to load breakpoint toggle target because the specified id is empty.", null)); //$NON-NLS-1$ - } - } - - // If there are any factories contributed through the extension point, - // set a system property for use in enabling actions. - System.setProperty(IDebugUIConstants.SYS_PROP_BREAKPOINT_TOGGLE_FACTORIES_USED, - fKnownFactories.size() > 1 ? "true" : "false"); //$NON-NLS-1$ //$NON-NLS-2$ - } - - /** - * Returns the set of IToggleBreakpointsTargetFactory objects (they will be - * ToggleTargetFactory) that were contributed to the extension point and - * are enabled for the given part and selection (enabled if the factory - * does not have an enablement expression or if the enablement expression - * evaluates to true). - * - * @param part active part - * @param selection active selection in part - * @return The factories enabled for the part and selection or an empty - * collection. - */ + fKnownFactories.put(DEFAULT_TOGGLE_TARGET_ID, new ToggleBreakpointsTargetAdapterFactory()); + IExtensionPoint ep = Platform.getExtensionRegistry().getExtensionPoint(DebugUIPlugin.getUniqueIdentifier(), IDebugUIConstants.EXTENSION_POINT_TOGGLE_BREAKPOINTS_TARGET_FACTORIES); + IConfigurationElement[] elements = ep.getConfigurationElements(); + for (int i= 0; i < elements.length; i++) { + String id = elements[i].getAttribute(IConfigurationElementConstants.ID); + if (id != null && id.length() != 0) { + if (fKnownFactories.containsKey(id)) { + DebugUIPlugin.log(new Status(IStatus.ERROR, DebugUIPlugin.getUniqueIdentifier(), IDebugUIConstants.INTERNAL_ERROR, "org.eclipse.debug.ui.toggleBreakpointsTargetFactory extension failed to load breakpoint toggle target because the specified id is already registered. Specified ID is: " + id, null)); //$NON-NLS-1$ + } else { + fKnownFactories.put(id, new ToggleTargetFactory(elements[i])); + } + } else { + DebugUIPlugin.log(new Status(IStatus.ERROR, DebugUIPlugin.getUniqueIdentifier(), IDebugUIConstants.INTERNAL_ERROR, "org.eclipse.debug.ui.toggleBreakpointsTargetFactory extension failed to load breakpoint toggle target because the specified id is empty.", null)); //$NON-NLS-1$ + } + } + + // If there are any factories contributed through the extension point, + // set a system property for use in enabling actions. + System.setProperty(IDebugUIConstants.SYS_PROP_BREAKPOINT_TOGGLE_FACTORIES_USED, + fKnownFactories.size() > 1 ? "true" : "false"); //$NON-NLS-1$ //$NON-NLS-2$ + } + + /** + * Returns the set of IToggleBreakpointsTargetFactory objects (they will be + * ToggleTargetFactory) that were contributed to the extension point and + * are enabled for the given part and selection (enabled if the factory + * does not have an enablement expression or if the enablement expression + * evaluates to true). + * + * @param part active part + * @param selection active selection in part + * @return The factories enabled for the part and selection or an empty + * collection. + */ private Set<IToggleBreakpointsTargetFactory> getEnabledFactories(IWorkbenchPart part, ISelection selection) { - if (fKnownFactories == null) { + if (fKnownFactories == null) { initializeFactories(); } Set<IToggleBreakpointsTargetFactory> set = new HashSet<>(); for (Entry<String, IToggleBreakpointsTargetFactory> entry : fKnownFactories.entrySet()) { IToggleBreakpointsTargetFactory factory = entry.getValue(); - if (factory instanceof ToggleTargetFactory && - ((ToggleTargetFactory)factory).isEnabled(part, selection)) { - set.add(factory); - } else if (factory instanceof ToggleBreakpointsTargetAdapterFactory && - ((ToggleBreakpointsTargetAdapterFactory)factory).isEnabled(part, selection)) { - set.add(factory); - } - } - return set; - } - - /** - * Produces the set of IDs for all possible toggle targets that can be used for - * the given part and selection. - * - * @param factoriesToQuery The collection of factories to check - * @param part active part - * @param selection active selection in part - * @return Set of toggle target IDs or an empty set - */ + if (factory instanceof ToggleTargetFactory && + ((ToggleTargetFactory)factory).isEnabled(part, selection)) { + set.add(factory); + } else if (factory instanceof ToggleBreakpointsTargetAdapterFactory && + ((ToggleBreakpointsTargetAdapterFactory)factory).isEnabled(part, selection)) { + set.add(factory); + } + } + return set; + } + + /** + * Produces the set of IDs for all possible toggle targets that can be used for + * the given part and selection. + * + * @param factoriesToQuery The collection of factories to check + * @param part active part + * @param selection active selection in part + * @return Set of toggle target IDs or an empty set + */ private Set<String> getEnabledTargetIDs(Set<IToggleBreakpointsTargetFactory> factoriesToQuery, IWorkbenchPart part, ISelection selection) { Set<String> idsForSelection = new TreeSet<>(); for (IToggleBreakpointsTargetFactory factory : factoriesToQuery) { for(String targetID : factory.getToggleTargets(part, selection)) { - fFactoriesByTargetID.put(targetID, factory); - idsForSelection.add(targetID); - } - } - return idsForSelection; - } - - @Override + fFactoriesByTargetID.put(targetID, factory); + idsForSelection.add(targetID); + } + } + return idsForSelection; + } + + @Override public Set<String> getEnabledToggleBreakpointsTargetIDs(IWorkbenchPart part, ISelection selection) { - return getEnabledTargetIDs(getEnabledFactories(part, selection), part, selection); - } + return getEnabledTargetIDs(getEnabledFactories(part, selection), part, selection); + } - @Override + @Override public String getPreferredToggleBreakpointsTargetID(IWorkbenchPart part, ISelection selection) { Set<IToggleBreakpointsTargetFactory> factories = getEnabledFactories(part, selection); Set<String> possibleIDs = getEnabledTargetIDs(factories, part, selection); - return chooseToggleTargetIDInSet(possibleIDs, part, selection); - } + return chooseToggleTargetIDInSet(possibleIDs, part, selection); + } - @Override + @Override public IToggleBreakpointsTarget getToggleBreakpointsTarget(IWorkbenchPart part, ISelection selection) { - String id = getPreferredToggleBreakpointsTargetID(part, selection); - IToggleBreakpointsTargetFactory factory = fFactoriesByTargetID.get(id); - if (factory != null) { - if (DEFAULT_TOGGLE_TARGET_ID.equals(id)) { - return ((ToggleBreakpointsTargetAdapterFactory)factory).createDefaultToggleTarget(part, selection); - } else { - return factory.createToggleTarget(id); - } - } - return null; - } - - @Override + String id = getPreferredToggleBreakpointsTargetID(part, selection); + IToggleBreakpointsTargetFactory factory = fFactoriesByTargetID.get(id); + if (factory != null) { + if (DEFAULT_TOGGLE_TARGET_ID.equals(id)) { + return ((ToggleBreakpointsTargetAdapterFactory)factory).createDefaultToggleTarget(part, selection); + } else { + return factory.createToggleTarget(id); + } + } + return null; + } + + @Override public String getToggleBreakpointsTargetName(String id) { - IToggleBreakpointsTargetFactory factory = fFactoriesByTargetID.get(id); - if (factory != null) { - return factory.getToggleTargetName(id); - } - return null; - } - - @Override + IToggleBreakpointsTargetFactory factory = fFactoriesByTargetID.get(id); + if (factory != null) { + return factory.getToggleTargetName(id); + } + return null; + } + + @Override public String getToggleBreakpointsTargetDescription(String id) { - IToggleBreakpointsTargetFactory factory = fFactoriesByTargetID.get(id); - if (factory != null) { - return factory.getToggleTargetDescription(id); - } - return null; - } - - @Override + IToggleBreakpointsTargetFactory factory = fFactoriesByTargetID.get(id); + if (factory != null) { + return factory.getToggleTargetDescription(id); + } + return null; + } + + @Override public void addChangedListener(IToggleBreakpointsTargetManagerListener listener) { - fChangedListners.add(listener); - } + fChangedListners.add(listener); + } - @Override + @Override public void removeChangedListener(IToggleBreakpointsTargetManagerListener listener) { - fChangedListners.remove(listener); - } - - /** - * Stores the map of preferred target IDs to the preference store in the format: - * - * Key1A,Key1B:Value1|Key2A,Key2B,Key2C:Value2| - * - * Where the sub keys (Key1A, Key1B, etc.) are the elements of the set used at the - * key in the mapping and the values are the associated String value in the mapping. - */ - private void storePreferredTargets() { - StringBuilder buffer= new StringBuilder(); + fChangedListners.remove(listener); + } + + /** + * Stores the map of preferred target IDs to the preference store in the format: + * + * Key1A,Key1B:Value1|Key2A,Key2B,Key2C:Value2| + * + * Where the sub keys (Key1A, Key1B, etc.) are the elements of the set used at the + * key in the mapping and the values are the associated String value in the mapping. + */ + private void storePreferredTargets() { + StringBuilder buffer= new StringBuilder(); for (Entry<Set<String>, String> entry : fPreferredTargets.entrySet()) { for (String currentID : entry.getKey()) { - buffer.append(currentID); - buffer.append(','); - } - buffer.deleteCharAt(buffer.length()-1); - buffer.append(':'); - buffer.append(entry.getValue()); - buffer.append('|'); - } - IEclipsePreferences prefs = InstanceScope.INSTANCE.getNode(DebugUIPlugin.getUniqueIdentifier()); - if(prefs != null) { - prefs.put(PREF_TARGETS, buffer.toString()); - } - } - - /** - * Loads the map of preferred target IDs from the preference store. - * - * @see #storePreferredTargets() - */ - private void loadPreferredTargets() { + buffer.append(currentID); + buffer.append(','); + } + buffer.deleteCharAt(buffer.length()-1); + buffer.append(':'); + buffer.append(entry.getValue()); + buffer.append('|'); + } + IEclipsePreferences prefs = InstanceScope.INSTANCE.getNode(DebugUIPlugin.getUniqueIdentifier()); + if(prefs != null) { + prefs.put(PREF_TARGETS, buffer.toString()); + } + } + + /** + * Loads the map of preferred target IDs from the preference store. + * + * @see #storePreferredTargets() + */ + private void loadPreferredTargets() { fPreferredTargets = new HashMap<>(); - String preferenceValue = Platform.getPreferencesService().getString( - DebugUIPlugin.getUniqueIdentifier(), - PREF_TARGETS, - null, - null); - if(preferenceValue == null) { - return; - } - StringTokenizer entryTokenizer = new StringTokenizer(preferenceValue,"|"); //$NON-NLS-1$ - while (entryTokenizer.hasMoreTokens()){ - String token = entryTokenizer.nextToken(); - int valueStart = token.indexOf(':'); - StringTokenizer keyTokenizer = new StringTokenizer(token.substring(0,valueStart),","); //$NON-NLS-1$ + String preferenceValue = Platform.getPreferencesService().getString( + DebugUIPlugin.getUniqueIdentifier(), + PREF_TARGETS, + null, + null); + if(preferenceValue == null) { + return; + } + StringTokenizer entryTokenizer = new StringTokenizer(preferenceValue,"|"); //$NON-NLS-1$ + while (entryTokenizer.hasMoreTokens()){ + String token = entryTokenizer.nextToken(); + int valueStart = token.indexOf(':'); + StringTokenizer keyTokenizer = new StringTokenizer(token.substring(0,valueStart),","); //$NON-NLS-1$ Set<String> keys = new TreeSet<>(); - while (keyTokenizer.hasMoreTokens()){ - keys.add(keyTokenizer.nextToken()); - } - fPreferredTargets.put(keys, token.substring(valueStart+1)); - } - } - - /** - * Adds or updates the mapping to set which target ID is preferred for a certain - * set of possible IDs. - * - * @param possibleIDs The set of possible IDs - * @param preferredID The preferred ID in the set. - */ + while (keyTokenizer.hasMoreTokens()){ + keys.add(keyTokenizer.nextToken()); + } + fPreferredTargets.put(keys, token.substring(valueStart+1)); + } + } + + /** + * Adds or updates the mapping to set which target ID is preferred for a certain + * set of possible IDs. + * + * @param possibleIDs The set of possible IDs + * @param preferredID The preferred ID in the set. + */ public void setPreferredTarget(Set<String> possibleIDs, String preferredID) { - if (possibleIDs == null) { + if (possibleIDs == null) { return; } - if (fKnownFactories == null) { + if (fKnownFactories == null) { initializeFactories(); } - if (fPreferredTargets == null){ - loadPreferredTargets(); - } - String currentKey = fPreferredTargets.get(possibleIDs); - if (currentKey == null || !currentKey.equals(preferredID)){ - fPreferredTargets.put(possibleIDs, preferredID); - storePreferredTargets(); - firePreferredTargetsChanged(); - } - } - - /** - * Returns the preferred toggle target ID from the given set if the mapping has been set. - * - * @param possibleTargetIDs The set of possible toggle target IDs - * @return The preferred ID or null - */ + if (fPreferredTargets == null){ + loadPreferredTargets(); + } + String currentKey = fPreferredTargets.get(possibleIDs); + if (currentKey == null || !currentKey.equals(preferredID)){ + fPreferredTargets.put(possibleIDs, preferredID); + storePreferredTargets(); + firePreferredTargetsChanged(); + } + } + + /** + * Returns the preferred toggle target ID from the given set if the mapping has been set. + * + * @param possibleTargetIDs The set of possible toggle target IDs + * @return The preferred ID or null + */ private String getUserPreferredTarget(Set<String> possibleTargetIDs) { - if (fPreferredTargets == null){ - loadPreferredTargets(); - } - return fPreferredTargets.get(possibleTargetIDs); - } - - /** - * Given a set of possible toggle target IDs, this method will determine which target is - * preferred and should be used to toggle breakpoints. This method chooses a toggle target - * by storing previous choices and can be set using a context menu. - * - * @param possibleTargetIDs The set of possible toggle target IDs - * @param part The workbench part in which toggle target is to be used - * @param selection The active selection to use with toggle target - * @return The preferred toggle target ID or null - */ + if (fPreferredTargets == null){ + loadPreferredTargets(); + } + return fPreferredTargets.get(possibleTargetIDs); + } + + /** + * Given a set of possible toggle target IDs, this method will determine which target is + * preferred and should be used to toggle breakpoints. This method chooses a toggle target + * by storing previous choices and can be set using a context menu. + * + * @param possibleTargetIDs The set of possible toggle target IDs + * @param part The workbench part in which toggle target is to be used + * @param selection The active selection to use with toggle target + * @return The preferred toggle target ID or null + */ private String chooseToggleTargetIDInSet(Set<String> possibleTargetIDs, IWorkbenchPart part, ISelection selection) { - if (possibleTargetIDs == null || possibleTargetIDs.isEmpty()){ - return null; - } + if (possibleTargetIDs == null || possibleTargetIDs.isEmpty()){ + return null; + } - String preferredID = getUserPreferredTarget(possibleTargetIDs); + String preferredID = getUserPreferredTarget(possibleTargetIDs); - if (preferredID == null){ - // If there is no preferred pane already set, check the factories to see there is a default target + if (preferredID == null){ + // If there is no preferred pane already set, check the factories to see there is a default target Iterator<String> possibleIDsIterator = possibleTargetIDs.iterator(); - while (preferredID == null && possibleIDsIterator.hasNext()) { - IToggleBreakpointsTargetFactory factory = fFactoriesByTargetID.get(possibleIDsIterator.next()); - if (factory != null) { - preferredID = factory.getDefaultToggleTarget(part, selection); - } - } - // If the factories don't have a default, just pick the first one. - // Also make sure that the default is among the available toggle target - // IDs (bug 352502). - if (preferredID == null || !possibleTargetIDs.contains(preferredID)) { - preferredID= possibleTargetIDs.iterator().next(); - } - setPreferredTarget(possibleTargetIDs, preferredID); - } - - return preferredID; - } - - /** - * Notifies the change listeners that the preferred targets changed. - */ - private void firePreferredTargetsChanged() { + while (preferredID == null && possibleIDsIterator.hasNext()) { + IToggleBreakpointsTargetFactory factory = fFactoriesByTargetID.get(possibleIDsIterator.next()); + if (factory != null) { + preferredID = factory.getDefaultToggleTarget(part, selection); + } + } + // If the factories don't have a default, just pick the first one. + // Also make sure that the default is among the available toggle target + // IDs (bug 352502). + if (preferredID == null || !possibleTargetIDs.contains(preferredID)) { + preferredID= possibleTargetIDs.iterator().next(); + } + setPreferredTarget(possibleTargetIDs, preferredID); + } + + return preferredID; + } + + /** + * Notifies the change listeners that the preferred targets changed. + */ + private void firePreferredTargetsChanged() { for (IToggleBreakpointsTargetManagerListener iToggleBreakpointsTargetManagerListener : fChangedListners) { iToggleBreakpointsTargetManagerListener.preferredTargetsChanged(); - } - } - - public IBreakpoint getBeakpointFromEditor(ITextEditor editor, IVerticalRulerInfo info) { - IDocumentProvider provider = editor.getDocumentProvider(); - if(provider == null) { - return null; - } - IEditorInput input = editor.getEditorInput(); - IAnnotationModel annotationModel = provider.getAnnotationModel(input); + } + } + + public IBreakpoint getBeakpointFromEditor(ITextEditor editor, IVerticalRulerInfo info) { + IDocumentProvider provider = editor.getDocumentProvider(); + if(provider == null) { + return null; + } + IEditorInput input = editor.getEditorInput(); + IAnnotationModel annotationModel = provider.getAnnotationModel(input); if (annotationModel != null) { IDocument document = provider.getDocument(input); Iterator<Annotation> iterator = annotationModel.getAnnotationIterator(); @@ -756,6 +756,6 @@ public class ToggleBreakpointsTargetManager implements IToggleBreakpointsTargetM } } } - return null; - } + return null; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/AbstractBreakpointsViewAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/AbstractBreakpointsViewAction.java index 08c3118ba..8ae8e52b1 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/AbstractBreakpointsViewAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/AbstractBreakpointsViewAction.java @@ -26,30 +26,30 @@ import org.eclipse.ui.IViewPart; */ public abstract class AbstractBreakpointsViewAction implements IViewActionDelegate, IActionDelegate2 { - /** - * The breakpoints view that this action has been contributed to. - */ - protected BreakpointsView fView; + /** + * The breakpoints view that this action has been contributed to. + */ + protected BreakpointsView fView; - @Override + @Override public void init(IViewPart view) { - fView= (BreakpointsView) view; - } + fView= (BreakpointsView) view; + } @Override public void selectionChanged(IAction action, ISelection selection) { } - @Override + @Override public void dispose() { - } + } - @Override + @Override public void init(IAction action) { - } + } - @Override + @Override public void runWithEvent(IAction action, Event event) { - run(action); - } + run(action); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/AdvancedGroupBreakpointsByAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/AdvancedGroupBreakpointsByAction.java index 7c2924527..0266e600c 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/AdvancedGroupBreakpointsByAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/AdvancedGroupBreakpointsByAction.java @@ -29,18 +29,18 @@ public class AdvancedGroupBreakpointsByAction extends Action { private BreakpointsView fView; public AdvancedGroupBreakpointsByAction(BreakpointsView view) { - super(IInternalDebugCoreConstants.EMPTY_STRING, IAction.AS_RADIO_BUTTON); + super(IInternalDebugCoreConstants.EMPTY_STRING, IAction.AS_RADIO_BUTTON); fView= view; } @Override public void run() { - if (isChecked()) { - GroupBreakpointsByDialog dialog = new GroupBreakpointsByDialog(fView); - if (dialog.open() == Window.OK) { - fView.setBreakpointOrganizers(dialog.getOrganizers()); - } - } + if (isChecked()) { + GroupBreakpointsByDialog dialog = new GroupBreakpointsByDialog(fView); + if (dialog.open() == Window.OK) { + fView.setBreakpointOrganizers(dialog.getOrganizers()); + } + } } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/BreakpointSelectionAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/BreakpointSelectionAction.java index eac4412df..2c6cdf1e6 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/BreakpointSelectionAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/BreakpointSelectionAction.java @@ -21,26 +21,26 @@ import org.eclipse.ui.actions.SelectionListenerAction; */ public abstract class BreakpointSelectionAction extends SelectionListenerAction { - private BreakpointsView fView; + private BreakpointsView fView; - /** - * Constructs an action for the breakpoints view. - * - * @param text action name - * @param view breakpoints view - */ - public BreakpointSelectionAction(String text, BreakpointsView view) { - super(text); - fView = view; - } + /** + * Constructs an action for the breakpoints view. + * + * @param text action name + * @param view breakpoints view + */ + public BreakpointSelectionAction(String text, BreakpointsView view) { + super(text); + fView = view; + } - /** - * Returns the breakpoints view. - * - * @return breakpoints view - */ - protected BreakpointsView getBreakpointsView() { - return fView; - } + /** + * Returns the breakpoints view. + * + * @return breakpoints view + */ + protected BreakpointsView getBreakpointsView() { + return fView; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/BreakpointWorkingSetAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/BreakpointWorkingSetAction.java index 4ae178eac..57233bed6 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/BreakpointWorkingSetAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/BreakpointWorkingSetAction.java @@ -26,37 +26,37 @@ import org.eclipse.ui.IViewPart; */ public abstract class BreakpointWorkingSetAction extends AbstractBreakpointsViewAction implements IPropertyChangeListener { - protected IAction fAction; + protected IAction fAction; - @Override + @Override public void selectionChanged(IAction action, ISelection selection) { - update(); - } + update(); + } - @Override + @Override public void init(IViewPart view) { - super.init(view); - DebugUIPlugin.getDefault().getPreferenceStore().addPropertyChangeListener(this); - } + super.init(view); + DebugUIPlugin.getDefault().getPreferenceStore().addPropertyChangeListener(this); + } - @Override + @Override public void dispose() { - DebugUIPlugin.getDefault().getPreferenceStore().removePropertyChangeListener(this); - super.dispose(); - } - @Override + DebugUIPlugin.getDefault().getPreferenceStore().removePropertyChangeListener(this); + super.dispose(); + } + @Override public void init(IAction action) { - fAction = action; - super.init(action); - update(); - } + fAction = action; + super.init(action); + update(); + } - @Override + @Override public void propertyChange(PropertyChangeEvent event) { - if (event.getProperty().equals(IInternalDebugUIConstants.MEMENTO_BREAKPOINT_WORKING_SET_NAME)) { - update(); - } + if (event.getProperty().equals(IInternalDebugUIConstants.MEMENTO_BREAKPOINT_WORKING_SET_NAME)) { + update(); + } - } - protected abstract void update(); + } + protected abstract void update(); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/ClearDefaultBreakpointGroupAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/ClearDefaultBreakpointGroupAction.java index d78ae062a..8bce2c6bc 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/ClearDefaultBreakpointGroupAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/ClearDefaultBreakpointGroupAction.java @@ -21,13 +21,13 @@ import org.eclipse.jface.action.IAction; */ public class ClearDefaultBreakpointGroupAction extends BreakpointWorkingSetAction { - @Override + @Override public void run(IAction action) { - BreakpointSetOrganizer.setDefaultWorkingSet(null); - } + BreakpointSetOrganizer.setDefaultWorkingSet(null); + } - @Override + @Override protected void update() { - fAction.setEnabled(BreakpointSetOrganizer.getDefaultWorkingSet() != null); - } + fAction.setEnabled(BreakpointSetOrganizer.getDefaultWorkingSet() != null); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/CopyBreakpointsActionDelegate.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/CopyBreakpointsActionDelegate.java index 02a8f1ca4..53a3c1863 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/CopyBreakpointsActionDelegate.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/CopyBreakpointsActionDelegate.java @@ -48,14 +48,14 @@ public class CopyBreakpointsActionDelegate extends VirtualCopyToClipboardActionD fStamp = System.currentTimeMillis(); LocalSelectionTransfer.getTransfer().setSelectionSetTime(fStamp); IAction pasteAction = ((AbstractDebugView)getView()).getAction(IDebugView.PASTE_ACTION); - // update the enablement of the paste action - // workaround since the clipboard does not suppot callbacks - if (pasteAction instanceof PasteBreakpointsAction) { - PasteBreakpointsAction pba = (PasteBreakpointsAction) pasteAction; - if (pba.getStructuredSelection() != null) { - pba.selectionChanged(pba.getStructuredSelection()); - } - } + // update the enablement of the paste action + // workaround since the clipboard does not suppot callbacks + if (pasteAction instanceof PasteBreakpointsAction) { + PasteBreakpointsAction pba = (PasteBreakpointsAction) pasteAction; + if (pba.getStructuredSelection() != null) { + pba.selectionChanged(pba.getStructuredSelection()); + } + } } @Override diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/EditBreakpointGroupAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/EditBreakpointGroupAction.java index 4dd706d75..f85c6bd47 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/EditBreakpointGroupAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/EditBreakpointGroupAction.java @@ -38,9 +38,9 @@ public class EditBreakpointGroupAction extends AbstractBreakpointsViewAction { @Override public void run(IAction action) { - IWorkingSetEditWizard editWizard = PlatformUI.getWorkbench().getWorkingSetManager().createWorkingSetEditWizard(fSet); - WizardDialog dialog = new WizardDialog(DebugUIPlugin.getShell(), editWizard); - dialog.open(); + IWorkingSetEditWizard editWizard = PlatformUI.getWorkbench().getWorkingSetManager().createWorkingSetEditWizard(fSet); + WizardDialog dialog = new WizardDialog(DebugUIPlugin.getShell(), editWizard); + dialog.open(); } @Override @@ -49,17 +49,17 @@ public class EditBreakpointGroupAction extends AbstractBreakpointsViewAction { if (sel instanceof IStructuredSelection) { IStructuredSelection selection= (IStructuredSelection) sel; - if (selection.size() == 1) { - Object element = selection.getFirstElement(); + if (selection.size() == 1) { + Object element = selection.getFirstElement(); if (element instanceof IBreakpointContainer) { - IBreakpointContainer container = (IBreakpointContainer)element; - IAdaptable category = container.getCategory(); - if (category instanceof WorkingSetCategory) { - IWorkingSet set = ((WorkingSetCategory)category).getWorkingSet(); - action.setEnabled(true); - fSet = set; - return; - } + IBreakpointContainer container = (IBreakpointContainer)element; + IAdaptable category = container.getCategory(); + if (category instanceof WorkingSetCategory) { + IWorkingSet set = ((WorkingSetCategory)category).getWorkingSet(); + action.setEnabled(true); + fSet = set; + return; + } } } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/GroupBreakpointsAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/GroupBreakpointsAction.java index 4ddc632a2..365efdeb9 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/GroupBreakpointsAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/GroupBreakpointsAction.java @@ -26,39 +26,39 @@ import org.eclipse.jface.action.IAction; */ public class GroupBreakpointsAction extends Action { - private IBreakpointOrganizer fOrganzier; - private BreakpointsView fView; + private IBreakpointOrganizer fOrganzier; + private BreakpointsView fView; - /** - * Creates a new action which will group breakpoints in the given - * breakpoint view using the given breakpoint container factory - * @param factory the factory that will be applied to the given view - * when this action is run - * @param view the breakpoints view - */ - public GroupBreakpointsAction(IBreakpointOrganizer organizer, BreakpointsView view) { - super(IInternalDebugCoreConstants.EMPTY_STRING, IAction.AS_RADIO_BUTTON); - fOrganzier= organizer; - fView= view; - } + /** + * Creates a new action which will group breakpoints in the given + * breakpoint view using the given breakpoint container factory + * @param factory the factory that will be applied to the given view + * when this action is run + * @param view the breakpoints view + */ + public GroupBreakpointsAction(IBreakpointOrganizer organizer, BreakpointsView view) { + super(IInternalDebugCoreConstants.EMPTY_STRING, IAction.AS_RADIO_BUTTON); + fOrganzier= organizer; + fView= view; + } - @Override + @Override public void run() { - if (isChecked()) { - if (fOrganzier == null) { - fView.setBreakpointOrganizers(null); - } else { - fView.setBreakpointOrganizers(new IBreakpointOrganizer[]{fOrganzier}); - } - } - } + if (isChecked()) { + if (fOrganzier == null) { + fView.setBreakpointOrganizers(null); + } else { + fView.setBreakpointOrganizers(new IBreakpointOrganizer[]{fOrganzier}); + } + } + } - /** - * Returns this action's organizer. - * - * @return breakpoint organizer - */ - public IBreakpointOrganizer getOrganizer() { - return fOrganzier; - } + /** + * Returns this action's organizer. + * + * @return breakpoint organizer + */ + public IBreakpointOrganizer getOrganizer() { + return fOrganzier; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/GroupBreakpointsByAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/GroupBreakpointsByAction.java index 524eb1591..cf304ff3a 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/GroupBreakpointsByAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/GroupBreakpointsByAction.java @@ -44,17 +44,17 @@ public class GroupBreakpointsByAction extends AbstractBreakpointsViewAction impl public void run(IAction action) { } - @Override + @Override public void dispose() { - } + } - @Override + @Override public Menu getMenu(Control parent) { - // Never called - return null; - } + // Never called + return null; + } - @Override + @Override public Menu getMenu(Menu parent) { Menu menu = new Menu(parent); menu.addMenuListener(new MenuAdapter() { @@ -69,9 +69,9 @@ public class GroupBreakpointsByAction extends AbstractBreakpointsViewAction impl } }); return menu; - } + } - /** + /** * Fill pull down menu with the "group by" options */ private void fillMenu(Menu menu) { @@ -89,72 +89,72 @@ public class GroupBreakpointsByAction extends AbstractBreakpointsViewAction impl organizer = organizers[0]; } - int accel = 1; - // Add hard-coded action for flat breakpoints list - IAction action = new GroupBreakpointsAction(null, fView); - addAccel(accel, action, BreakpointGroupMessages.GroupBreakpointsByAction_0); - accel++; - action.setImageDescriptor(DebugPluginImages.getImageDescriptor(IDebugUIConstants.IMG_VIEW_BREAKPOINTS)); - action.setChecked(none); - ActionContributionItem item= new ActionContributionItem(action); - item.fill(menu, -1); + int accel = 1; + // Add hard-coded action for flat breakpoints list + IAction action = new GroupBreakpointsAction(null, fView); + addAccel(accel, action, BreakpointGroupMessages.GroupBreakpointsByAction_0); + accel++; + action.setImageDescriptor(DebugPluginImages.getImageDescriptor(IDebugUIConstants.IMG_VIEW_BREAKPOINTS)); + action.setChecked(none); + ActionContributionItem item= new ActionContributionItem(action); + item.fill(menu, -1); // Add actions for each contributed organizer List<IAction> actions = getActions(accel); - accel = accel + actions.size(); + accel = accel + actions.size(); Iterator<IAction> actionIter = actions.iterator(); - while (actionIter.hasNext()) { + while (actionIter.hasNext()) { GroupBreakpointsAction bpAction = (GroupBreakpointsAction) actionIter.next(); bpAction.setChecked(bpAction.getOrganizer().equals(organizer)); item= new ActionContributionItem(bpAction); item.fill(menu, -1); - } + } - // advanced action - AdvancedGroupBreakpointsByAction advancedAction = new AdvancedGroupBreakpointsByAction(fView); - addAccel(accel, advancedAction,BreakpointGroupMessages.GroupBreakpointsByAction_1); - advancedAction.setImageDescriptor(DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_HIERARCHICAL)); - advancedAction.setChecked(advanced); + // advanced action + AdvancedGroupBreakpointsByAction advancedAction = new AdvancedGroupBreakpointsByAction(fView); + addAccel(accel, advancedAction,BreakpointGroupMessages.GroupBreakpointsByAction_1); + advancedAction.setImageDescriptor(DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_HIERARCHICAL)); + advancedAction.setChecked(advanced); item= new ActionContributionItem(advancedAction); item.fill(menu, -1); } public List<IAction> getActions(int accel) { List<IAction> actions = new ArrayList<>(); - IBreakpointOrganizer[] organizers = BreakpointOrganizerManager.getDefault().getOrganizers(); - for (int i = 0; i < organizers.length; i++) { - IBreakpointOrganizer organizer = organizers[i]; - IAction action = new GroupBreakpointsAction(organizer, fView); - addAccel(accel, action, organizer.getLabel()); - accel++; - action.setImageDescriptor(organizer.getImageDescriptor()); - actions.add(action); - } - return actions; - } - - private void addAccel(int accel, IAction action, String label) { - StringBuilder actionLabel= new StringBuilder(); - if (accel != 10) { - if (accel < 10) { - // add the numerical accelerators 1 through 9 - actionLabel.append('&'); - } - actionLabel.append(accel); - } else { - actionLabel.append("1&0"); //$NON-NLS-1$ - } - accel++; - actionLabel.append(' '); - actionLabel.append(label); - action.setText(actionLabel.toString()); - } + IBreakpointOrganizer[] organizers = BreakpointOrganizerManager.getDefault().getOrganizers(); + for (int i = 0; i < organizers.length; i++) { + IBreakpointOrganizer organizer = organizers[i]; + IAction action = new GroupBreakpointsAction(organizer, fView); + addAccel(accel, action, organizer.getLabel()); + accel++; + action.setImageDescriptor(organizer.getImageDescriptor()); + actions.add(action); + } + return actions; + } + + private void addAccel(int accel, IAction action, String label) { + StringBuilder actionLabel= new StringBuilder(); + if (accel != 10) { + if (accel < 10) { + // add the numerical accelerators 1 through 9 + actionLabel.append('&'); + } + actionLabel.append(accel); + } else { + actionLabel.append("1&0"); //$NON-NLS-1$ + } + accel++; + actionLabel.append(' '); + actionLabel.append(label); + action.setText(actionLabel.toString()); + } @Override public void selectionChanged(IAction action, ISelection selection) { - if (action != fAction) { - action.setMenuCreator(this); - fAction= action; - } + if (action != fAction) { + action.setMenuCreator(this); + fAction= action; + } } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/GroupBreakpointsByDialog.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/GroupBreakpointsByDialog.java index 4dcefe773..5635b98fe 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/GroupBreakpointsByDialog.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/GroupBreakpointsByDialog.java @@ -113,7 +113,7 @@ public class GroupBreakpointsByDialog extends TrayDialog { Composite composite= new Composite(parentComposite, SWT.NONE); GridLayout layout = new GridLayout(); layout.numColumns = 3; - composite.setLayout(layout); + composite.setLayout(layout); GridData data= new GridData(GridData.FILL_BOTH); data.heightHint= 400; composite.setLayoutData(data); @@ -123,7 +123,7 @@ public class GroupBreakpointsByDialog extends TrayDialog { label.setText(BreakpointGroupMessages.GroupBreakpointsByDialog_0); GridData gridData = new GridData(GridData.FILL_HORIZONTAL); gridData.horizontalSpan = 3; - label.setLayoutData(gridData); + label.setLayoutData(gridData); createAvailableViewer(composite, labelProvider); createButtons(composite); @@ -152,11 +152,11 @@ public class GroupBreakpointsByDialog extends TrayDialog { fAvailableOrganizersProvider.addAvailable(organizers[i]); } organizers = fView.getBreakpointOrganizers(); - if (organizers != null) { - for (int i = 0; i < organizers.length; i++) { - fSelectedOrganizersProvider.addSelected(organizers[i]); - } - } + if (organizers != null) { + for (int i = 0; i < organizers.length; i++) { + fSelectedOrganizersProvider.addSelected(organizers[i]); + } + } } /** @@ -177,7 +177,7 @@ public class GroupBreakpointsByDialog extends TrayDialog { Label label= new Label(availableComposite, SWT.WRAP); label.setText(BreakpointGroupMessages.GroupBreakpointsByDialog_1); gridData = new GridData(GridData.FILL_HORIZONTAL); - label.setLayoutData(gridData); + label.setLayoutData(gridData); fAvailableViewer= new TableViewer(availableComposite); fAvailableViewer.setContentProvider(fAvailableOrganizersProvider); @@ -220,7 +220,7 @@ public class GroupBreakpointsByDialog extends TrayDialog { label.setText(BreakpointGroupMessages.GroupBreakpointsByDialog_3); gridData = new GridData(); gridData.horizontalSpan = 2; - label.setLayoutData(gridData); + label.setLayoutData(gridData); fSelectedViewer= new TreeViewer(selectedComposite); fSelectedViewer.setContentProvider(fSelectedOrganizersProvider); @@ -230,11 +230,11 @@ public class GroupBreakpointsByDialog extends TrayDialog { tree.setLayoutData(new GridData(GridData.FILL_BOTH)); tree.setFont(parent.getFont()); fSelectedViewer.addDoubleClickListener(new IDoubleClickListener() { - @Override + @Override public void doubleClick(DoubleClickEvent event) { - handleRemovePressed(); - } - }); + handleRemovePressed(); + } + }); fSelectedViewer.addSelectionChangedListener(new ISelectionChangedListener() { @Override public void selectionChanged(SelectionChangedEvent event) { @@ -405,13 +405,13 @@ public class GroupBreakpointsByDialog extends TrayDialog { /** * Content provider that provides the list of breakpoint organaisers - * that are available but not currently selected. + * that are available but not currently selected. */ private class AvailableOrganizersProvider implements IStructuredContentProvider { protected List<IBreakpointOrganizer> availableOrganziers = new ArrayList<>(); public void addAvailable(IBreakpointOrganizer organizer) { - availableOrganziers.add(organizer); + availableOrganziers.add(organizer); fSelectedOrganizersProvider.selectedOrganizers.remove(organizer); } @@ -437,23 +437,23 @@ public class GroupBreakpointsByDialog extends TrayDialog { protected List<Object> selectedOrganizers = new ArrayList<>(); public void addSelected(IBreakpointOrganizer organizer) { - selectedOrganizers.add(organizer); + selectedOrganizers.add(organizer); fAvailableOrganizersProvider.availableOrganziers.remove(organizer); } public void moveUp(Object object) { int index = selectedOrganizers.indexOf(object); if (index > 0) { - selectedOrganizers.remove(object); - selectedOrganizers.add(index - 1, object); + selectedOrganizers.remove(object); + selectedOrganizers.add(index - 1, object); } } public void moveDown(Object object) { int index = selectedOrganizers.indexOf(object); if (index < selectedOrganizers.size() - 1) { - selectedOrganizers.remove(object); - selectedOrganizers.add(index + 1, object); + selectedOrganizers.remove(object); + selectedOrganizers.add(index + 1, object); } } @@ -533,9 +533,9 @@ public class GroupBreakpointsByDialog extends TrayDialog { } } - @Override + @Override protected void configureShell(Shell shell) { - super.configureShell(shell); - shell.setText(BreakpointGroupMessages.GroupBreakpointsByDialog_7); - } + super.configureShell(shell); + shell.setText(BreakpointGroupMessages.GroupBreakpointsByDialog_7); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/PasteBreakpointsAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/PasteBreakpointsAction.java index 8cf07a7de..9a3c0ad82 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/PasteBreakpointsAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/PasteBreakpointsAction.java @@ -33,60 +33,60 @@ import org.eclipse.ui.PlatformUI; */ public class PasteBreakpointsAction extends BreakpointSelectionAction { - /** - * Creates a new action. - * - * @param view the view of this action - */ - public PasteBreakpointsAction(BreakpointsView view) { - super(BreakpointGroupMessages.PasteBreakpointsAction_0, view); - setToolTipText(BreakpointGroupMessages.PasteBreakpointsAction_1); - PlatformUI.getWorkbench().getHelpSystem().setHelp(this, IDebugHelpContextIds.PASTE_BREAKPOINTS_ACTION); - } + /** + * Creates a new action. + * + * @param view the view of this action + */ + public PasteBreakpointsAction(BreakpointsView view) { + super(BreakpointGroupMessages.PasteBreakpointsAction_0, view); + setToolTipText(BreakpointGroupMessages.PasteBreakpointsAction_1); + PlatformUI.getWorkbench().getHelpSystem().setHelp(this, IDebugHelpContextIds.PASTE_BREAKPOINTS_ACTION); + } - /** - * Returns the actual target of the paste action. Returns null - * if no valid target is selected. - * - * @return the actual target of the paste action - */ - private Object getTarget() { + /** + * Returns the actual target of the paste action. Returns null + * if no valid target is selected. + * + * @return the actual target of the paste action + */ + private Object getTarget() { List<?> selectedNonResources = getSelectedNonResources(); - if (selectedNonResources.size() == 1) { - Object target = selectedNonResources.get(0); - if (target instanceof IBreakpointContainer) { - return target; - } - } - return null; - } + if (selectedNonResources.size() == 1) { + Object target = selectedNonResources.get(0); + if (target instanceof IBreakpointContainer) { + return target; + } + } + return null; + } - /** - * Implementation of method defined on <code>IAction</code>. - */ - @Override + /** + * Implementation of method defined on <code>IAction</code>. + */ + @Override public void run() { if (getBreakpointsView().canPaste(getTarget(), LocalSelectionTransfer.getTransfer().getSelection())) { getBreakpointsView().performPaste(getTarget(), LocalSelectionTransfer.getTransfer().getSelection()); } - } + } - /** - * Returns whether this action should be enabled based on the selection - * in the clipboard. Only updates when the breakpoints view has focus. - */ - @Override + /** + * Returns whether this action should be enabled based on the selection + * in the clipboard. Only updates when the breakpoints view has focus. + */ + @Override protected boolean updateSelection(IStructuredSelection selection) { - // can't paste into "Others" (only move) - Object target = getTarget(); - if (target instanceof IBreakpointContainer) { - IBreakpointContainer container = (IBreakpointContainer) target; - if (container.getCategory() instanceof OtherBreakpointCategory) { - return false; - } + // can't paste into "Others" (only move) + Object target = getTarget(); + if (target instanceof IBreakpointContainer) { + IBreakpointContainer container = (IBreakpointContainer) target; + if (container.getCategory() instanceof OtherBreakpointCategory) { + return false; + } return true; - } + } // don't access clipboard - causes Hang -see bug 84870 return false; - } + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/RemoveFromWorkingSetAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/RemoveFromWorkingSetAction.java index 5b39f7701..8f39efebf 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/RemoveFromWorkingSetAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/RemoveFromWorkingSetAction.java @@ -32,88 +32,88 @@ import org.eclipse.jface.viewers.TreePath; */ public class RemoveFromWorkingSetAction extends BreakpointSelectionAction { - private BreakpointSetElement[] fBreakpoints; + private BreakpointSetElement[] fBreakpoints; /** - * Constructs action to remove breakpoints from a category. - * - * @param view - */ - public RemoveFromWorkingSetAction(BreakpointsView view) { - super(BreakpointGroupMessages.RemoveFromWorkingSetAction_0, view); - } - - @Override + * Constructs action to remove breakpoints from a category. + * + * @param view + */ + public RemoveFromWorkingSetAction(BreakpointsView view) { + super(BreakpointGroupMessages.RemoveFromWorkingSetAction_0, view); + } + + @Override public void run() { - if (fBreakpoints != null) { - for (int i = 0; i < fBreakpoints.length; i++) { - fBreakpoints[i].container.getOrganizer().removeBreakpoint(fBreakpoints[i].breakpoint, fBreakpoints[i].container.getCategory()); - } - } - } - - protected static class BreakpointSetElement { - BreakpointSetElement(IBreakpoint b, IBreakpointContainer c) { breakpoint = b; container = c; } - IBreakpoint breakpoint; - IBreakpointContainer container; - } - - /** - * Returns a array of breakpoint/container pairs for the selection - * - * All the returned elements contain a breakpoint and a working set container the breakpoint is contained and the breakpoint - * can be removed from. - * - * @param selection - * @return - */ - protected BreakpointSetElement[] getRemovableBreakpoints(IStructuredSelection selection) { + if (fBreakpoints != null) { + for (int i = 0; i < fBreakpoints.length; i++) { + fBreakpoints[i].container.getOrganizer().removeBreakpoint(fBreakpoints[i].breakpoint, fBreakpoints[i].container.getCategory()); + } + } + } + + protected static class BreakpointSetElement { + BreakpointSetElement(IBreakpoint b, IBreakpointContainer c) { breakpoint = b; container = c; } + IBreakpoint breakpoint; + IBreakpointContainer container; + } + + /** + * Returns a array of breakpoint/container pairs for the selection + * + * All the returned elements contain a breakpoint and a working set container the breakpoint is contained and the breakpoint + * can be removed from. + * + * @param selection + * @return + */ + protected BreakpointSetElement[] getRemovableBreakpoints(IStructuredSelection selection) { List<BreakpointSetElement> res = new ArrayList<>(); - if (selection instanceof ITreeSelection) { - ITreeSelection tSel = (ITreeSelection)selection; - - TreePath[] paths = tSel.getPaths(); - for (int i = 0; i < paths.length; i++) { - TreePath path = paths[i]; - - // We can remove Breakpoints from their working set if any of their parents is a non "Other" breakpoint working set - IBreakpoint breakpoint = (IBreakpoint)DebugPlugin.getAdapter(path.getLastSegment(), IBreakpoint.class); - if (breakpoint != null) { - TreePath parents = path.getParentPath(); - - for (int j = 0; j < parents.getSegmentCount(); j++) { - Object parent = parents.getSegment(j); - - if (parent instanceof IBreakpointContainer) { - IBreakpointContainer container = (IBreakpointContainer)parent; - - // Test if this is a working set container. - if (container.getCategory() instanceof WorkingSetCategory) { - // Test if this container allows to remove this breakpoint. - if (container.getOrganizer().canRemove(breakpoint, container.getCategory())) { - res.add(new BreakpointSetElement(breakpoint, container)); - } - } - } - } - } - } - } - return res.toArray(new BreakpointSetElement[res.size()]); - } - - @Override + if (selection instanceof ITreeSelection) { + ITreeSelection tSel = (ITreeSelection)selection; + + TreePath[] paths = tSel.getPaths(); + for (int i = 0; i < paths.length; i++) { + TreePath path = paths[i]; + + // We can remove Breakpoints from their working set if any of their parents is a non "Other" breakpoint working set + IBreakpoint breakpoint = (IBreakpoint)DebugPlugin.getAdapter(path.getLastSegment(), IBreakpoint.class); + if (breakpoint != null) { + TreePath parents = path.getParentPath(); + + for (int j = 0; j < parents.getSegmentCount(); j++) { + Object parent = parents.getSegment(j); + + if (parent instanceof IBreakpointContainer) { + IBreakpointContainer container = (IBreakpointContainer)parent; + + // Test if this is a working set container. + if (container.getCategory() instanceof WorkingSetCategory) { + // Test if this container allows to remove this breakpoint. + if (container.getOrganizer().canRemove(breakpoint, container.getCategory())) { + res.add(new BreakpointSetElement(breakpoint, container)); + } + } + } + } + } + } + } + return res.toArray(new BreakpointSetElement[res.size()]); + } + + @Override public boolean isEnabled() { - if(fBreakpoints != null) { - return fBreakpoints.length > 0; - } - return false; - } + if(fBreakpoints != null) { + return fBreakpoints.length > 0; + } + return false; + } - @Override + @Override protected boolean updateSelection(IStructuredSelection selection) { - fBreakpoints = getRemovableBreakpoints(selection); - return fBreakpoints.length > 0; - } + fBreakpoints = getRemovableBreakpoints(selection); + return fBreakpoints.length > 0; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/SetDefaultBreakpointGroupAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/SetDefaultBreakpointGroupAction.java index 6b7936e6b..344700d66 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/SetDefaultBreakpointGroupAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/SetDefaultBreakpointGroupAction.java @@ -25,20 +25,20 @@ import org.eclipse.ui.IWorkingSet; */ public class SetDefaultBreakpointGroupAction extends AbstractBreakpointsViewAction { - @Override + @Override public void run(IAction action) { - SelectBreakpointWorkingsetDialog sbwsd = new SelectBreakpointWorkingsetDialog(DebugUIPlugin.getShell()); - sbwsd.setTitle(BreakpointGroupMessages.SetDefaultBreakpointGroupAction_0); - IWorkingSet workingSet = BreakpointSetOrganizer.getDefaultWorkingSet(); - if (workingSet != null){ - sbwsd.setInitialSelections(new Object[]{workingSet}); - } - if(sbwsd.open() == Window.OK) { - BreakpointSetOrganizer.setDefaultWorkingSet((IWorkingSet) sbwsd.getResult()[0]); - } - } + SelectBreakpointWorkingsetDialog sbwsd = new SelectBreakpointWorkingsetDialog(DebugUIPlugin.getShell()); + sbwsd.setTitle(BreakpointGroupMessages.SetDefaultBreakpointGroupAction_0); + IWorkingSet workingSet = BreakpointSetOrganizer.getDefaultWorkingSet(); + if (workingSet != null){ + sbwsd.setInitialSelections(new Object[]{workingSet}); + } + if(sbwsd.open() == Window.OK) { + BreakpointSetOrganizer.setDefaultWorkingSet((IWorkingSet) sbwsd.getResult()[0]); + } + } - @Override + @Override public void selectionChanged(IAction action, ISelection selection) {} } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/ToggleDefaultGroupAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/ToggleDefaultGroupAction.java index 3f9df0015..4d406d6b3 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/ToggleDefaultGroupAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/ToggleDefaultGroupAction.java @@ -27,42 +27,42 @@ import org.eclipse.ui.IWorkingSet; */ public class ToggleDefaultGroupAction extends AbstractBreakpointsViewAction { - private IWorkingSet fSelectedSet; + private IWorkingSet fSelectedSet; - @Override + @Override public void run(IAction action) { - IWorkingSet defaultWorkingSet = BreakpointSetOrganizer.getDefaultWorkingSet(); - IWorkingSet set = null; - if (!fSelectedSet.equals(defaultWorkingSet)) { - set = fSelectedSet; - } - BreakpointSetOrganizer.setDefaultWorkingSet(set); - } + IWorkingSet defaultWorkingSet = BreakpointSetOrganizer.getDefaultWorkingSet(); + IWorkingSet set = null; + if (!fSelectedSet.equals(defaultWorkingSet)) { + set = fSelectedSet; + } + BreakpointSetOrganizer.setDefaultWorkingSet(set); + } - @Override + @Override public void selectionChanged(IAction action, ISelection sel) { - fSelectedSet = null; - if (sel instanceof IStructuredSelection) { - IStructuredSelection selection = (IStructuredSelection) sel; - if (selection.size() == 1) { - Object firstElement = selection.getFirstElement(); - if (firstElement instanceof IBreakpointContainer) { - IBreakpointContainer container = (IBreakpointContainer) firstElement; - if (container.getCategory() instanceof WorkingSetCategory) { - WorkingSetCategory category = (WorkingSetCategory)container.getCategory(); - if (IDebugUIConstants.BREAKPOINT_WORKINGSET_ID.equals(category.getWorkingSet().getId())) { - IWorkingSet set = category.getWorkingSet(); - action.setEnabled(true); - boolean isDefault = set == BreakpointSetOrganizer.getDefaultWorkingSet(); - action.setChecked(isDefault); - fSelectedSet = set; - return; - } - } - } - } - } - action.setEnabled(false); - action.setChecked(false); - } + fSelectedSet = null; + if (sel instanceof IStructuredSelection) { + IStructuredSelection selection = (IStructuredSelection) sel; + if (selection.size() == 1) { + Object firstElement = selection.getFirstElement(); + if (firstElement instanceof IBreakpointContainer) { + IBreakpointContainer container = (IBreakpointContainer) firstElement; + if (container.getCategory() instanceof WorkingSetCategory) { + WorkingSetCategory category = (WorkingSetCategory)container.getCategory(); + if (IDebugUIConstants.BREAKPOINT_WORKINGSET_ID.equals(category.getWorkingSet().getId())) { + IWorkingSet set = category.getWorkingSet(); + action.setEnabled(true); + boolean isDefault = set == BreakpointSetOrganizer.getDefaultWorkingSet(); + action.setChecked(isDefault); + fSelectedSet = set; + return; + } + } + } + } + } + action.setEnabled(false); + action.setChecked(false); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/WorkingSetsAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/WorkingSetsAction.java index cbeab4594..be3df6af9 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/WorkingSetsAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/WorkingSetsAction.java @@ -24,12 +24,12 @@ import org.eclipse.ui.dialogs.IWorkingSetSelectionDialog; */ public class WorkingSetsAction extends AbstractBreakpointsViewAction { - @Override + @Override public void run(IAction action) { - IWorkingSetSelectionDialog selectionDialog = PlatformUI.getWorkbench().getWorkingSetManager().createWorkingSetSelectionDialog( - DebugUIPlugin.getShell(), - false, - new String[] {IDebugUIConstants.BREAKPOINT_WORKINGSET_ID}); - selectionDialog.open(); - } + IWorkingSetSelectionDialog selectionDialog = PlatformUI.getWorkbench().getWorkingSetManager().createWorkingSetSelectionDialog( + DebugUIPlugin.getShell(), + false, + new String[] {IDebugUIConstants.BREAKPOINT_WORKINGSET_ID}); + selectionDialog.open(); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointSortBy/SortBreakpointsByAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointSortBy/SortBreakpointsByAction.java index e98aa12a0..c1c8d1965 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointSortBy/SortBreakpointsByAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointSortBy/SortBreakpointsByAction.java @@ -40,17 +40,17 @@ public class SortBreakpointsByAction extends AbstractBreakpointsViewAction imple public void run(IAction action) { } - @Override + @Override public void dispose() { - } + } - @Override + @Override public Menu getMenu(Control parent) { - // Never called - return null; - } + // Never called + return null; + } - @Override + @Override public Menu getMenu(Menu parent) { Menu menu = new Menu(parent); menu.addMenuListener(new MenuAdapter() { @@ -65,9 +65,9 @@ public class SortBreakpointsByAction extends AbstractBreakpointsViewAction imple } }); return menu; - } + } - /** + /** * Fill pull down menu with the "group by" options */ private void fillMenu(Menu menu) { @@ -86,9 +86,9 @@ public class SortBreakpointsByAction extends AbstractBreakpointsViewAction imple @Override public void selectionChanged(IAction action, ISelection selection) { - if (action != fAction) { - action.setMenuCreator(this); - fAction= action; - } + if (action != fAction) { + action.setMenuCreator(this); + fAction= action; + } } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/AccessWatchpointToggleAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/AccessWatchpointToggleAction.java index b83810354..186e8ae09 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/AccessWatchpointToggleAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/AccessWatchpointToggleAction.java @@ -21,23 +21,23 @@ import org.eclipse.debug.core.model.IWatchpoint; */ public class AccessWatchpointToggleAction extends ModifyWatchpointAction { - @Override + @Override protected boolean isEnabled(IWatchpoint watchpoint) { - return watchpoint.supportsAccess(); - } + return watchpoint.supportsAccess(); + } - @Override + @Override protected void toggleWatchpoint(IWatchpoint watchpoint, boolean b) throws CoreException { - watchpoint.setAccess(b); - } + watchpoint.setAccess(b); + } - @Override + @Override protected boolean isChecked(IWatchpoint watchpoint) { - try { - return watchpoint.isAccess(); - } catch (CoreException e) { - } - return false; - } + try { + return watchpoint.isAccess(); + } catch (CoreException e) { + } + return false; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/BreakpointsCollapseAllAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/BreakpointsCollapseAllAction.java index 094a8634c..5727490ad 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/BreakpointsCollapseAllAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/BreakpointsCollapseAllAction.java @@ -44,11 +44,11 @@ public class BreakpointsCollapseAllAction implements IViewActionDelegate, IActio @Override public void init(IViewPart view) { fView = (AbstractDebugView) view; - IInternalTreeModelViewer viewer = (IInternalTreeModelViewer)fView.getViewer(); - if (viewer != null) { - viewer.addViewerUpdateListener(this); - viewer.addModelChangedListener(this); - } + IInternalTreeModelViewer viewer = (IInternalTreeModelViewer)fView.getViewer(); + if (viewer != null) { + viewer.addViewerUpdateListener(this); + viewer.addModelChangedListener(this); + } } @Override @@ -62,11 +62,11 @@ public class BreakpointsCollapseAllAction implements IViewActionDelegate, IActio @Override public void dispose() { - ITreeModelViewer viewer = (ITreeModelViewer)fView.getViewer(); - if (viewer != null) { - viewer.removeViewerUpdateListener(this); - viewer.removeModelChangedListener(this); - } + ITreeModelViewer viewer = (ITreeModelViewer)fView.getViewer(); + if (viewer != null) { + viewer.removeViewerUpdateListener(this); + viewer.removeModelChangedListener(this); + } } @Override @@ -80,36 +80,36 @@ public class BreakpointsCollapseAllAction implements IViewActionDelegate, IActio run(action); } - @Override + @Override public void viewerUpdatesBegin() { - } + } - @Override + @Override public void viewerUpdatesComplete() { - } + } - @Override + @Override public void updateStarted(IViewerUpdate update) { - } + } - @Override + @Override public void updateComplete(IViewerUpdate update) { - if (!update.isCanceled()) { - if (TreePath.EMPTY.equals(update.getElementPath())) { - update(); - } - } - } - - private void update() { - IInternalTreeModelViewer viewer = (IInternalTreeModelViewer)fView.getViewer(); - if (viewer != null && fAction != null) { - fAction.setEnabled(viewer.getInput() != null && viewer.getChildCount(TreePath.EMPTY) > 0); - } - } - - @Override + if (!update.isCanceled()) { + if (TreePath.EMPTY.equals(update.getElementPath())) { + update(); + } + } + } + + private void update() { + IInternalTreeModelViewer viewer = (IInternalTreeModelViewer)fView.getViewer(); + if (viewer != null && fAction != null) { + fAction.setEnabled(viewer.getInput() != null && viewer.getChildCount(TreePath.EMPTY) > 0); + } + } + + @Override public void modelChanged(IModelDelta delta, IModelProxy proxy) { - update(); - } + update(); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/BreakpointsExpandAllAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/BreakpointsExpandAllAction.java index 849bd741a..3792bb28d 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/BreakpointsExpandAllAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/BreakpointsExpandAllAction.java @@ -35,32 +35,32 @@ import org.eclipse.ui.IViewPart; */ public class BreakpointsExpandAllAction implements IViewActionDelegate, IActionDelegate2, IViewerUpdateListener, IModelChangedListener { - private IAction fAction; + private IAction fAction; private BreakpointsView fView; - @Override + @Override public void init(IAction action) { - fAction = action; - } + fAction = action; + } @Override public void init(IViewPart view) { fView = (BreakpointsView) view; IInternalTreeModelViewer viewer = (IInternalTreeModelViewer)fView.getViewer(); if (viewer != null) { - viewer.addViewerUpdateListener(this); - viewer.addModelChangedListener(this); + viewer.addViewerUpdateListener(this); + viewer.addModelChangedListener(this); } } - @Override + @Override public void runWithEvent(IAction action, Event event) { - run(action); - } + run(action); + } @Override public void run(IAction action) { - fView.expandAllElementsInViewer(); + fView.expandAllElementsInViewer(); } @Override @@ -68,45 +68,45 @@ public class BreakpointsExpandAllAction implements IViewActionDelegate, IActionD } - @Override + @Override public void dispose() { - ITreeModelViewer viewer = (ITreeModelViewer)fView.getViewer(); - if (viewer != null) { - viewer.removeViewerUpdateListener(this); - viewer.removeModelChangedListener(this); - } - } - - @Override + ITreeModelViewer viewer = (ITreeModelViewer)fView.getViewer(); + if (viewer != null) { + viewer.removeViewerUpdateListener(this); + viewer.removeModelChangedListener(this); + } + } + + @Override public void viewerUpdatesBegin() { - } + } - @Override + @Override public void viewerUpdatesComplete() { - } + } - @Override + @Override public void updateStarted(IViewerUpdate update) { - } + } - @Override + @Override public void updateComplete(IViewerUpdate update) { - if (!update.isCanceled()) { - if (TreePath.EMPTY.equals(update.getElementPath())) { - update(); - } - } - } - - private void update() { - IInternalTreeModelViewer viewer = (IInternalTreeModelViewer)fView.getViewer(); - if (viewer != null && fAction != null) { - fAction.setEnabled(viewer.getInput() != null && viewer.getChildCount(TreePath.EMPTY) > 0); - } - } - - @Override + if (!update.isCanceled()) { + if (TreePath.EMPTY.equals(update.getElementPath())) { + update(); + } + } + } + + private void update() { + IInternalTreeModelViewer viewer = (IInternalTreeModelViewer)fView.getViewer(); + if (viewer != null && fAction != null) { + fAction.setEnabled(viewer.getInput() != null && viewer.getChildCount(TreePath.EMPTY) > 0); + } + } + + @Override public void modelChanged(IModelDelta delta, IModelProxy proxy) { - update(); - } + update(); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/EnableBreakpointsAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/EnableBreakpointsAction.java index dfb5c959d..1d7fbfe49 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/EnableBreakpointsAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/EnableBreakpointsAction.java @@ -150,20 +150,20 @@ public class EnableBreakpointsAction implements IViewActionDelegate, IPartListen boolean allDisabled= true; while (itr.hasNext()) { Object selected= itr.next(); - IBreakpoint bp = (IBreakpoint)DebugPlugin.getAdapter(selected, IBreakpoint.class); - - if (bp != null) { - try { - if (bp.isEnabled()) { - allDisabled= false; - } else { - allEnabled= false; - } - } catch (CoreException ce) { - handleException(ce); - } - } - else if (selected instanceof IBreakpointContainer) { + IBreakpoint bp = (IBreakpoint)DebugPlugin.getAdapter(selected, IBreakpoint.class); + + if (bp != null) { + try { + if (bp.isEnabled()) { + allDisabled= false; + } else { + allEnabled= false; + } + } catch (CoreException ce) { + handleException(ce); + } + } + else if (selected instanceof IBreakpointContainer) { IBreakpoint[] breakpoints = ((IBreakpointContainer) selected).getBreakpoints(); for (int i = 0; i < breakpoints.length; i++) { try { diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/ModificationWatchpointToggleAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/ModificationWatchpointToggleAction.java index f5289d267..e179cbc3e 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/ModificationWatchpointToggleAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/ModificationWatchpointToggleAction.java @@ -21,23 +21,23 @@ import org.eclipse.debug.core.model.IWatchpoint; */ public class ModificationWatchpointToggleAction extends ModifyWatchpointAction { - @Override + @Override protected boolean isEnabled(IWatchpoint watchpoint) { - return watchpoint.supportsModification(); - } + return watchpoint.supportsModification(); + } - @Override + @Override protected void toggleWatchpoint(IWatchpoint watchpoint, boolean b) throws CoreException { - watchpoint.setModification(b); - } + watchpoint.setModification(b); + } - @Override + @Override protected boolean isChecked(IWatchpoint watchpoint) { - try { - return watchpoint.isModification(); - } catch (CoreException e) { - } - return false; - } + try { + return watchpoint.isModification(); + } catch (CoreException e) { + } + return false; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/ModifyWatchpointAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/ModifyWatchpointAction.java index 505a62454..096fde496 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/ModifyWatchpointAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/ModifyWatchpointAction.java @@ -32,88 +32,88 @@ import org.eclipse.ui.IWorkbenchPart; */ public abstract class ModifyWatchpointAction implements IObjectActionDelegate, IActionDelegate2 { - private IStructuredSelection fWatchpoints = null; + private IStructuredSelection fWatchpoints = null; - @Override + @Override public void run(IAction action) { - try { - if (fWatchpoints != null) { + try { + if (fWatchpoints != null) { Iterator<?> iterator = fWatchpoints.iterator(); - while (iterator.hasNext()) { - IWatchpoint watchpoint = (IWatchpoint)iterator.next(); - toggleWatchpoint(watchpoint, action.isChecked()); - } - } - } catch (CoreException e) { - DebugUIPlugin.errorDialog(DebugUIPlugin.getShell(), ActionMessages.ModifyWatchpointAction_0, ActionMessages.ModifyWatchpointAction_1, e.getStatus()); // - } + while (iterator.hasNext()) { + IWatchpoint watchpoint = (IWatchpoint)iterator.next(); + toggleWatchpoint(watchpoint, action.isChecked()); + } + } + } catch (CoreException e) { + DebugUIPlugin.errorDialog(DebugUIPlugin.getShell(), ActionMessages.ModifyWatchpointAction_0, ActionMessages.ModifyWatchpointAction_1, e.getStatus()); // + } - } + } - /** - * Toggles the watch point attribute to the given value. - * - * @param watchpoint the watchpoint to toggle - * @param b on or off - * @throws CoreException if an exception occurs - */ - protected abstract void toggleWatchpoint(IWatchpoint watchpoint, boolean b) throws CoreException; + /** + * Toggles the watch point attribute to the given value. + * + * @param watchpoint the watchpoint to toggle + * @param b on or off + * @throws CoreException if an exception occurs + */ + protected abstract void toggleWatchpoint(IWatchpoint watchpoint, boolean b) throws CoreException; - @Override + @Override public void setActivePart(IAction action, IWorkbenchPart targetPart) { - } + } - @Override + @Override public void selectionChanged(IAction action, ISelection selection) { - if (selection instanceof IStructuredSelection) { - fWatchpoints = (IStructuredSelection) selection; - if (!selection.isEmpty()) { + if (selection instanceof IStructuredSelection) { + fWatchpoints = (IStructuredSelection) selection; + if (!selection.isEmpty()) { Iterator<?> iterator = fWatchpoints.iterator(); - while (iterator.hasNext()) { - Object next = iterator.next(); - if (next instanceof IWatchpoint) { - IWatchpoint watchpoint = (IWatchpoint) next; - action.setChecked(isChecked(watchpoint)); - if (!isEnabled(watchpoint)) { - action.setEnabled(false); - return; - } - } - } - action.setEnabled(true); - return; - } - } - action.setEnabled(false); - } + while (iterator.hasNext()) { + Object next = iterator.next(); + if (next instanceof IWatchpoint) { + IWatchpoint watchpoint = (IWatchpoint) next; + action.setChecked(isChecked(watchpoint)); + if (!isEnabled(watchpoint)) { + action.setEnabled(false); + return; + } + } + } + action.setEnabled(true); + return; + } + } + action.setEnabled(false); + } - /** - * Returns whether the action should be checke for the current selection - * - * @param watchpoint selected watchpoint - * @return whether the action should be checked for the current selection - */ - protected abstract boolean isChecked(IWatchpoint watchpoint); + /** + * Returns whether the action should be checke for the current selection + * + * @param watchpoint selected watchpoint + * @return whether the action should be checked for the current selection + */ + protected abstract boolean isChecked(IWatchpoint watchpoint); - /** - * Returns whether this action is enabled for the given watchpoint. - * - * @param watchpoint the watchpoint to examine - * @return whether this action is enabled for the given watchpoint - */ - protected abstract boolean isEnabled(IWatchpoint watchpoint); + /** + * Returns whether this action is enabled for the given watchpoint. + * + * @param watchpoint the watchpoint to examine + * @return whether this action is enabled for the given watchpoint + */ + protected abstract boolean isEnabled(IWatchpoint watchpoint); - @Override + @Override public void init(IAction action) { - } + } - @Override + @Override public void dispose() { - fWatchpoints = null; - } + fWatchpoints = null; + } - @Override + @Override public void runWithEvent(IAction action, Event event) { - run(action); - } + run(action); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/OpenBreakpointMarkerAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/OpenBreakpointMarkerAction.java index da7c25c57..aebb39bfd 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/OpenBreakpointMarkerAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/OpenBreakpointMarkerAction.java @@ -69,13 +69,13 @@ public class OpenBreakpointMarkerAction extends SelectionProviderAction { IEditorPart part= null; if (input != null) { String editorId = fgPresentation.getEditorId(input, breakpoint); - if (editorId != null) { - try { - part= page.openEditor(input, editorId, true, IWorkbenchPage.MATCH_INPUT | IWorkbenchPage.MATCH_ID); - } catch (PartInitException e) { - DebugUIPlugin.errorDialog(dwindow.getShell(), ActionMessages.OpenBreakpointMarkerAction_Go_to_Breakpoint_1, ActionMessages.OpenBreakpointMarkerAction_Exceptions_occurred_attempting_to_open_the_editor_for_the_breakpoint_resource_2, e); // - } - } + if (editorId != null) { + try { + part= page.openEditor(input, editorId, true, IWorkbenchPage.MATCH_INPUT | IWorkbenchPage.MATCH_ID); + } catch (PartInitException e) { + DebugUIPlugin.errorDialog(dwindow.getShell(), ActionMessages.OpenBreakpointMarkerAction_Go_to_Breakpoint_1, ActionMessages.OpenBreakpointMarkerAction_Exceptions_occurred_attempting_to_open_the_editor_for_the_breakpoint_resource_2, e); // + } + } } if (part != null) { IDE.gotoMarker(part, breakpoint.getMarker()); @@ -85,7 +85,7 @@ public class OpenBreakpointMarkerAction extends SelectionProviderAction { @Override public void selectionChanged(IStructuredSelection sel) { if (sel.size() == 1) { - breakpoint = (IBreakpoint)DebugPlugin.getAdapter(sel.getFirstElement(), IBreakpoint.class); + breakpoint = (IBreakpoint)DebugPlugin.getAdapter(sel.getFirstElement(), IBreakpoint.class); if (breakpoint != null) { input= fgPresentation.getEditorInput(breakpoint); if (input != null) { diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/RemoveBreakpointAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/RemoveBreakpointAction.java index 7195fd293..83d7618eb 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/RemoveBreakpointAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/RemoveBreakpointAction.java @@ -117,10 +117,10 @@ public class RemoveBreakpointAction extends AbstractSelectionActionDelegate { } } if(deleteAll) { - IBreakpoint[] breakpoints = bpc.getBreakpoints(); - for (int i = 0; i < breakpoints.length; i++) { - breakpointsToDelete.add(breakpoints[i]); - } + IBreakpoint[] breakpoints = bpc.getBreakpoints(); + for (int i = 0; i < breakpoints.length; i++) { + breakpointsToDelete.add(breakpoints[i]); + } } } } @@ -130,22 +130,22 @@ public class RemoveBreakpointAction extends AbstractSelectionActionDelegate { ((BreakpointsView)getView()).preserveSelection(getSelection()); } new Job(ActionMessages.RemoveBreakpointAction_2) { - @Override + @Override protected IStatus run(IProgressMonitor pmonitor) { - try { + try { Shell shell= getView() != null ? getView().getSite().getShell() : null; DebugUITools.deleteBreakpoints(breakpoints, shell, pmonitor); - for (int i = 0; i < sets.length; i++) { - PlatformUI.getWorkbench().getWorkingSetManager().removeWorkingSet(sets[i]); + for (int i = 0; i < sets.length; i++) { + PlatformUI.getWorkbench().getWorkingSetManager().removeWorkingSet(sets[i]); } - return Status.OK_STATUS; - } catch (CoreException e) { - DebugUIPlugin.log(e); - } - return Status.CANCEL_STATUS; - } - }.schedule(); + return Status.OK_STATUS; + } catch (CoreException e) { + DebugUIPlugin.log(e); + } + return Status.CANCEL_STATUS; + } + }.schedule(); } }; try { diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/RetargetBreakpointAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/RetargetBreakpointAction.java index bbae8ce4a..ca09ef775 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/RetargetBreakpointAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/RetargetBreakpointAction.java @@ -34,61 +34,61 @@ import org.eclipse.ui.IWorkbenchWindow; */ public abstract class RetargetBreakpointAction extends RetargetAction implements IToggleBreakpointsTargetManagerListener { - private IAction fAction; + private IAction fAction; @Override protected Class<?> getAdapterClass() { return IToggleBreakpointsTarget.class; } - @Override + @Override protected Object getAdapter(IAdaptable adaptable) { - IToggleBreakpointsTargetManager manager = DebugUITools.getToggleBreakpointsTargetManager(); + IToggleBreakpointsTargetManager manager = DebugUITools.getToggleBreakpointsTargetManager(); IWorkbenchPart activePart = getActivePart(); - if (activePart != null) { + if (activePart != null) { return manager.getToggleBreakpointsTarget(activePart, getTargetSelection()); - } - return null; - } + } + return null; + } - @Override + @Override public void init(IWorkbenchWindow window) { - super.init(window); - DebugUITools.getToggleBreakpointsTargetManager().addChangedListener(this); - } + super.init(window); + DebugUITools.getToggleBreakpointsTargetManager().addChangedListener(this); + } - @Override + @Override public void init(IAction action) { - super.init(action); - DebugUITools.getToggleBreakpointsTargetManager().addChangedListener(this); - } + super.init(action); + DebugUITools.getToggleBreakpointsTargetManager().addChangedListener(this); + } - @Override + @Override public void dispose() { - DebugUITools.getToggleBreakpointsTargetManager().removeChangedListener(this); - super.dispose(); - } + DebugUITools.getToggleBreakpointsTargetManager().removeChangedListener(this); + super.dispose(); + } - @Override + @Override public void selectionChanged(IAction action, ISelection selection) { - fAction = action; - super.selectionChanged(action, selection); - } + fAction = action; + super.selectionChanged(action, selection); + } - @Override + @Override public void preferredTargetsChanged() { - if (fAction != null) { - IWorkbenchPart activePart = getActivePart(); - if (activePart != null) { - ISelectionProvider provider = activePart.getSite().getSelectionProvider(); - if (provider != null) { - ISelection selection = provider.getSelection(); - // Force the toggle target to be refreshed. - super.clearPart(activePart); - super.partActivated(activePart); - super.selectionChanged(fAction, selection); - } - } - } - } + if (fAction != null) { + IWorkbenchPart activePart = getActivePart(); + if (activePart != null) { + ISelectionProvider provider = activePart.getSite().getSelectionProvider(); + if (provider != null) { + ISelection selection = provider.getSelection(); + // Force the toggle target to be refreshed. + super.clearPart(activePart); + super.partActivated(activePart); + super.selectionChanged(fAction, selection); + } + } + } + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/ToggleBreakpointObjectActionDelegate.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/ToggleBreakpointObjectActionDelegate.java index fc38a2b7c..f3b5d2822 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/ToggleBreakpointObjectActionDelegate.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/ToggleBreakpointObjectActionDelegate.java @@ -47,7 +47,7 @@ public abstract class ToggleBreakpointObjectActionDelegate implements IObjectAct @Override public void run(IAction action) { IToggleBreakpointsTarget target = - DebugUITools.getToggleBreakpointsTargetManager().getToggleBreakpointsTarget(fPart, fSelection); + DebugUITools.getToggleBreakpointsTargetManager().getToggleBreakpointsTarget(fPart, fSelection); if (target != null) { try { performAction(target, fPart, fSelection); @@ -76,9 +76,9 @@ public abstract class ToggleBreakpointObjectActionDelegate implements IObjectAct // selectionChagned() can sometimes be called before setActivePart(). // Guard here against that possibility. if (fPart != null) { - IToggleBreakpointsTarget target = - DebugUITools.getToggleBreakpointsTargetManager().getToggleBreakpointsTarget(fPart, fSelection); - enabled = target != null; + IToggleBreakpointsTarget target = + DebugUITools.getToggleBreakpointsTargetManager().getToggleBreakpointsTarget(fPart, fSelection); + enabled = target != null; } } action.setEnabled(enabled); diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/expressions/EditWatchExpressinInPlaceAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/expressions/EditWatchExpressinInPlaceAction.java index 76897c4f1..551ba9223 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/expressions/EditWatchExpressinInPlaceAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/expressions/EditWatchExpressinInPlaceAction.java @@ -30,60 +30,60 @@ import org.eclipse.jface.viewers.SelectionChangedEvent; */ public class EditWatchExpressinInPlaceAction extends Action implements ISelectionChangedListener { - private ExpressionView fView; - private TreeModelViewer fViewer; - private EditWatchExpressionAction fEditActionDelegate = new EditWatchExpressionAction(); + private ExpressionView fView; + private TreeModelViewer fViewer; + private EditWatchExpressionAction fEditActionDelegate = new EditWatchExpressionAction(); - public EditWatchExpressinInPlaceAction(ExpressionView view) { - fView = view; - fViewer = (TreeModelViewer)view.getViewer(); - fEditActionDelegate.init(view); - ISelectionProvider selectionProvider = fView.getSite().getSelectionProvider(); - selectionProvider.addSelectionChangedListener(this); - fEditActionDelegate.selectionChanged(this, selectionProvider.getSelection()); - } + public EditWatchExpressinInPlaceAction(ExpressionView view) { + fView = view; + fViewer = (TreeModelViewer)view.getViewer(); + fEditActionDelegate.init(view); + ISelectionProvider selectionProvider = fView.getSite().getSelectionProvider(); + selectionProvider.addSelectionChangedListener(this); + fEditActionDelegate.selectionChanged(this, selectionProvider.getSelection()); + } - @Override + @Override public void selectionChanged(SelectionChangedEvent event) { - IStructuredSelection selection = fEditActionDelegate.getCurrentSelection(); - setEnabled(selection != null && selection.size() == 1); - } + IStructuredSelection selection = fEditActionDelegate.getCurrentSelection(); + setEnabled(selection != null && selection.size() == 1); + } - public void dispose() { - fView.getSite().getSelectionProvider().removeSelectionChangedListener(this); - } + public void dispose() { + fView.getSite().getSelectionProvider().removeSelectionChangedListener(this); + } - @Override + @Override public void run() { - IStructuredSelection selelection = fEditActionDelegate.getCurrentSelection(); + IStructuredSelection selelection = fEditActionDelegate.getCurrentSelection(); - if (selelection.size() != 1) { - return; - } + if (selelection.size() != 1) { + return; + } - // Always edit multi-line expressions in dialog. Otherwise try to find the expression - // column and activate cell editor there. - int expressionColumn = getExpressionColumnIndex(); - IWatchExpression[] expressions = fEditActionDelegate.getSelectedExpressions(); - if (expressionColumn != -1 && !isWatchExpressionWithNewLine(expressions)) { - fViewer.editElement(selelection.getFirstElement(), expressionColumn); - } else if (expressions.length == 1) { - fEditActionDelegate.run(this); - } - } + // Always edit multi-line expressions in dialog. Otherwise try to find the expression + // column and activate cell editor there. + int expressionColumn = getExpressionColumnIndex(); + IWatchExpression[] expressions = fEditActionDelegate.getSelectedExpressions(); + if (expressionColumn != -1 && !isWatchExpressionWithNewLine(expressions)) { + fViewer.editElement(selelection.getFirstElement(), expressionColumn); + } else if (expressions.length == 1) { + fEditActionDelegate.run(this); + } + } - private boolean isWatchExpressionWithNewLine(IWatchExpression[] expressions) { - return expressions.length == 1 && - expressions[0].getExpressionText().indexOf('\n') != -1; - } + private boolean isWatchExpressionWithNewLine(IWatchExpression[] expressions) { + return expressions.length == 1 && + expressions[0].getExpressionText().indexOf('\n') != -1; + } - private int getExpressionColumnIndex() { - Object[] columnProperties = fViewer.getColumnProperties(); - for (int i = 0; columnProperties != null && i < columnProperties.length; i++) { - if (IDebugUIConstants.COLUMN_ID_VARIABLE_NAME.equals(columnProperties[i])) { - return i; - } - } - return -1; - } + private int getExpressionColumnIndex() { + Object[] columnProperties = fViewer.getColumnProperties(); + for (int i = 0; columnProperties != null && i < columnProperties.length; i++) { + if (IDebugUIConstants.COLUMN_ID_VARIABLE_NAME.equals(columnProperties[i])) { + return i; + } + } + return -1; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/expressions/EditWatchExpressionAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/expressions/EditWatchExpressionAction.java index 0ee090903..d91eecd41 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/expressions/EditWatchExpressionAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/expressions/EditWatchExpressionAction.java @@ -38,6 +38,6 @@ public class EditWatchExpressionAction extends WatchExpressionAction { @Override public void selectionChanged(IAction action, ISelection sel) { - action.setEnabled(getSelectedExpressions().length == 1); + action.setEnabled(getSelectedExpressions().length == 1); } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/expressions/EnableWatchExpressionAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/expressions/EnableWatchExpressionAction.java index c309965b9..06365e72b 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/expressions/EnableWatchExpressionAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/expressions/EnableWatchExpressionAction.java @@ -51,8 +51,8 @@ public class EnableWatchExpressionAction implements IViewActionDelegate, IAction while (iter.hasNext()) { expression= getWatchExpression(iter.next()); if (expression != null) { - expression.setEnabled(fEnable); - fireWatchExpressionChanged(expression); + expression.setEnabled(fEnable); + fireWatchExpressionChanged(expression); } } } else if (fSelection instanceof IWatchExpression) { @@ -92,12 +92,12 @@ public class EnableWatchExpressionAction implements IViewActionDelegate, IAction } private IWatchExpression getWatchExpression(Object element) { - if (element instanceof IWatchExpression) { - return (IWatchExpression)element; - } else if (element instanceof IAdaptable) { - return ((IAdaptable)element).getAdapter(IWatchExpression.class); - } - return null; + if (element instanceof IWatchExpression) { + return (IWatchExpression)element; + } else if (element instanceof IAdaptable) { + return ((IAdaptable)element).getAdapter(IWatchExpression.class); + } + return null; } @Override diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/expressions/ReevaluateWatchExpressionAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/expressions/ReevaluateWatchExpressionAction.java index 1fc07820b..ee9857152 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/expressions/ReevaluateWatchExpressionAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/expressions/ReevaluateWatchExpressionAction.java @@ -36,35 +36,35 @@ import org.eclipse.ui.IWorkbenchPart; */ public class ReevaluateWatchExpressionAction implements IObjectActionDelegate { - @Override + @Override public void setActivePart(IAction action, IWorkbenchPart targetPart) { - } + } - /** - * Finds the currently selected context in the UI. - * @return the current debug context - */ - protected IDebugElement getContext() { - IAdaptable object = DebugUITools.getDebugContext(); - IDebugElement context = null; - if (object instanceof IDebugElement) { - context = (IDebugElement) object; - } else if (object instanceof ILaunch) { - context = ((ILaunch) object).getDebugTarget(); - } - return context; - } + /** + * Finds the currently selected context in the UI. + * @return the current debug context + */ + protected IDebugElement getContext() { + IAdaptable object = DebugUITools.getDebugContext(); + IDebugElement context = null; + if (object instanceof IDebugElement) { + context = (IDebugElement) object; + } else if (object instanceof ILaunch) { + context = ((ILaunch) object).getDebugTarget(); + } + return context; + } - protected IStructuredSelection getCurrentSelection() { - IWorkbenchPage page = DebugUIPlugin.getActiveWorkbenchWindow().getActivePage(); - if (page != null) { - ISelection selection = page.getSelection(); - if (selection instanceof IStructuredSelection) { - return (IStructuredSelection) selection; - } - } - return null; - } + protected IStructuredSelection getCurrentSelection() { + IWorkbenchPage page = DebugUIPlugin.getActiveWorkbenchWindow().getActivePage(); + if (page != null) { + ISelection selection = page.getSelection(); + if (selection instanceof IStructuredSelection) { + return (IStructuredSelection) selection; + } + } + return null; + } /** * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction) diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/expressions/RemoveExpressionAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/expressions/RemoveExpressionAction.java index 9f1f41122..6a5eae9f6 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/expressions/RemoveExpressionAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/expressions/RemoveExpressionAction.java @@ -43,10 +43,10 @@ public class RemoveExpressionAction extends AbstractSelectionActionDelegate { if (segment instanceof IExpression) { expressions.add((IExpression) segment); } else if (segment instanceof IAdaptable) { - IExpression expression = ((IAdaptable)segment).getAdapter(IExpression.class); - if (expression != null) { - expressions.add(expression); - } + IExpression expression = ((IAdaptable)segment).getAdapter(IExpression.class); + if (expression != null) { + expressions.add(expression); + } } } return expressions.toArray(new IExpression[expressions.size()]); diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/expressions/SelectAllExpressionsAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/expressions/SelectAllExpressionsAction.java index 9a39a09d3..2e9315cc3 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/expressions/SelectAllExpressionsAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/expressions/SelectAllExpressionsAction.java @@ -50,9 +50,9 @@ public class SelectAllExpressionsAction extends SelectAllAction implements IExpr public void expressionsChanged(IExpression[] expressions) { } - @Override + @Override public void dispose() { - super.dispose(); - DebugPlugin.getDefault().getExpressionManager().removeExpressionListener(this); - } + super.dispose(); + DebugPlugin.getDefault().getExpressionManager().removeExpressionListener(this); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/expressions/WatchExpressionAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/expressions/WatchExpressionAction.java index 32abad36a..6a4f76013 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/expressions/WatchExpressionAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/expressions/WatchExpressionAction.java @@ -44,46 +44,46 @@ public abstract class WatchExpressionAction implements IViewActionDelegate { @Override public void init(IViewPart view) { - fPart = view; + fPart = view; } - /** - * Finds the currently selected context in the UI. - * @return the current debug context - */ - protected IDebugElement getContext() { - IAdaptable object = DebugUITools.getDebugContext(); - IDebugElement context = null; - if (object instanceof IDebugElement) { - context = (IDebugElement) object; - } else if (object instanceof ILaunch) { - context = ((ILaunch) object).getDebugTarget(); - } - return context; - } + /** + * Finds the currently selected context in the UI. + * @return the current debug context + */ + protected IDebugElement getContext() { + IAdaptable object = DebugUITools.getDebugContext(); + IDebugElement context = null; + if (object instanceof IDebugElement) { + context = (IDebugElement) object; + } else if (object instanceof ILaunch) { + context = ((ILaunch) object).getDebugTarget(); + } + return context; + } protected IWatchExpression[] getSelectedExpressions() { - List<Object> list = new LinkedList<>(); - IStructuredSelection currentSelection = getCurrentSelection(); - if (currentSelection == null) { - return EMPTY_EXPRESSION_ARRAY; - } + List<Object> list = new LinkedList<>(); + IStructuredSelection currentSelection = getCurrentSelection(); + if (currentSelection == null) { + return EMPTY_EXPRESSION_ARRAY; + } - for (Iterator<?> iter= currentSelection.iterator(); iter.hasNext();) { - Object element = iter.next(); - if (element instanceof IWatchExpression) { - list.add(element); - } else if (element instanceof IAdaptable) { - IWatchExpression expr = ((IAdaptable)element).getAdapter(IWatchExpression.class); - if (expr != null) { - list.add(expr); - } else { - return EMPTY_EXPRESSION_ARRAY; - } - } else { - return EMPTY_EXPRESSION_ARRAY; - } - } + for (Iterator<?> iter= currentSelection.iterator(); iter.hasNext();) { + Object element = iter.next(); + if (element instanceof IWatchExpression) { + list.add(element); + } else if (element instanceof IAdaptable) { + IWatchExpression expr = ((IAdaptable)element).getAdapter(IWatchExpression.class); + if (expr != null) { + list.add(expr); + } else { + return EMPTY_EXPRESSION_ARRAY; + } + } else { + return EMPTY_EXPRESSION_ARRAY; + } + } return list.toArray(new IWatchExpression[list.size()]); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/expressions/WatchExpressionFactoryTester.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/expressions/WatchExpressionFactoryTester.java index 67aca51b0..13e1428e8 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/expressions/WatchExpressionFactoryTester.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/expressions/WatchExpressionFactoryTester.java @@ -35,22 +35,22 @@ public class WatchExpressionFactoryTester extends PropertyTester { @Override public boolean test(Object element, String property, Object[] args, Object expectedValue) { if (CAN_CREATE_WATCH_EXPRESSION_PROPERTY.equals(property)){ - if (element instanceof IVariable) { - IVariable variable = (IVariable)element; - if (DebugPlugin.getDefault().getExpressionManager().hasWatchExpressionDelegate(variable.getModelIdentifier())) { - IWatchExpressionFactoryAdapter factory = WatchHandler.getFactory(variable); - if (factory instanceof IWatchExpressionFactoryAdapterExtension) { - IWatchExpressionFactoryAdapterExtension ext = (IWatchExpressionFactoryAdapterExtension) factory; - return ext.canCreateWatchExpression(variable); - } - return true; - } - } else { - IWatchExpressionFactoryAdapter2 factory2 = WatchHandler.getFactory2(element); - if (factory2 != null) { - return factory2.canCreateWatchExpression(element); - } - } + if (element instanceof IVariable) { + IVariable variable = (IVariable)element; + if (DebugPlugin.getDefault().getExpressionManager().hasWatchExpressionDelegate(variable.getModelIdentifier())) { + IWatchExpressionFactoryAdapter factory = WatchHandler.getFactory(variable); + if (factory instanceof IWatchExpressionFactoryAdapterExtension) { + IWatchExpressionFactoryAdapterExtension ext = (IWatchExpressionFactoryAdapterExtension) factory; + return ext.canCreateWatchExpression(variable); + } + return true; + } + } else { + IWatchExpressionFactoryAdapter2 factory2 = WatchHandler.getFactory2(element); + if (factory2 != null) { + return factory2.canCreateWatchExpression(element); + } + } } return false; } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/expressions/WatchHandler.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/expressions/WatchHandler.java index 6305324c4..1c4955f02 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/expressions/WatchHandler.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/expressions/WatchHandler.java @@ -45,94 +45,94 @@ import org.eclipse.ui.handlers.HandlerUtil; */ public class WatchHandler extends AbstractHandler { - @Override + @Override public Object execute(ExecutionEvent event) throws ExecutionException { - ISelection selection = HandlerUtil.getCurrentSelection(event); - if (selection instanceof IStructuredSelection) { - Iterator<?> iter = ((IStructuredSelection)selection).iterator(); - while (iter.hasNext()) { - Object element = iter.next(); - createExpression(element); - } - } - return null; - } + ISelection selection = HandlerUtil.getCurrentSelection(event); + if (selection instanceof IStructuredSelection) { + Iterator<?> iter = ((IStructuredSelection)selection).iterator(); + while (iter.hasNext()) { + Object element = iter.next(); + createExpression(element); + } + } + return null; + } - private void showExpressionsView() { - IWorkbenchPage page = DebugUIPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage(); - IViewPart part = page.findView(IDebugUIConstants.ID_EXPRESSION_VIEW); - if (part == null) { - try { - page.showView(IDebugUIConstants.ID_EXPRESSION_VIEW); - } catch (PartInitException e) { - } - } else { - page.bringToTop(part); - } + private void showExpressionsView() { + IWorkbenchPage page = DebugUIPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage(); + IViewPart part = page.findView(IDebugUIConstants.ID_EXPRESSION_VIEW); + if (part == null) { + try { + page.showView(IDebugUIConstants.ID_EXPRESSION_VIEW); + } catch (PartInitException e) { + } + } else { + page.bringToTop(part); + } - } + } - private void createExpression(Object element) { - String expressionString; - try { - if (element instanceof IVariable) { - IVariable variable = (IVariable)element; - IWatchExpressionFactoryAdapter factory = getFactory(variable); - expressionString = variable.getName(); - if (factory != null) { - expressionString = factory.createWatchExpression(variable); - } - } else { - IWatchExpressionFactoryAdapter2 factory2 = getFactory2(element); - if (factory2 != null) { - expressionString = factory2.createWatchExpression(element); - } else { - // Action should not have been enabled - return; - } - } - } catch (CoreException e) { - DebugUIPlugin.errorDialog(DebugUIPlugin.getShell(), ActionMessages.WatchAction_0, ActionMessages.WatchAction_1, e); // - return; - } + private void createExpression(Object element) { + String expressionString; + try { + if (element instanceof IVariable) { + IVariable variable = (IVariable)element; + IWatchExpressionFactoryAdapter factory = getFactory(variable); + expressionString = variable.getName(); + if (factory != null) { + expressionString = factory.createWatchExpression(variable); + } + } else { + IWatchExpressionFactoryAdapter2 factory2 = getFactory2(element); + if (factory2 != null) { + expressionString = factory2.createWatchExpression(element); + } else { + // Action should not have been enabled + return; + } + } + } catch (CoreException e) { + DebugUIPlugin.errorDialog(DebugUIPlugin.getShell(), ActionMessages.WatchAction_0, ActionMessages.WatchAction_1, e); // + return; + } - IWatchExpression expression; - expression = DebugPlugin.getDefault().getExpressionManager().newWatchExpression(expressionString); - DebugPlugin.getDefault().getExpressionManager().addExpression(expression); - IAdaptable object = DebugUITools.getDebugContext(); - IDebugElement context = null; - if (object instanceof IDebugElement) { - context = (IDebugElement) object; - } else if (object instanceof ILaunch) { - context = ((ILaunch) object).getDebugTarget(); - } - expression.setExpressionContext(context); - showExpressionsView(); - } + IWatchExpression expression; + expression = DebugPlugin.getDefault().getExpressionManager().newWatchExpression(expressionString); + DebugPlugin.getDefault().getExpressionManager().addExpression(expression); + IAdaptable object = DebugUITools.getDebugContext(); + IDebugElement context = null; + if (object instanceof IDebugElement) { + context = (IDebugElement) object; + } else if (object instanceof ILaunch) { + context = ((ILaunch) object).getDebugTarget(); + } + expression.setExpressionContext(context); + showExpressionsView(); + } - /** - * Returns the factory adapter for the given variable or <code>null</code> if none. - * - * @param variable the variable to get the factory for - * @return factory or <code>null</code> - */ - static IWatchExpressionFactoryAdapter getFactory(IVariable variable) { - return variable.getAdapter(IWatchExpressionFactoryAdapter.class); - } + /** + * Returns the factory adapter for the given variable or <code>null</code> if none. + * + * @param variable the variable to get the factory for + * @return factory or <code>null</code> + */ + static IWatchExpressionFactoryAdapter getFactory(IVariable variable) { + return variable.getAdapter(IWatchExpressionFactoryAdapter.class); + } - /** - * Returns the factory adapter for the given variable or <code>null</code> if none. - * - * @param element the element to try and adapt - * @return factory or <code>null</code> - */ - static IWatchExpressionFactoryAdapter2 getFactory2(Object element) { - if (element instanceof IAdaptable) { - return ((IAdaptable)element).getAdapter(IWatchExpressionFactoryAdapter2.class); - } - return null; - } + /** + * Returns the factory adapter for the given variable or <code>null</code> if none. + * + * @param element the element to try and adapt + * @return factory or <code>null</code> + */ + static IWatchExpressionFactoryAdapter2 getFactory2(Object element) { + if (element instanceof IAdaptable) { + return ((IAdaptable)element).getAdapter(IWatchExpressionFactoryAdapter2.class); + } + return null; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/variables/ChangeVariableValueAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/variables/ChangeVariableValueAction.java index e0ed1ed70..f2793f51d 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/variables/ChangeVariableValueAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/variables/ChangeVariableValueAction.java @@ -47,14 +47,14 @@ import com.ibm.icu.text.MessageFormat; public class ChangeVariableValueAction extends SelectionProviderAction { protected IVariable fVariable; - private VariablesView fView; - private boolean fEditing= false; - private boolean isApplicable = false; - - /** - * Creates a new ChangeVariableValueAction for the given variables view - * @param view the variables view in which this action will appear - */ + private VariablesView fView; + private boolean fEditing= false; + private boolean isApplicable = false; + + /** + * Creates a new ChangeVariableValueAction for the given variables view + * @param view the variables view in which this action will appear + */ public ChangeVariableValueAction(VariablesView view) { super(view.getViewer(), ActionMessages.ChangeVariableValue_title); setDescription(ActionMessages.ChangeVariableValue_toolTipText); @@ -74,7 +74,7 @@ public class ChangeVariableValueAction extends SelectionProviderAction { * @return if this action applies to the current selection */ public boolean isApplicable() { - return isApplicable; + return isApplicable; } /** @@ -82,16 +82,16 @@ public class ChangeVariableValueAction extends SelectionProviderAction { * @param variable run the action on the given variable */ protected void doActionPerformed(final IVariable variable) { - Shell shell = fView.getViewSite().getShell(); + Shell shell = fView.getViewSite().getShell(); // If a previous edit is still in progress, don't start another - if (fEditing) { - return; - } - fEditing= true; + if (fEditing) { + return; + } + fEditing= true; fVariable = variable; - if (!delegateEdit(shell)) { - doDefaultEdit(shell); - } + if (!delegateEdit(shell)) { + doDefaultEdit(shell); + } fEditing= false; } @@ -101,24 +101,24 @@ public class ChangeVariableValueAction extends SelectionProviderAction { * <code>true</code> if a delegate handled the edit, <code>false</code> * if the variable still needs to be edited. * - * @param shell a shell for prompting the user - * @return whether or not a delegate attempted to edit the variable - */ - private boolean delegateEdit(Shell shell) { - String modelIdentifier = fVariable.getModelIdentifier(); - IVariableValueEditor editor= VariableValueEditorManager.getDefault().getVariableValueEditor(modelIdentifier); - if (editor != null) { - return editor.editVariable(fVariable, shell); - } - return false; - } - - /** - * Edits the variable using the default variable editor - * @param shell a shell for prompting the user - */ - protected void doDefaultEdit(Shell shell) { - String name= IInternalDebugCoreConstants.EMPTY_STRING; + * @param shell a shell for prompting the user + * @return whether or not a delegate attempted to edit the variable + */ + private boolean delegateEdit(Shell shell) { + String modelIdentifier = fVariable.getModelIdentifier(); + IVariableValueEditor editor= VariableValueEditorManager.getDefault().getVariableValueEditor(modelIdentifier); + if (editor != null) { + return editor.editVariable(fVariable, shell); + } + return false; + } + + /** + * Edits the variable using the default variable editor + * @param shell a shell for prompting the user + */ + protected void doDefaultEdit(Shell shell) { + String name= IInternalDebugCoreConstants.EMPTY_STRING; String value= IInternalDebugCoreConstants.EMPTY_STRING; try { name= fVariable.getName(); @@ -163,12 +163,12 @@ public class ChangeVariableValueAction extends SelectionProviderAction { * @param sel the selection to update */ protected void update(IStructuredSelection sel) { - isApplicable = false; + isApplicable = false; Iterator<Object> iter = sel.iterator(); if (iter.hasNext()) { Object object= iter.next(); if (object instanceof IValueModification) { - isApplicable = true; + isApplicable = true; IValueModification varMod= (IValueModification)object; if (!varMod.supportsValueModification()) { setEnabled(false); diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/variables/ChangeVariableValueInputDialog.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/variables/ChangeVariableValueInputDialog.java index e1573b63e..081a4a43a 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/variables/ChangeVariableValueInputDialog.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/variables/ChangeVariableValueInputDialog.java @@ -263,15 +263,15 @@ public class ChangeVariableValueInputDialog extends TrayDialog { return IDebugUIConstants.PLUGIN_ID + ".CHANGE_VARIABLE_VALUE_DIALOG_SECTION"; //$NON-NLS-1$ } - @Override + @Override protected IDialogSettings getDialogBoundsSettings() { - IDialogSettings settings = DebugUIPlugin.getDefault().getDialogSettings(); - IDialogSettings section = settings.getSection(getDialogSettingsSectionName()); - if (section == null) { - section = settings.addNewSection(getDialogSettingsSectionName()); - } - return section; - } + IDialogSettings settings = DebugUIPlugin.getDefault().getDialogSettings(); + IDialogSettings section = settings.getSection(getDialogSettingsSectionName()); + if (section == null) { + section = settings.addNewSection(getDialogSettingsSectionName()); + } + return section; + } @Override protected void handleShellCloseEvent() { diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/variables/details/DetailPaneAssignValueAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/variables/details/DetailPaneAssignValueAction.java index 03bb94293..95f1774b8 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/variables/details/DetailPaneAssignValueAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/variables/details/DetailPaneAssignValueAction.java @@ -46,7 +46,7 @@ import com.ibm.icu.text.MessageFormat; */ public class DetailPaneAssignValueAction extends Action{ - private IHandlerActivation fHandlerActivation; + private IHandlerActivation fHandlerActivation; private IViewSite fViewSite; private ITextViewer fTextViewer; private IStructuredSelection fCurrentSelection; @@ -67,46 +67,46 @@ public class DetailPaneAssignValueAction extends Action{ String modelIdentifier = variable.getModelIdentifier(); IVariableValueEditor editor = VariableValueEditorManager.getDefault().getVariableValueEditor(modelIdentifier); if (editor != null) { - if (editor.saveVariable(variable, newValueExpression, shell)) { - // If we successfully delegate to an editor which performs the save, - // don't do any more work. - return; - } + if (editor.saveVariable(variable, newValueExpression, shell)) { + // If we successfully delegate to an editor which performs the save, + // don't do any more work. + return; + } } try { - // If we failed to delegate to anyone, perform the default assignment. + // If we failed to delegate to anyone, perform the default assignment. if (variable.verifyValue(newValueExpression)) { variable.setValue(newValueExpression); } else { - if (shell != null) { + if (shell != null) { DebugUIPlugin.errorDialog(shell, ActionMessages.DetailPaneAssignValueAction_2, MessageFormat.format(ActionMessages.DetailPaneAssignValueAction_3, new Object[] { newValueExpression, variable.getName() }), new StatusInfo(IStatus.ERROR, ActionMessages.DetailPaneAssignValueAction_4)); // - } + } } } catch (DebugException e) { - MessageDialog.openError(shell, ActionMessages.DetailPaneAssignValueAction_0, e.getStatus().getMessage()); + MessageDialog.openError(shell, ActionMessages.DetailPaneAssignValueAction_0, e.getStatus().getMessage()); } } public DetailPaneAssignValueAction(ITextViewer textViewer, IViewSite viewSite) { super(ActionMessages.DetailPaneAssignValueAction_1); - PlatformUI.getWorkbench().getHelpSystem().setHelp(this, IDebugHelpContextIds.DETAIL_PANE_ASSIGN_VALUE_ACTION); + PlatformUI.getWorkbench().getHelpSystem().setHelp(this, IDebugHelpContextIds.DETAIL_PANE_ASSIGN_VALUE_ACTION); fTextViewer = textViewer; fViewSite = viewSite; setEnabled(false); - IHandlerService service = fViewSite.getService(IHandlerService.class); - ActionHandler handler = new ActionHandler(this); - fHandlerActivation = service.activateHandler(getActionDefinitionId(), handler); + IHandlerService service = fViewSite.getService(IHandlerService.class); + ActionHandler handler = new ActionHandler(this); + fHandlerActivation = service.activateHandler(getActionDefinitionId(), handler); } public void dispose() { - IHandlerService service = fViewSite.getService(IHandlerService.class); - service.deactivateHandler(fHandlerActivation); - } + IHandlerService service = fViewSite.getService(IHandlerService.class); + service.deactivateHandler(fHandlerActivation); + } public void updateCurrentVariable(IStructuredSelection selection) { boolean enabled = false; diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/variables/details/DetailPaneMaxLengthDialog.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/variables/details/DetailPaneMaxLengthDialog.java index 7f97b1faf..7778425fe 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/variables/details/DetailPaneMaxLengthDialog.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/variables/details/DetailPaneMaxLengthDialog.java @@ -94,30 +94,30 @@ public class DetailPaneMaxLengthDialog extends TrayDialog { @Override protected Control createDialogArea(Composite parent) { - Composite composite = (Composite) super.createDialogArea(parent); - Label label = new Label(composite, SWT.WRAP); - label.setText(VariablesViewMessages.DetailPaneMaxLengthDialog_1); - GridData data = new GridData(GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL | GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_CENTER); - data.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH); - label.setLayoutData(data); - label.setFont(parent.getFont()); - fTextWidget = new Text(composite, SWT.SINGLE | SWT.BORDER); - fTextWidget.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL)); - fTextWidget.setText(fValue); - fTextWidget.addModifyListener(new ModifyListener() { - @Override + Composite composite = (Composite) super.createDialogArea(parent); + Label label = new Label(composite, SWT.WRAP); + label.setText(VariablesViewMessages.DetailPaneMaxLengthDialog_1); + GridData data = new GridData(GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL | GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_CENTER); + data.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH); + label.setLayoutData(data); + label.setFont(parent.getFont()); + fTextWidget = new Text(composite, SWT.SINGLE | SWT.BORDER); + fTextWidget.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL)); + fTextWidget.setText(fValue); + fTextWidget.addModifyListener(new ModifyListener() { + @Override public void modifyText(ModifyEvent e) { - validateInput(); - fValue = fTextWidget.getText(); - } - }); - fErrorTextWidget = new Text(composite, SWT.READ_ONLY); - fErrorTextWidget.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL - | GridData.HORIZONTAL_ALIGN_FILL)); - fErrorTextWidget.setBackground(fErrorTextWidget.getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND)); - setErrorMessage(fErrorMessage); - applyDialogFont(composite); - return composite; + validateInput(); + fValue = fTextWidget.getText(); + } + }); + fErrorTextWidget = new Text(composite, SWT.READ_ONLY); + fErrorTextWidget.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL + | GridData.HORIZONTAL_ALIGN_FILL)); + fErrorTextWidget.setBackground(fErrorTextWidget.getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND)); + setErrorMessage(fErrorMessage); + applyDialogFont(composite); + return composite; } @Override @@ -133,43 +133,43 @@ public class DetailPaneMaxLengthDialog extends TrayDialog { } /** - * Returns the string typed into this input dialog. - * - * @return the input string - * @since 3.3 - */ - public String getValue() { - return fValue; - } + * Returns the string typed into this input dialog. + * + * @return the input string + * @since 3.3 + */ + public String getValue() { + return fValue; + } - /** - * Validates the current input - * @since 3.3 - */ - private void validateInput() { - String errorMessage = null; - if (fValidator != null) { - errorMessage = fValidator.isValid(fTextWidget.getText()); - } - setErrorMessage(errorMessage); - } + /** + * Validates the current input + * @since 3.3 + */ + private void validateInput() { + String errorMessage = null; + if (fValidator != null) { + errorMessage = fValidator.isValid(fTextWidget.getText()); + } + setErrorMessage(errorMessage); + } - /** - * Sets the current error message or none if null - * @param errorMessage the message to display - * @since 3.3 - */ - public void setErrorMessage(String errorMessage) { - fErrorMessage = errorMessage; - if (fErrorTextWidget != null && !fErrorTextWidget.isDisposed()) { - fErrorTextWidget.setText(errorMessage == null ? IInternalDebugCoreConstants.EMPTY_STRING : errorMessage); - fErrorTextWidget.getParent().update(); - // Access the ok button by id, in case clients have overridden button creation. - // See https://bugs.eclipse.org/bugs/show_bug.cgi?id=113643 - Control button = getButton(IDialogConstants.OK_ID); - if (button != null) { - button.setEnabled(errorMessage == null); - } - } - } + /** + * Sets the current error message or none if null + * @param errorMessage the message to display + * @since 3.3 + */ + public void setErrorMessage(String errorMessage) { + fErrorMessage = errorMessage; + if (fErrorTextWidget != null && !fErrorTextWidget.isDisposed()) { + fErrorTextWidget.setText(errorMessage == null ? IInternalDebugCoreConstants.EMPTY_STRING : errorMessage); + fErrorTextWidget.getParent().update(); + // Access the ok button by id, in case clients have overridden button creation. + // See https://bugs.eclipse.org/bugs/show_bug.cgi?id=113643 + Control button = getButton(IDialogConstants.OK_ID); + if (button != null) { + button.setEnabled(errorMessage == null); + } + } + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/breakpoints/provisional/IBreakpointContainer.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/breakpoints/provisional/IBreakpointContainer.java index 997b219ff..784518d97 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/breakpoints/provisional/IBreakpointContainer.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/breakpoints/provisional/IBreakpointContainer.java @@ -28,28 +28,28 @@ import org.eclipse.debug.core.model.IBreakpoint; */ public interface IBreakpointContainer { - /** - * Returns the breakpoint organizer that this container uses. - */ - IBreakpointOrganizer getOrganizer(); + /** + * Returns the breakpoint organizer that this container uses. + */ + IBreakpointOrganizer getOrganizer(); - /** - * Returns the breakpoint category that this container is based on. - * @return - */ - IAdaptable getCategory(); + /** + * Returns the breakpoint category that this container is based on. + * @return + */ + IAdaptable getCategory(); - /** - * Returns whether this breakpoint container contains the given breakpoint. - * - * @param breakpoint Breakpoint to check - * @return Returns <code>true</code> if this container contains the - * given breakpoint. - */ - boolean contains(IBreakpoint breakpoint); + /** + * Returns whether this breakpoint container contains the given breakpoint. + * + * @param breakpoint Breakpoint to check + * @return Returns <code>true</code> if this container contains the + * given breakpoint. + */ + boolean contains(IBreakpoint breakpoint); - /** - * Returns the array of breakpoints in this container. - */ - IBreakpoint[] getBreakpoints(); + /** + * Returns the array of breakpoints in this container. + */ + IBreakpoint[] getBreakpoints(); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/breakpoints/provisional/IBreakpointOrganizer.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/breakpoints/provisional/IBreakpointOrganizer.java index 49cca1221..c7c6d2d2e 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/breakpoints/provisional/IBreakpointOrganizer.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/breakpoints/provisional/IBreakpointOrganizer.java @@ -33,34 +33,34 @@ import org.eclipse.jface.resource.ImageDescriptor; */ public interface IBreakpointOrganizer extends IBreakpointOrganizerDelegate { - /** - * Returns a label for this breakpoint organizer. - * - * @return a label for this breakpoint organizer - */ - String getLabel(); + /** + * Returns a label for this breakpoint organizer. + * + * @return a label for this breakpoint organizer + */ + String getLabel(); - /** - * Returns an image descriptor for this breakpoint organizer or <code>null</code>. - * - * @return an image descriptor for this breakpoint organizer or <code>null</code> - */ - ImageDescriptor getImageDescriptor(); + /** + * Returns an image descriptor for this breakpoint organizer or <code>null</code>. + * + * @return an image descriptor for this breakpoint organizer or <code>null</code> + */ + ImageDescriptor getImageDescriptor(); - /** - * Returns a unique identifier for this breakpoint organizer. - * - * @return a unique identifier for this breakpoint organizer - */ - String getIdentifier(); + /** + * Returns a unique identifier for this breakpoint organizer. + * + * @return a unique identifier for this breakpoint organizer + */ + String getIdentifier(); - /** - * Returns the label for breakpoints that do not fall into a category - * for this organizer. - * - * @return label for breakpoints that do not fall into a category - * for this organizer - */ - String getOthersLabel(); + /** + * Returns the label for breakpoints that do not fall into a category + * for this organizer. + * + * @return label for breakpoints that do not fall into a category + * for this organizer + */ + String getOthersLabel(); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/breakpoints/provisional/IBreakpointUIConstants.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/breakpoints/provisional/IBreakpointUIConstants.java index 8e4b027f0..9d572a681 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/breakpoints/provisional/IBreakpointUIConstants.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/breakpoints/provisional/IBreakpointUIConstants.java @@ -19,49 +19,49 @@ package org.eclipse.debug.internal.ui.breakpoints.provisional; * @since 3.6 */ public interface IBreakpointUIConstants { - /** - * Breakpoints presentation context property used to retrieve the array of - * breakpoint organizers. The expected property type is - * <code>IBreakpointOrganizer[]</code>. If property value is <code>null</code>, - * the breakpoint categories should not be shown. - * - * @see org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext#getProperty(String) - */ - String PROP_BREAKPOINTS_ORGANIZERS = "BreakpointOrganizers"; //$NON-NLS-1$ + /** + * Breakpoints presentation context property used to retrieve the array of + * breakpoint organizers. The expected property type is + * <code>IBreakpointOrganizer[]</code>. If property value is <code>null</code>, + * the breakpoint categories should not be shown. + * + * @see org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext#getProperty(String) + */ + String PROP_BREAKPOINTS_ORGANIZERS = "BreakpointOrganizers"; //$NON-NLS-1$ - /** - * Breakpoints presentation context property used to retrieve a flag - * indicating whether the list of breakpoints should be filtered based - * on the active debug context. The returned property value should - * be of type <code>java.lang.Boolean</code>. If property value is - * <code>null</code>, then value should be treated the same as - * <code>Boolean.FALSE</code>. - * - * @see org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext#getProperty(String) - */ - String PROP_BREAKPOINTS_FILTER_SELECTION = "FilterSelection"; //$NON-NLS-1$ + /** + * Breakpoints presentation context property used to retrieve a flag + * indicating whether the list of breakpoints should be filtered based + * on the active debug context. The returned property value should + * be of type <code>java.lang.Boolean</code>. If property value is + * <code>null</code>, then value should be treated the same as + * <code>Boolean.FALSE</code>. + * + * @see org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext#getProperty(String) + */ + String PROP_BREAKPOINTS_FILTER_SELECTION = "FilterSelection"; //$NON-NLS-1$ - /** - * Breakpoints presentation context property used to retrieve a flag - * indicating whether breakpoints view selection should be updated - * upon a breakpoint event in debug model. The returned property value - * should be of type <code>java.lang.Boolean</code>. If property value is - * <code>null</code>, then value should be treated the same as - * <code>Boolean.FALSE</code>. - * - * @see org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext#getProperty(String) - */ - String PROP_BREAKPOINTS_TRACK_SELECTION = "TrackSelection"; //$NON-NLS-1$ + /** + * Breakpoints presentation context property used to retrieve a flag + * indicating whether breakpoints view selection should be updated + * upon a breakpoint event in debug model. The returned property value + * should be of type <code>java.lang.Boolean</code>. If property value is + * <code>null</code>, then value should be treated the same as + * <code>Boolean.FALSE</code>. + * + * @see org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext#getProperty(String) + */ + String PROP_BREAKPOINTS_TRACK_SELECTION = "TrackSelection"; //$NON-NLS-1$ - /** - * Breakpoints presentation context property used to retrieve a - * comparator for sorting breakpoints. The returned property value should - * be of type <code>java.util.Comparator</code>. If property value is - * <code>null</code>, the breakpoints should not be sorted. - * - * @see org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext#getProperty(String) - */ - String PROP_BREAKPOINTS_ELEMENT_COMPARATOR = "ElementComparator"; //$NON-NLS-1$ + /** + * Breakpoints presentation context property used to retrieve a + * comparator for sorting breakpoints. The returned property value should + * be of type <code>java.util.Comparator</code>. If property value is + * <code>null</code>, the breakpoints should not be sorted. + * + * @see org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext#getProperty(String) + */ + String PROP_BREAKPOINTS_ELEMENT_COMPARATOR = "ElementComparator"; //$NON-NLS-1$ String PROP_BREAKPOINTS_ELEMENT_COMPARATOR_SORT = "ElementComparatorSort"; //$NON-NLS-1$ diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/breakpoints/provisional/OtherBreakpointCategory.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/breakpoints/provisional/OtherBreakpointCategory.java index 9705e1459..07fedbb26 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/breakpoints/provisional/OtherBreakpointCategory.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/breakpoints/provisional/OtherBreakpointCategory.java @@ -37,58 +37,58 @@ import org.eclipse.ui.model.IWorkbenchAdapter; public class OtherBreakpointCategory extends PlatformObject implements IWorkbenchAdapter { private static Map<IBreakpointOrganizer, IAdaptable[]> fOthers = new HashMap<>(); - private IBreakpointOrganizer fOrganizer; + private IBreakpointOrganizer fOrganizer; - public static IAdaptable[] getCategories(IBreakpointOrganizer organizer) { - IAdaptable[] others = fOthers.get(organizer); - if (others == null) { - others = new IAdaptable[]{new OtherBreakpointCategory(organizer)}; - fOthers.put(organizer, others); - } - return others; - } + public static IAdaptable[] getCategories(IBreakpointOrganizer organizer) { + IAdaptable[] others = fOthers.get(organizer); + if (others == null) { + others = new IAdaptable[]{new OtherBreakpointCategory(organizer)}; + fOthers.put(organizer, others); + } + return others; + } - /** - * Constructs an 'other' category for the given organizer. - * - * @param organizer breakpoint organizer - */ - private OtherBreakpointCategory(IBreakpointOrganizer organizer) { - fOrganizer = organizer; - } + /** + * Constructs an 'other' category for the given organizer. + * + * @param organizer breakpoint organizer + */ + private OtherBreakpointCategory(IBreakpointOrganizer organizer) { + fOrganizer = organizer; + } - @Override + @Override public Object[] getChildren(Object o) { - return null; - } + return null; + } - @Override + @Override public ImageDescriptor getImageDescriptor(Object object) { - return DebugPluginImages.getImageDescriptor(IDebugUIConstants.IMG_VIEW_BREAKPOINTS); - } + return DebugPluginImages.getImageDescriptor(IDebugUIConstants.IMG_VIEW_BREAKPOINTS); + } - @Override + @Override public String getLabel(Object o) { - return fOrganizer.getOthersLabel(); - } + return fOrganizer.getOthersLabel(); + } - @Override + @Override public Object getParent(Object o) { - return null; - } + return null; + } - @Override + @Override public boolean equals(Object obj) { - if (obj instanceof OtherBreakpointCategory) { - OtherBreakpointCategory category = (OtherBreakpointCategory) obj; - return fOrganizer.equals(category.fOrganizer); - } - return false; - } + if (obj instanceof OtherBreakpointCategory) { + OtherBreakpointCategory category = (OtherBreakpointCategory) obj; + return fOrganizer.equals(category.fOrganizer); + } + return false; + } - @Override + @Override public int hashCode() { - return fOrganizer.hashCode(); - } + return fOrganizer.hashCode(); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/DebugCommandActionDelegate.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/DebugCommandActionDelegate.java index 543811965..6bcd36dfd 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/DebugCommandActionDelegate.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/DebugCommandActionDelegate.java @@ -30,40 +30,40 @@ import org.eclipse.ui.IWorkbenchWindowActionDelegate; public abstract class DebugCommandActionDelegate implements IWorkbenchWindowActionDelegate, IActionDelegate2 { /** - *The real action for this delegate + *The real action for this delegate */ private DebugCommandAction fDebugAction; protected void setAction(DebugCommandAction action) { - fDebugAction = action; + fDebugAction = action; } @Override public void dispose() { - fDebugAction.dispose(); + fDebugAction.dispose(); } - @Override + @Override public void init(IAction action) { - fDebugAction.setActionProxy(action); - } + fDebugAction.setActionProxy(action); + } - @Override + @Override public void init(IWorkbenchWindow window) { - fDebugAction.init(window); + fDebugAction.init(window); } @Override public void run(IAction action) { - fDebugAction.run(); + fDebugAction.run(); } @Override public void runWithEvent(IAction action, Event event) { - run(action); - } + run(action); + } - @Override + @Override public void selectionChanged(IAction action, ISelection s) { // do nothing } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/DebugCommandService.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/DebugCommandService.java index 4fe6ec3dc..dcfc2e279 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/DebugCommandService.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/DebugCommandService.java @@ -247,9 +247,9 @@ public class DebugCommandService implements IDebugContextListener { */ private Map<IDebugCommandHandler, List<Object>> collate(Object[] elements, Class<?> handlerType) { Map<IDebugCommandHandler, List<Object>> map = new HashMap<>(); - for (int i = 0; i < elements.length; i++) { - Object element = elements[i]; - IDebugCommandHandler handler = getHandler(element, handlerType); + for (int i = 0; i < elements.length; i++) { + Object element = elements[i]; + IDebugCommandHandler handler = getHandler(element, handlerType); if (handler == null) { return null; } else { diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/DisconnectCommandAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/DisconnectCommandAction.java index 7c7a95f6f..ee57b97ef 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/DisconnectCommandAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/DisconnectCommandAction.java @@ -27,44 +27,44 @@ import org.eclipse.jface.resource.ImageDescriptor; */ public class DisconnectCommandAction extends DebugCommandAction{ - public DisconnectCommandAction() { - setActionDefinitionId("org.eclipse.debug.ui.commands.Disconnect"); //$NON-NLS-1$ - } + public DisconnectCommandAction() { + setActionDefinitionId("org.eclipse.debug.ui.commands.Disconnect"); //$NON-NLS-1$ + } - @Override + @Override public String getText() { - return ActionMessages.DisconnectAction_0; - } + return ActionMessages.DisconnectAction_0; + } - @Override + @Override public String getHelpContextId() { - return "org.eclipse.debug.ui.disconnect_action_context"; //$NON-NLS-1$ - } + return "org.eclipse.debug.ui.disconnect_action_context"; //$NON-NLS-1$ + } - @Override + @Override public String getId() { - return "org.eclipse.debug.ui.debugview.toolbar.disconnect"; //$NON-NLS-1$ - } + return "org.eclipse.debug.ui.debugview.toolbar.disconnect"; //$NON-NLS-1$ + } - @Override + @Override public String getToolTipText() { - return ActionMessages.DisconnectAction_3; - } + return ActionMessages.DisconnectAction_3; + } - @Override + @Override public ImageDescriptor getDisabledImageDescriptor() { - return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_DLCL_DISCONNECT); - } + return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_DLCL_DISCONNECT); + } - @Override + @Override public ImageDescriptor getHoverImageDescriptor() { - return DebugPluginImages.getImageDescriptor(IDebugUIConstants.IMG_LCL_DISCONNECT); - } + return DebugPluginImages.getImageDescriptor(IDebugUIConstants.IMG_LCL_DISCONNECT); + } - @Override + @Override public ImageDescriptor getImageDescriptor() { - return DebugPluginImages.getImageDescriptor(IDebugUIConstants.IMG_LCL_DISCONNECT); - } + return DebugPluginImages.getImageDescriptor(IDebugUIConstants.IMG_LCL_DISCONNECT); + } @Override protected Class<IDisconnectHandler> getCommandType() { diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/DisconnectCommandHandler.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/DisconnectCommandHandler.java index 9a3ff7cb1..be5c2c649 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/DisconnectCommandHandler.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/DisconnectCommandHandler.java @@ -25,9 +25,9 @@ import org.eclipse.debug.ui.actions.DebugCommandHandler; */ public class DisconnectCommandHandler extends DebugCommandHandler { - @Override + @Override protected Class<IDisconnectHandler> getCommandType() { - return IDisconnectHandler.class; - } + return IDisconnectHandler.class; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/DropToFrameCommandAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/DropToFrameCommandAction.java index 99c626d83..c9aafc8d4 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/DropToFrameCommandAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/DropToFrameCommandAction.java @@ -27,39 +27,39 @@ import org.eclipse.jface.resource.ImageDescriptor; */ public class DropToFrameCommandAction extends DebugCommandAction { - public DropToFrameCommandAction() { - setActionDefinitionId("org.eclipse.debug.ui.commands.DropToFrame"); //$NON-NLS-1$ - } + public DropToFrameCommandAction() { + setActionDefinitionId("org.eclipse.debug.ui.commands.DropToFrame"); //$NON-NLS-1$ + } - @Override + @Override public String getText() { - return ActionMessages.DropToFrameAction_0; - } + return ActionMessages.DropToFrameAction_0; + } - @Override + @Override public String getHelpContextId() { - return "org.eclipse.debug.ui.drop_to_frame_action_context"; //$NON-NLS-1$ - } + return "org.eclipse.debug.ui.drop_to_frame_action_context"; //$NON-NLS-1$ + } - @Override + @Override public String getId() { - return "org.eclipse.debug.ui.debugview.toolbar.dropToFrame"; //$NON-NLS-1$ - } + return "org.eclipse.debug.ui.debugview.toolbar.dropToFrame"; //$NON-NLS-1$ + } - @Override + @Override public String getToolTipText() { - return ActionMessages.DropToFrameAction_3; - } + return ActionMessages.DropToFrameAction_3; + } - @Override + @Override public ImageDescriptor getHoverImageDescriptor() { - return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_DROP_TO_FRAME); - } + return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_DROP_TO_FRAME); + } - @Override + @Override public ImageDescriptor getImageDescriptor() { - return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_DROP_TO_FRAME); - } + return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_DROP_TO_FRAME); + } @Override public ImageDescriptor getDisabledImageDescriptor() { diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/DropToFrameCommandHandler.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/DropToFrameCommandHandler.java index e55513950..6e25f25a0 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/DropToFrameCommandHandler.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/DropToFrameCommandHandler.java @@ -25,9 +25,9 @@ import org.eclipse.debug.ui.actions.DebugCommandHandler; */ public class DropToFrameCommandHandler extends DebugCommandHandler { - @Override + @Override protected Class<IDropToFrameHandler> getCommandType() { - return IDropToFrameHandler.class; - } + return IDropToFrameHandler.class; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/ExecuteActionRequest.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/ExecuteActionRequest.java index be54459b9..dea989ae2 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/ExecuteActionRequest.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/ExecuteActionRequest.java @@ -33,29 +33,29 @@ public class ExecuteActionRequest extends DebugCommandRequest { super(elements); } - @Override + @Override public void done() { - if (fParticipant != null) { + if (fParticipant != null) { fParticipant.requestDone(this); fParticipant = null; } - final IStatus status = getStatus(); - if (status != null) { - switch (status.getSeverity()) { - case IStatus.ERROR: + final IStatus status = getStatus(); + if (status != null) { + switch (status.getSeverity()) { + case IStatus.ERROR: DebugUIPlugin.getStandardDisplay().asyncExec(() -> MessageDialog.openError(DebugUIPlugin.getShell(), DebugUIMessages.DebugUITools_Error_1, status.getMessage())); - break; - case IStatus.WARNING: + break; + case IStatus.WARNING: DebugUIPlugin.getStandardDisplay().asyncExec(() -> MessageDialog.openWarning(DebugUIPlugin.getShell(), DebugUIMessages.DebugUITools_Error_1, status.getMessage())); - break; - case IStatus.INFO: + break; + case IStatus.INFO: DebugUIPlugin.getStandardDisplay().asyncExec(() -> MessageDialog.openInformation(DebugUIPlugin.getShell(), DebugUIMessages.DebugUITools_Error_1, status.getMessage())); - break; + break; default: break; - } - } - } + } + } + } public void setCommandParticipant(ICommandParticipant participant) { fParticipant = participant; diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/IEnabledTarget.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/IEnabledTarget.java index adfc68e20..c46dc71cf 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/IEnabledTarget.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/IEnabledTarget.java @@ -17,5 +17,5 @@ package org.eclipse.debug.internal.ui.commands.actions; * */ public interface IEnabledTarget { - void setEnabled(boolean enabled); + void setEnabled(boolean enabled); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/RestartCommandAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/RestartCommandAction.java index 0bd831c86..7adc14347 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/RestartCommandAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/RestartCommandAction.java @@ -28,49 +28,49 @@ import org.eclipse.jface.resource.ImageDescriptor; */ public class RestartCommandAction extends DebugCommandAction { - public RestartCommandAction() { - setActionDefinitionId("org.eclipse.debug.ui.commands.Restart"); //$NON-NLS-1$ - } + public RestartCommandAction() { + setActionDefinitionId("org.eclipse.debug.ui.commands.Restart"); //$NON-NLS-1$ + } - @Override + @Override protected Class<IRestartHandler> getCommandType() { - return IRestartHandler.class; - } + return IRestartHandler.class; + } - @Override + @Override public ImageDescriptor getDisabledImageDescriptor() { - return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_DLCL_RESTART); - } + return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_DLCL_RESTART); + } - @Override + @Override public String getHelpContextId() { - return "org.eclipse.debug.ui.restart_action_context"; //$NON-NLS-1$ - } + return "org.eclipse.debug.ui.restart_action_context"; //$NON-NLS-1$ + } - @Override + @Override public ImageDescriptor getHoverImageDescriptor() { - return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_RESTART); - } + return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_RESTART); + } - @Override + @Override public String getId() { - return "org.eclipse.debug.ui.actions.Restart"; //$NON-NLS-1$ - } + return "org.eclipse.debug.ui.actions.Restart"; //$NON-NLS-1$ + } - @Override + @Override public ImageDescriptor getImageDescriptor() { - return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_RESTART); - } + return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_RESTART); + } - @Override + @Override public String getText() { - return ActionMessages.RestartCommandAction__text; - } + return ActionMessages.RestartCommandAction__text; + } - @Override + @Override public String getToolTipText() { - return ActionMessages.RestartCommandAction_tooltip; - } + return ActionMessages.RestartCommandAction_tooltip; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/RestartCommandActionDelegate.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/RestartCommandActionDelegate.java index dba235d9e..7f413108a 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/RestartCommandActionDelegate.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/RestartCommandActionDelegate.java @@ -29,36 +29,36 @@ import org.eclipse.ui.IWorkbenchWindowActionDelegate; */ public class RestartCommandActionDelegate implements IWorkbenchWindowActionDelegate, IActionDelegate2 { - private DebugCommandAction fDebugAction = new RestartCommandAction(); + private DebugCommandAction fDebugAction = new RestartCommandAction(); - @Override + @Override public void dispose() { - fDebugAction.dispose(); - } + fDebugAction.dispose(); + } - @Override + @Override public void init(IWorkbenchWindow window) { - fDebugAction.init(window); - } + fDebugAction.init(window); + } - @Override + @Override public void run(IAction action) { - fDebugAction.run(); - } + fDebugAction.run(); + } - @Override + @Override public void selectionChanged(IAction action, ISelection selection) { - // do nothing - } + // do nothing + } - @Override + @Override public void init(IAction action) { - fDebugAction.setActionProxy(action); + fDebugAction.setActionProxy(action); - } + } - @Override + @Override public void runWithEvent(IAction action, Event event) { - run(action); - } + run(action); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/RestartCommandHandler.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/RestartCommandHandler.java index e11c920b8..dab0b811a 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/RestartCommandHandler.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/RestartCommandHandler.java @@ -24,9 +24,9 @@ import org.eclipse.debug.ui.actions.DebugCommandHandler; */ public class RestartCommandHandler extends DebugCommandHandler { - @Override + @Override protected Class<IRestartHandler> getCommandType() { - return IRestartHandler.class; - } + return IRestartHandler.class; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/ResumeCommandAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/ResumeCommandAction.java index ffab51b78..b53706650 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/ResumeCommandAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/ResumeCommandAction.java @@ -31,40 +31,40 @@ public class ResumeCommandAction extends DebugCommandAction{ setActionDefinitionId("org.eclipse.debug.ui.commands.Resume"); //$NON-NLS-1$ } - @Override + @Override public String getText() { - return ActionMessages.ResumeAction_0; - } + return ActionMessages.ResumeAction_0; + } - @Override + @Override public String getHelpContextId() { - return "org.eclipse.debug.ui.resume_action_context"; //$NON-NLS-1$ - } + return "org.eclipse.debug.ui.resume_action_context"; //$NON-NLS-1$ + } - @Override + @Override public String getId() { - return "org.eclipse.debug.ui.debugview.toolbar.resume"; //$NON-NLS-1$ - } + return "org.eclipse.debug.ui.debugview.toolbar.resume"; //$NON-NLS-1$ + } - @Override + @Override public String getToolTipText() { - return ActionMessages.ResumeAction_3; - } + return ActionMessages.ResumeAction_3; + } - @Override + @Override public ImageDescriptor getDisabledImageDescriptor() { - return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_DLCL_RESUME); - } + return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_DLCL_RESUME); + } - @Override + @Override public ImageDescriptor getHoverImageDescriptor() { - return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_RESUME); - } + return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_RESUME); + } - @Override + @Override public ImageDescriptor getImageDescriptor() { - return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_RESUME); - } + return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_RESUME); + } @Override protected Class<IResumeHandler> getCommandType() { diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/ResumeCommandActionDelegate.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/ResumeCommandActionDelegate.java index 783322f51..762356a13 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/ResumeCommandActionDelegate.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/ResumeCommandActionDelegate.java @@ -29,36 +29,36 @@ import org.eclipse.ui.IWorkbenchWindowActionDelegate; */ public class ResumeCommandActionDelegate implements IWorkbenchWindowActionDelegate, IActionDelegate2 { - private DebugCommandAction fDebugAction = new ResumeCommandAction(); + private DebugCommandAction fDebugAction = new ResumeCommandAction(); - @Override + @Override public void dispose() { - fDebugAction.dispose(); - } + fDebugAction.dispose(); + } - @Override + @Override public void init(IWorkbenchWindow window) { - fDebugAction.init(window); - } + fDebugAction.init(window); + } - @Override + @Override public void run(IAction action) { - fDebugAction.run(); - } + fDebugAction.run(); + } - @Override + @Override public void selectionChanged(IAction action, ISelection selection) { - // do nothing - } + // do nothing + } - @Override + @Override public void init(IAction action) { - fDebugAction.setActionProxy(action); + fDebugAction.setActionProxy(action); - } + } - @Override + @Override public void runWithEvent(IAction action, Event event) { - run(action); - } + run(action); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/ResumeCommandHandler.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/ResumeCommandHandler.java index 7b701790d..a9e747135 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/ResumeCommandHandler.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/ResumeCommandHandler.java @@ -25,9 +25,9 @@ import org.eclipse.debug.ui.actions.DebugCommandHandler; */ public class ResumeCommandHandler extends DebugCommandHandler { - @Override + @Override protected Class<IResumeHandler> getCommandType() { - return IResumeHandler.class; - } + return IResumeHandler.class; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/StepIntoCommandAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/StepIntoCommandAction.java index 13387bc1a..6efe806ca 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/StepIntoCommandAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/StepIntoCommandAction.java @@ -31,40 +31,40 @@ public class StepIntoCommandAction extends DebugCommandAction { setActionDefinitionId("org.eclipse.debug.ui.commands.StepInto"); //$NON-NLS-1$ } - @Override + @Override public String getText() { - return ActionMessages.StepIntoAction_0; - } + return ActionMessages.StepIntoAction_0; + } - @Override + @Override public String getHelpContextId() { - return "org.eclipse.debug.ui.step_into_action_context"; //$NON-NLS-1$ - } + return "org.eclipse.debug.ui.step_into_action_context"; //$NON-NLS-1$ + } - @Override + @Override public String getId() { - return "org.eclipse.debug.ui.debugview.toolbar.stepInto"; //$NON-NLS-1$ - } + return "org.eclipse.debug.ui.debugview.toolbar.stepInto"; //$NON-NLS-1$ + } - @Override + @Override public String getToolTipText() { - return ActionMessages.StepIntoAction_3; - } + return ActionMessages.StepIntoAction_3; + } - @Override + @Override public ImageDescriptor getDisabledImageDescriptor() { - return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_DLCL_STEP_INTO); - } + return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_DLCL_STEP_INTO); + } - @Override + @Override public ImageDescriptor getHoverImageDescriptor() { - return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_STEP_INTO); - } + return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_STEP_INTO); + } - @Override + @Override public ImageDescriptor getImageDescriptor() { - return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_STEP_INTO); - } + return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_STEP_INTO); + } @Override protected Class<IStepIntoHandler> getCommandType() { diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/StepIntoCommandActionDelegate.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/StepIntoCommandActionDelegate.java index 0c7f9dac8..142262430 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/StepIntoCommandActionDelegate.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/StepIntoCommandActionDelegate.java @@ -21,10 +21,10 @@ package org.eclipse.debug.internal.ui.commands.actions; */ public class StepIntoCommandActionDelegate extends DebugCommandActionDelegate { - public StepIntoCommandActionDelegate() { - super(); - setAction(new StepIntoCommandAction()); - } + public StepIntoCommandActionDelegate() { + super(); + setAction(new StepIntoCommandAction()); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/StepIntoCommandHandler.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/StepIntoCommandHandler.java index 6479d08e3..be170bb87 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/StepIntoCommandHandler.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/StepIntoCommandHandler.java @@ -25,9 +25,9 @@ import org.eclipse.debug.ui.actions.DebugCommandHandler; */ public class StepIntoCommandHandler extends DebugCommandHandler { - @Override + @Override protected Class<IStepIntoHandler> getCommandType() { - return IStepIntoHandler.class; - } + return IStepIntoHandler.class; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/StepOverCommandAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/StepOverCommandAction.java index 9ef7235be..530a8254b 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/StepOverCommandAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/StepOverCommandAction.java @@ -32,40 +32,40 @@ public class StepOverCommandAction extends DebugCommandAction { setActionDefinitionId("org.eclipse.debug.ui.commands.StepOver"); //$NON-NLS-1$ } - @Override + @Override public String getText() { - return ActionMessages.StepOverAction_0; - } + return ActionMessages.StepOverAction_0; + } - @Override + @Override public ImageDescriptor getDisabledImageDescriptor() { - return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_DLCL_STEP_OVER); - } + return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_DLCL_STEP_OVER); + } - @Override + @Override public String getHelpContextId() { - return "org.eclipse.debug.ui.step_over_action_context"; //$NON-NLS-1$ - } + return "org.eclipse.debug.ui.step_over_action_context"; //$NON-NLS-1$ + } - @Override + @Override public ImageDescriptor getHoverImageDescriptor() { - return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_STEP_OVER); - } + return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_STEP_OVER); + } - @Override + @Override public String getId() { - return "org.eclipse.debug.ui.debugview.toolbar.stepOver"; //$NON-NLS-1$ - } + return "org.eclipse.debug.ui.debugview.toolbar.stepOver"; //$NON-NLS-1$ + } - @Override + @Override public ImageDescriptor getImageDescriptor() { - return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_STEP_OVER); - } + return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_STEP_OVER); + } - @Override + @Override public String getToolTipText() { - return ActionMessages.StepOverAction_3; - } + return ActionMessages.StepOverAction_3; + } @Override protected Class<IStepOverHandler> getCommandType() { diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/StepOverCommandActionDelegate.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/StepOverCommandActionDelegate.java index 3dfa7fe3f..a0d6fa9fa 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/StepOverCommandActionDelegate.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/StepOverCommandActionDelegate.java @@ -23,15 +23,15 @@ import org.eclipse.jface.action.IAction; */ public class StepOverCommandActionDelegate extends DebugCommandActionDelegate { - public StepOverCommandActionDelegate() { - super(); - setAction(new StepOverCommandAction()); - } + public StepOverCommandActionDelegate() { + super(); + setAction(new StepOverCommandAction()); + } - @Override + @Override public void init(IAction action) { - super.init(action); - } + super.init(action); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/StepOverCommandHandler.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/StepOverCommandHandler.java index a0f65c34f..0200431d6 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/StepOverCommandHandler.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/StepOverCommandHandler.java @@ -24,9 +24,9 @@ import org.eclipse.debug.ui.actions.DebugCommandHandler; */ public class StepOverCommandHandler extends DebugCommandHandler { - @Override + @Override protected Class<IStepOverHandler> getCommandType() { - return IStepOverHandler.class; - } + return IStepOverHandler.class; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/StepReturnCommandAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/StepReturnCommandAction.java index 15b1721fb..171e9c5dd 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/StepReturnCommandAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/StepReturnCommandAction.java @@ -32,40 +32,40 @@ public class StepReturnCommandAction extends DebugCommandAction { setActionDefinitionId("org.eclipse.debug.ui.commands.StepReturn"); //$NON-NLS-1$ } - @Override + @Override public ImageDescriptor getDisabledImageDescriptor() { - return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_DLCL_STEP_RETURN); - } + return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_DLCL_STEP_RETURN); + } - @Override + @Override public String getHelpContextId() { - return "org.eclipse.debug.ui.step_return_action_context"; //$NON-NLS-1$ - } + return "org.eclipse.debug.ui.step_return_action_context"; //$NON-NLS-1$ + } - @Override + @Override public ImageDescriptor getHoverImageDescriptor() { - return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_STEP_RETURN); - } + return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_STEP_RETURN); + } - @Override + @Override public String getId() { - return "org.eclipse.debug.ui.debugview.toolbar.stepReturn"; //$NON-NLS-1$ - } + return "org.eclipse.debug.ui.debugview.toolbar.stepReturn"; //$NON-NLS-1$ + } - @Override + @Override public ImageDescriptor getImageDescriptor() { - return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_STEP_RETURN); - } + return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_STEP_RETURN); + } - @Override + @Override public String getToolTipText() { - return ActionMessages.StepReturnAction_2; - } + return ActionMessages.StepReturnAction_2; + } - @Override + @Override public String getText() { - return ActionMessages.StepReturnAction_3; - } + return ActionMessages.StepReturnAction_3; + } @Override protected Class<IStepReturnHandler> getCommandType() { diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/StepReturnCommandActionDelegate.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/StepReturnCommandActionDelegate.java index 847f85f68..8a1cab3b6 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/StepReturnCommandActionDelegate.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/StepReturnCommandActionDelegate.java @@ -21,10 +21,10 @@ package org.eclipse.debug.internal.ui.commands.actions; */ public class StepReturnCommandActionDelegate extends DebugCommandActionDelegate { - public StepReturnCommandActionDelegate() { - super(); - setAction(new StepReturnCommandAction()); - } + public StepReturnCommandActionDelegate() { + super(); + setAction(new StepReturnCommandAction()); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/StepReturnCommandHandler.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/StepReturnCommandHandler.java index c838fde75..02aacafd2 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/StepReturnCommandHandler.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/StepReturnCommandHandler.java @@ -25,9 +25,9 @@ import org.eclipse.debug.ui.actions.DebugCommandHandler; */ public class StepReturnCommandHandler extends DebugCommandHandler { - @Override + @Override protected Class<IStepReturnHandler> getCommandType() { - return IStepReturnHandler.class; - } + return IStepReturnHandler.class; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/SuspendCommandAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/SuspendCommandAction.java index a25e4a59d..e32cd6bae 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/SuspendCommandAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/SuspendCommandAction.java @@ -27,44 +27,44 @@ import org.eclipse.jface.resource.ImageDescriptor; */ public class SuspendCommandAction extends DebugCommandAction { - public SuspendCommandAction() { - setActionDefinitionId("org.eclipse.debug.ui.commands.Suspend"); //$NON-NLS-1$ - } + public SuspendCommandAction() { + setActionDefinitionId("org.eclipse.debug.ui.commands.Suspend"); //$NON-NLS-1$ + } - @Override + @Override public String getText() { - return ActionMessages.SuspendAction_0; - } + return ActionMessages.SuspendAction_0; + } - @Override + @Override public String getHelpContextId() { - return "org.eclipse.debug.ui.suspend_action_context"; //$NON-NLS-1$ - } + return "org.eclipse.debug.ui.suspend_action_context"; //$NON-NLS-1$ + } - @Override + @Override public String getId() { - return "org.eclipse.debug.ui.commands.Suspend"; //$NON-NLS-1$ - } + return "org.eclipse.debug.ui.commands.Suspend"; //$NON-NLS-1$ + } - @Override + @Override public String getToolTipText() { - return ActionMessages.SuspendAction_3; - } + return ActionMessages.SuspendAction_3; + } - @Override + @Override public ImageDescriptor getDisabledImageDescriptor() { - return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_DLCL_SUSPEND); - } + return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_DLCL_SUSPEND); + } - @Override + @Override public ImageDescriptor getHoverImageDescriptor() { - return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_SUSPEND); - } + return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_SUSPEND); + } - @Override + @Override public ImageDescriptor getImageDescriptor() { - return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_SUSPEND); - } + return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_SUSPEND); + } @Override protected Class<ISuspendHandler> getCommandType() { diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/SuspendCommandActionDelegate.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/SuspendCommandActionDelegate.java index 3c7386d56..de72598f5 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/SuspendCommandActionDelegate.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/SuspendCommandActionDelegate.java @@ -21,10 +21,10 @@ package org.eclipse.debug.internal.ui.commands.actions; */ public class SuspendCommandActionDelegate extends DebugCommandActionDelegate { - public SuspendCommandActionDelegate() { - super(); - setAction(new SuspendCommandAction()); - } + public SuspendCommandActionDelegate() { + super(); + setAction(new SuspendCommandAction()); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/SuspendCommandHandler.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/SuspendCommandHandler.java index b2ad3106a..8c8e8e20b 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/SuspendCommandHandler.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/SuspendCommandHandler.java @@ -25,9 +25,9 @@ import org.eclipse.debug.ui.actions.DebugCommandHandler; */ public class SuspendCommandHandler extends DebugCommandHandler { - @Override + @Override protected Class<ISuspendHandler> getCommandType() { - return ISuspendHandler.class; - } + return ISuspendHandler.class; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/TerminateAndRelaunchAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/TerminateAndRelaunchAction.java index 65c811c6b..31a513e95 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/TerminateAndRelaunchAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/TerminateAndRelaunchAction.java @@ -39,9 +39,9 @@ import org.eclipse.jface.viewers.StructuredSelection; */ public class TerminateAndRelaunchAction extends DebugCommandAction { - @Override + @Override public void postExecute(IRequest request, final Object[] targets) { - if (request.getStatus() == null || request.getStatus().isOK()) { + if (request.getStatus() == null || request.getStatus().isOK()) { DebugUIPlugin.getStandardDisplay().asyncExec(() -> { // Must be run in the UI thread since the launch can require // prompting to proceed @@ -52,26 +52,26 @@ public class TerminateAndRelaunchAction extends DebugCommandAction { } } }); - } - } + } + } - @Override + @Override protected ISelection getContext() { - // Convert action context to contain only launch objects (bug 356651). - ISelection context = super.getContext(); - if (context instanceof IStructuredSelection && !context.isEmpty()) { - IStructuredSelection ss = (IStructuredSelection)context; + // Convert action context to contain only launch objects (bug 356651). + ISelection context = super.getContext(); + if (context instanceof IStructuredSelection && !context.isEmpty()) { + IStructuredSelection ss = (IStructuredSelection)context; Set<ILaunch> launches = new HashSet<>(ss.size()); for (Iterator<Object> itr = ss.iterator(); itr.hasNext();) { - ILaunch launch = DebugUIPlugin.getLaunch(itr.next()); - if (launch != null) { - launches.add(launch); - } - } - return new StructuredSelection(launches.toArray()); - } - return super.getContext(); - } + ILaunch launch = DebugUIPlugin.getLaunch(itr.next()); + if (launch != null) { + launches.add(launch); + } + } + return new StructuredSelection(launches.toArray()); + } + return super.getContext(); + } @Override @@ -94,54 +94,54 @@ public class TerminateAndRelaunchAction extends DebugCommandAction { super.debugContextChanged(event); } - protected boolean canRelaunch(Object element) { - ILaunch launch = DebugUIPlugin.getLaunch(element); - if (launch != null) { - ILaunchConfiguration configuration = launch.getLaunchConfiguration(); - if (configuration != null) { - return LaunchConfigurationManager.isVisible(configuration); - } - } + protected boolean canRelaunch(Object element) { + ILaunch launch = DebugUIPlugin.getLaunch(element); + if (launch != null) { + ILaunchConfiguration configuration = launch.getLaunchConfiguration(); + if (configuration != null) { + return LaunchConfigurationManager.isVisible(configuration); + } + } return false; - } + } - @Override + @Override public String getActionDefinitionId() { - return ActionMessages.TerminateAndRelaunchAction_0; - } + return ActionMessages.TerminateAndRelaunchAction_0; + } - @Override + @Override public String getHelpContextId() { - return "org.eclipse.debug.ui.terminate_and_relaunch_action_context"; //$NON-NLS-1$ - } + return "org.eclipse.debug.ui.terminate_and_relaunch_action_context"; //$NON-NLS-1$ + } - @Override + @Override public String getId() { - return "org.eclipse.debug.ui.debugview.popupMenu.TerminateAndRelaunch"; //$NON-NLS-1$ - } + return "org.eclipse.debug.ui.debugview.popupMenu.TerminateAndRelaunch"; //$NON-NLS-1$ + } - @Override + @Override public String getText() { - return ActionMessages.TerminateAndRelaunchAction_3; - } + return ActionMessages.TerminateAndRelaunchAction_3; + } - @Override + @Override public String getToolTipText() { - return ActionMessages.TerminateAndRelaunchAction_4; - } + return ActionMessages.TerminateAndRelaunchAction_4; + } - @Override + @Override public ImageDescriptor getDisabledImageDescriptor() { - return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_DLCL_TERMINATE_AND_RELAUNCH); - } + return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_DLCL_TERMINATE_AND_RELAUNCH); + } - @Override + @Override public ImageDescriptor getHoverImageDescriptor() { - return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_TERMINATE_AND_RELAUNCH); - } + return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_TERMINATE_AND_RELAUNCH); + } - @Override + @Override public ImageDescriptor getImageDescriptor() { - return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_TERMINATE_AND_RELAUNCH); - } + return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_TERMINATE_AND_RELAUNCH); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/TerminateAndRemoveAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/TerminateAndRemoveAction.java index 3eaf360ca..40ad431b6 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/TerminateAndRemoveAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/TerminateAndRemoveAction.java @@ -53,120 +53,120 @@ public class TerminateAndRemoveAction extends DebugCommandAction { */ private IWorkbenchPart fMyPart = null; - @Override + @Override public String getText() { - return ActionMessages.TerminateAndRemoveAction_0; - } + return ActionMessages.TerminateAndRemoveAction_0; + } - @Override + @Override public String getHelpContextId() { - return "org.eclipse.debug.ui.terminate_and_remove_action_context"; //$NON-NLS-1$ - } + return "org.eclipse.debug.ui.terminate_and_remove_action_context"; //$NON-NLS-1$ + } - @Override + @Override public String getId() { - return "org.eclipse.debug.ui.debugview.popupMenu.terminateAndRemove"; //$NON-NLS-1$ - } + return "org.eclipse.debug.ui.debugview.popupMenu.terminateAndRemove"; //$NON-NLS-1$ + } - @Override + @Override public String getToolTipText() { - return ActionMessages.TerminateAndRemoveAction_3; - } + return ActionMessages.TerminateAndRemoveAction_3; + } - @Override + @Override public ImageDescriptor getDisabledImageDescriptor() { - return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_DLCL_TERMINATE_AND_REMOVE); - } + return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_DLCL_TERMINATE_AND_REMOVE); + } - @Override + @Override public ImageDescriptor getHoverImageDescriptor() { - return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_TERMINATE_AND_REMOVE); - } + return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_TERMINATE_AND_REMOVE); + } - @Override + @Override public ImageDescriptor getImageDescriptor() { - return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_TERMINATE_AND_REMOVE); - } + return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_TERMINATE_AND_REMOVE); + } - @Override + @Override protected Class<ITerminateHandler> getCommandType() { return ITerminateHandler.class; } - @Override + @Override public void debugContextChanged(DebugContextEvent event) { - boolean isAllTerminated = true; - ISelection context = event.getContext(); - if (context instanceof IStructuredSelection) { - Object[] elements = ((IStructuredSelection)context).toArray(); - for (int i = 0; i < elements.length; i++) { - if (!isTerminated(elements[i])) { - isAllTerminated = false; - break; - } - } - } - // IF all elements are terminated, we don't need to query the terminate handler, just - // enable the action, which whill just remove the terminated launches (bug 324959). - fCanTerminate = !isAllTerminated; - if (isAllTerminated) { - setEnabled(true); - } else { - super.debugContextChanged(event); - } - } - - protected boolean isTerminated(Object element) { - ILaunch launch = DebugUIPlugin.getLaunch(element); - if (launch != null) { - return launch.isTerminated(); - } - return false; - } - - - @Override + boolean isAllTerminated = true; + ISelection context = event.getContext(); + if (context instanceof IStructuredSelection) { + Object[] elements = ((IStructuredSelection)context).toArray(); + for (int i = 0; i < elements.length; i++) { + if (!isTerminated(elements[i])) { + isAllTerminated = false; + break; + } + } + } + // IF all elements are terminated, we don't need to query the terminate handler, just + // enable the action, which whill just remove the terminated launches (bug 324959). + fCanTerminate = !isAllTerminated; + if (isAllTerminated) { + setEnabled(true); + } else { + super.debugContextChanged(event); + } + } + + protected boolean isTerminated(Object element) { + ILaunch launch = DebugUIPlugin.getLaunch(element); + if (launch != null) { + return launch.isTerminated(); + } + return false; + } + + + @Override protected void postExecute(IRequest request, Object[] targets) { - IStatus status = request.getStatus(); - if(status == null || status.isOK()) { - for (int i = 0; i < targets.length; i++) { - ILaunch launch = DebugUIPlugin.getLaunch(targets[i]); - if (launch != null) { + IStatus status = request.getStatus(); + if(status == null || status.isOK()) { + for (int i = 0; i < targets.length; i++) { + ILaunch launch = DebugUIPlugin.getLaunch(targets[i]); + if (launch != null) { DebugPlugin.getDefault().getLaunchManager().removeLaunch(launch); } - } - } - } + } + } + } - @Override + @Override public void runWithEvent(Event event) { - if (fCanTerminate) { + if (fCanTerminate) { IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); - if (window != null) { - if (!MessageDialog.openQuestion(window.getShell(), DebugUIViewsMessages.LaunchView_Terminate_and_Remove_1, DebugUIViewsMessages.LaunchView_Terminate_and_remove_selected__2)) { + if (window != null) { + if (!MessageDialog.openQuestion(window.getShell(), DebugUIViewsMessages.LaunchView_Terminate_and_Remove_1, DebugUIViewsMessages.LaunchView_Terminate_and_remove_selected__2)) { return; } - } - super.runWithEvent(event); - } else { - // don't terminate, just remove - // TODO: make #getContext() API in next release - ISelection sel = null; - if (fMyPart != null) { - sel = getDebugContextService().getActiveContext(fMyPart.getSite().getId()); - } else { - sel = getDebugContextService().getActiveContext(); - } - if (sel instanceof IStructuredSelection) { - IStructuredSelection ss = (IStructuredSelection) sel; - postExecute(new Request(), ss.toArray()); - } - } - } - - @Override + } + super.runWithEvent(event); + } else { + // don't terminate, just remove + // TODO: make #getContext() API in next release + ISelection sel = null; + if (fMyPart != null) { + sel = getDebugContextService().getActiveContext(fMyPart.getSite().getId()); + } else { + sel = getDebugContextService().getActiveContext(); + } + if (sel instanceof IStructuredSelection) { + IStructuredSelection ss = (IStructuredSelection) sel; + postExecute(new Request(), ss.toArray()); + } + } + } + + @Override public void init(IWorkbenchPart part) { - super.init(part); // TODO: if #getContext() was API, this would not be needed - fMyPart = part; - } + super.init(part); // TODO: if #getContext() was API, this would not be needed + fMyPart = part; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/TerminateCommandAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/TerminateCommandAction.java index 84ae64f28..8c60f211a 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/TerminateCommandAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/TerminateCommandAction.java @@ -31,40 +31,40 @@ public class TerminateCommandAction extends DebugCommandAction { setActionDefinitionId("org.eclipse.debug.ui.commands.Terminate"); //$NON-NLS-1$ } - @Override + @Override public String getText() { - return ActionMessages.TerminateAction_0; - } + return ActionMessages.TerminateAction_0; + } - @Override + @Override public String getHelpContextId() { - return "org.eclipse.debug.ui.terminate_action_context"; //$NON-NLS-1$ - } + return "org.eclipse.debug.ui.terminate_action_context"; //$NON-NLS-1$ + } - @Override + @Override public String getId() { - return "org.eclipse.debug.ui.debugview.toolbar.terminate"; //$NON-NLS-1$ - } + return "org.eclipse.debug.ui.debugview.toolbar.terminate"; //$NON-NLS-1$ + } - @Override + @Override public String getToolTipText() { - return ActionMessages.TerminateAction_3; - } + return ActionMessages.TerminateAction_3; + } - @Override + @Override public ImageDescriptor getDisabledImageDescriptor() { - return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_DLCL_TERMINATE); - } + return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_DLCL_TERMINATE); + } - @Override + @Override public ImageDescriptor getHoverImageDescriptor() { - return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_LCL_TERMINATE); - } + return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_LCL_TERMINATE); + } - @Override + @Override public ImageDescriptor getImageDescriptor() { - return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_LCL_TERMINATE); - } + return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_LCL_TERMINATE); + } @Override protected Class<ITerminateHandler> getCommandType() { diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/TerminateCommandActionDelegate.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/TerminateCommandActionDelegate.java index d2c5d1ce5..7f1a77480 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/TerminateCommandActionDelegate.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/TerminateCommandActionDelegate.java @@ -21,10 +21,10 @@ package org.eclipse.debug.internal.ui.commands.actions; */ public class TerminateCommandActionDelegate extends DebugCommandActionDelegate { - public TerminateCommandActionDelegate() { - super(); - setAction(new TerminateCommandAction()); - } + public TerminateCommandActionDelegate() { + super(); + setAction(new TerminateCommandAction()); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/TerminateCommandHandler.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/TerminateCommandHandler.java index 9fc2cda56..a0a67efa9 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/TerminateCommandHandler.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/TerminateCommandHandler.java @@ -25,9 +25,9 @@ import org.eclipse.debug.ui.actions.DebugCommandHandler; */ public class TerminateCommandHandler extends DebugCommandHandler { - @Override + @Override protected Class<ITerminateHandler> getCommandType() { - return ITerminateHandler.class; - } + return ITerminateHandler.class; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/ToggleStepFiltersAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/ToggleStepFiltersAction.java index bd69e7102..60b5eb8ad 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/ToggleStepFiltersAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/ToggleStepFiltersAction.java @@ -111,28 +111,28 @@ public class ToggleStepFiltersAction extends DebugCommandAction implements IPref return IStepFiltersHandler.class; } - /** - * @see org.eclipse.debug.internal.ui.commands.actions.DebugCommandAction#run() - */ - @Override + /** + * @see org.eclipse.debug.internal.ui.commands.actions.DebugCommandAction#run() + */ + @Override public void run() { - // ignore initial call to run from abstract debug view - // that runs the action to initialize it's state when - // the workbench persisted the action as "on" - if (fInitialized) { - DebugUITools.setUseStepFilters(!DebugUITools.isUseStepFilters()); - } else { - fInitialized = true; - } - } - - /** - * @see org.eclipse.jface.action.Action#getStyle() - */ - @Override + // ignore initial call to run from abstract debug view + // that runs the action to initialize it's state when + // the workbench persisted the action as "on" + if (fInitialized) { + DebugUITools.setUseStepFilters(!DebugUITools.isUseStepFilters()); + } else { + fInitialized = true; + } + } + + /** + * @see org.eclipse.jface.action.Action#getStyle() + */ + @Override public int getStyle() { - return AS_CHECK_BOX; - } + return AS_CHECK_BOX; + } /** * @see org.eclipse.debug.internal.ui.commands.actions.DebugCommandAction#debugContextChanged(org.eclipse.debug.ui.contexts.DebugContextEvent) @@ -165,15 +165,15 @@ public class ToggleStepFiltersAction extends DebugCommandAction implements IPref initState(); } - /** - * Initializes the state, by adding this action as a property listener - */ - protected void initState() { + /** + * Initializes the state, by adding this action as a property listener + */ + protected void initState() { IEclipsePreferences node = InstanceScope.INSTANCE.getNode(DebugPlugin.getUniqueIdentifier()); if (node != null) { node.addPreferenceChangeListener(this); } - } + } /** * @see org.eclipse.debug.internal.ui.commands.actions.DebugCommandAction#dispose() diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/ToggleStepFiltersCommandActionDelegate.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/ToggleStepFiltersCommandActionDelegate.java index 10b369b84..983fdf372 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/ToggleStepFiltersCommandActionDelegate.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/ToggleStepFiltersCommandActionDelegate.java @@ -24,17 +24,17 @@ import org.eclipse.jface.action.IAction; */ public class ToggleStepFiltersCommandActionDelegate extends DebugCommandActionDelegate { - /** - * Constructor - */ - public ToggleStepFiltersCommandActionDelegate() { - super(); - setAction(new ToggleStepFiltersAction()); - } + /** + * Constructor + */ + public ToggleStepFiltersCommandActionDelegate() { + super(); + setAction(new ToggleStepFiltersAction()); + } - @Override + @Override public void init(IAction action) { - super.init(action); - action.setChecked(DebugUITools.isUseStepFilters()); - } + super.init(action); + action.setChecked(DebugUITools.isUseStepFilters()); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/ToggleStepFiltersCommandHandler.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/ToggleStepFiltersCommandHandler.java index 8aa7376e7..626f89979 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/ToggleStepFiltersCommandHandler.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/ToggleStepFiltersCommandHandler.java @@ -25,9 +25,9 @@ import org.eclipse.debug.ui.actions.DebugCommandHandler; */ public class ToggleStepFiltersCommandHandler extends DebugCommandHandler { - @Override + @Override protected Class<IStepFiltersHandler> getCommandType() { - return IStepFiltersHandler.class; - } + return IStepFiltersHandler.class; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/contexts/DebugContextManager.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/contexts/DebugContextManager.java index 26189abdc..2accbd644 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/contexts/DebugContextManager.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/contexts/DebugContextManager.java @@ -115,11 +115,11 @@ public class DebugContextManager implements IDebugContextManager { @Override public void windowClosed(final IWorkbenchWindow window) { - DebugWindowContextService service = fServices.get(window); - if (service != null) { - fServices.remove(window); - service.dispose(); - } + DebugWindowContextService service = fServices.get(window); + if (service != null) { + fServices.remove(window); + service.dispose(); + } } @Override diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/contexts/DebugContextSourceProvider.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/contexts/DebugContextSourceProvider.java index 69add3b9c..961af8776 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/contexts/DebugContextSourceProvider.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/contexts/DebugContextSourceProvider.java @@ -35,12 +35,12 @@ import org.eclipse.ui.services.IEvaluationService; */ public class DebugContextSourceProvider extends AbstractSourceProvider implements IDebugContextListener { - /** - * The names of the sources supported by this source provider. - */ - private static final String[] PROVIDED_SOURCE_NAMES = new String[] { IDebugUIConstants.DEBUG_CONTEXT_SOURCE_NAME }; + /** + * The names of the sources supported by this source provider. + */ + private static final String[] PROVIDED_SOURCE_NAMES = new String[] { IDebugUIConstants.DEBUG_CONTEXT_SOURCE_NAME }; - private final IDebugContextService fDebugContextService; + private final IDebugContextService fDebugContextService; private final IEvaluationService fEvaluationService; @@ -59,7 +59,7 @@ public class DebugContextSourceProvider extends AbstractSourceProvider implement @Override public void debugContextChanged(DebugContextEvent event) { final Map<String, ISelection> values = new HashMap<>(1); - values.put(IDebugUIConstants.DEBUG_CONTEXT_SOURCE_NAME, event.getContext()); + values.put(IDebugUIConstants.DEBUG_CONTEXT_SOURCE_NAME, event.getContext()); // make sure fireSourceChanged is called on the UI thread if (Display.getCurrent() == null) { DebugUIPlugin.getStandardDisplay().asyncExec(() -> fireSourceChanged(ISources.ACTIVE_CURRENT_SELECTION, values)); @@ -82,8 +82,8 @@ public class DebugContextSourceProvider extends AbstractSourceProvider implement @Override public Map getCurrentState() { Map<String, ISelection> currentState = new HashMap<>(1); - currentState.put(IDebugUIConstants.DEBUG_CONTEXT_SOURCE_NAME, fDebugContextService.getActiveContext()); - return currentState; + currentState.put(IDebugUIConstants.DEBUG_CONTEXT_SOURCE_NAME, fDebugContextService.getActiveContext()); + return currentState; } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/contexts/DebugModelContextBindingManager.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/contexts/DebugModelContextBindingManager.java index e4a08ec34..73e9c12d1 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/contexts/DebugModelContextBindingManager.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/contexts/DebugModelContextBindingManager.java @@ -145,14 +145,14 @@ public class DebugModelContextBindingManager implements IDebugContextListener, I String modelIdentifier = element.getAttribute(ATTR_DEBUG_MODEL_ID); String contextId = element.getAttribute(ATTR_CONTEXT_ID); synchronized (this) { - if (modelIdentifier != null && contextId != null) { + if (modelIdentifier != null && contextId != null) { List<String> contextIds = fModelToContextIds.get(modelIdentifier); - if (contextIds == null) { + if (contextIds == null) { contextIds = new ArrayList<>(); - fModelToContextIds.put(modelIdentifier, contextIds); - } - contextIds.add(contextId); - } + fModelToContextIds.put(modelIdentifier, contextIds); + } + contextIds.add(contextId); + } } } } @@ -211,20 +211,20 @@ public class DebugModelContextBindingManager implements IDebugContextListener, I List<String> toEnable = new ArrayList<>(modelIds.length); synchronized (this) { Set<String> alreadyEnabled = fLaunchToModelIds.get(launch); - if (alreadyEnabled == null) { + if (alreadyEnabled == null) { alreadyEnabled = new HashSet<>(); - fLaunchToModelIds.put(launch, alreadyEnabled); - } - for (int i = 0; i < modelIds.length; i++) { - String id = modelIds[i]; - if (!alreadyEnabled.contains(id)) { - alreadyEnabled.add(id); - toEnable.add(id); - } - } + fLaunchToModelIds.put(launch, alreadyEnabled); + } + for (int i = 0; i < modelIds.length; i++) { + String id = modelIds[i]; + if (!alreadyEnabled.contains(id)) { + alreadyEnabled.add(id); + toEnable.add(id); + } + } } for (int i = 0; i < toEnable.size(); i++) { - activateModel(toEnable.get(i), launch); + activateModel(toEnable.get(i), launch); } enableActivitiesFor(modelIds); @@ -239,17 +239,17 @@ public class DebugModelContextBindingManager implements IDebugContextListener, I */ private void activateModel(String modelId, ILaunch launch) { List<String> contextIds = null; - synchronized (this) { - contextIds = fModelToContextIds.get(modelId); - if (contextIds == null) { - // if there are no contexts for a model, the base debug context should - // be activated (i.e. a debug model with no org.eclipse.ui.contexts and - // associated org.eclipse.debug.ui.modelContextBindings) + synchronized (this) { + contextIds = fModelToContextIds.get(modelId); + if (contextIds == null) { + // if there are no contexts for a model, the base debug context should + // be activated (i.e. a debug model with no org.eclipse.ui.contexts and + // associated org.eclipse.debug.ui.modelContextBindings) contextIds = new ArrayList<>(); - contextIds.add(DEBUG_CONTEXT); - fModelToContextIds.put(modelId, contextIds); - } - } + contextIds.add(DEBUG_CONTEXT); + fModelToContextIds.put(modelId, contextIds); + } + } for (String id : contextIds) { activateContext(id, launch); } @@ -303,7 +303,7 @@ public class DebugModelContextBindingManager implements IDebugContextListener, I */ private String[] getDebugModelIds(Object object) { if (object instanceof IAdaptable) { - IDebugModelProvider modelProvider= ((IAdaptable)object).getAdapter(IDebugModelProvider.class); + IDebugModelProvider modelProvider= ((IAdaptable)object).getAdapter(IDebugModelProvider.class); if (modelProvider != null) { String[] modelIds= modelProvider.getModelIdentifiers(); if (modelIds != null) { @@ -342,8 +342,8 @@ public class DebugModelContextBindingManager implements IDebugContextListener, I ILaunch launch = launches[i]; List<IContextActivation> activations; synchronized(this) { - activations = fLanuchToContextActivations.remove(launch); - fLaunchToModelIds.remove(launch); + activations = fLanuchToContextActivations.remove(launch); + fLaunchToModelIds.remove(launch); } if (activations != null) { final List<IContextActivation> _activations = activations; @@ -389,13 +389,13 @@ public class DebugModelContextBindingManager implements IDebugContextListener, I String modelId = modelIds[i]; synchronized (this) { List<String> contextIds = fModelToContextIds.get(modelId); - if (contextIds != null) { + if (contextIds != null) { for (String contextId : contextIds) { - if (!workbenchContexts.contains(contextId)) { - workbenchContexts.add(contextId); - } - } - } + if (!workbenchContexts.contains(contextId)) { + workbenchContexts.add(contextId); + } + } + } } } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/contexts/DebugWindowContextService.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/contexts/DebugWindowContextService.java index 15d529686..2252c2baa 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/contexts/DebugWindowContextService.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/contexts/DebugWindowContextService.java @@ -79,7 +79,7 @@ public class DebugWindowContextService implements IDebugContextService, IPartLis @Override public synchronized void addDebugContextProvider(IDebugContextProvider provider) { - if (fWindow == null) + if (fWindow == null) { return; // disposed } @@ -89,26 +89,26 @@ public class DebugWindowContextService implements IDebugContextService, IPartLis // Check if provider is a window context provider boolean canSetActive = true; - if (provider instanceof IDebugContextProvider2) { - canSetActive = ((IDebugContextProvider2) provider).isWindowContextProvider(); - } - // Make the provider active if matches the active part. Otherwise, it - // may still become the active provider if fProviders.isEmpty(). + if (provider instanceof IDebugContextProvider2) { + canSetActive = ((IDebugContextProvider2) provider).isWindowContextProvider(); + } + // Make the provider active if matches the active part. Otherwise, it + // may still become the active provider if fProviders.isEmpty(). if (canSetActive) { - IWorkbenchPart activePart = null; - IWorkbenchPage activePage = fWindow.getActivePage(); - if (activePage != null) { - activePart = activePage.getActivePart(); - } - canSetActive = (activePart == null && part == null) || (activePart != null && activePart.equals(part)); + IWorkbenchPart activePart = null; + IWorkbenchPage activePage = fWindow.getActivePage(); + if (activePage != null) { + activePart = activePage.getActivePart(); + } + canSetActive = (activePart == null && part == null) || (activePart != null && activePart.equals(part)); } if (canSetActive) { - fProviders.add(0, provider); + fProviders.add(0, provider); } else { - fProviders.add(provider); + fProviders.add(provider); } - notify(provider); + notify(provider); provider.addDebugContextListener(this); } @@ -124,16 +124,16 @@ public class DebugWindowContextService implements IDebugContextService, IPartLis } IDebugContextProvider activeProvider = getActiveProvider(); if (index == 0) { - if (activeProvider != null) { - notify(activeProvider); - } else { - // Removed last provider. Send empty selection to all listeners. - notify(new DebugContextEvent(provider, StructuredSelection.EMPTY, DebugContextEvent.ACTIVATED)); - } + if (activeProvider != null) { + notify(activeProvider); + } else { + // Removed last provider. Send empty selection to all listeners. + notify(new DebugContextEvent(provider, StructuredSelection.EMPTY, DebugContextEvent.ACTIVATED)); + } } else { - // Notify listeners of the removed provider with the active window context. - notifyPart(provider.getPart(), - new DebugContextEvent(activeProvider, getActiveContext(), DebugContextEvent.ACTIVATED)); + // Notify listeners of the removed provider with the active window context. + notifyPart(provider.getPart(), + new DebugContextEvent(activeProvider, getActiveContext(), DebugContextEvent.ACTIVATED)); } } provider.removeDebugContextListener(this); @@ -191,9 +191,9 @@ public class DebugWindowContextService implements IDebugContextService, IPartLis } protected void notify(DebugContextEvent event) { - // Allow handling for case where getActiveProvider() == null. - // This can happen upon removeContextProvider() called on last available - // provider (bug 360637). + // Allow handling for case where getActiveProvider() == null. + // This can happen upon removeContextProvider() called on last available + // provider (bug 360637). IDebugContextProvider provider = getActiveProvider(); IWorkbenchPart part = event.getDebugContextProvider().getPart(); @@ -215,11 +215,11 @@ public class DebugWindowContextService implements IDebugContextService, IPartLis } protected void notifyPart(IWorkbenchPart part, DebugContextEvent event) { - if (part != null) { - notify(event, getListeners(part)); - notify(event, getPostListeners(part)); - } - } + if (part != null) { + notify(event, getListeners(part)); + notify(event, getPostListeners(part)); + } + } protected void notify(final DebugContextEvent event, ListenerList<IDebugContextListener> listeners) { for (final IDebugContextListener listener : listeners) { @@ -237,12 +237,12 @@ public class DebugWindowContextService implements IDebugContextService, IPartLis } protected ListenerList<IDebugContextListener> getListeners(IWorkbenchPart part) { - String id = null; - if (part != null) { - id = getCombinedPartId(part); + String id = null; + if (part != null) { + id = getCombinedPartId(part); ListenerList<IDebugContextListener> listenerList = fListenersByPartId.get(id); return listenerList != null ? listenerList : new ListenerList<>(); - } else { + } else { ListenerList<IDebugContextListener> listenerList = fListenersByPartId.get(null); ListenerList<IDebugContextListener> retVal = new ListenerList<>(); if (listenerList != null) { @@ -252,15 +252,15 @@ public class DebugWindowContextService implements IDebugContextService, IPartLis } outer: for (Iterator<String> itr = fListenersByPartId.keySet().iterator(); itr.hasNext();) { - String listenerPartId = itr.next(); - for (int i = 0; i < fProviders.size(); i++) { - String providerPartId = getCombinedPartId(fProviders.get(i).getPart()); - if ((listenerPartId == null && providerPartId == null) || - (listenerPartId != null && listenerPartId.equals(providerPartId))) - { - continue outer; - } - } + String listenerPartId = itr.next(); + for (int i = 0; i < fProviders.size(); i++) { + String providerPartId = getCombinedPartId(fProviders.get(i).getPart()); + if ((listenerPartId == null && providerPartId == null) || + (listenerPartId != null && listenerPartId.equals(providerPartId))) + { + continue outer; + } + } ListenerList<IDebugContextListener> listenersForPart = fListenersByPartId.get(listenerPartId); if (listenersForPart != null) { for (IDebugContextListener iDebugContextListener : listenersForPart) { @@ -270,7 +270,7 @@ public class DebugWindowContextService implements IDebugContextService, IPartLis } } return retVal; - } + } } protected ListenerList<IDebugContextListener> getPostListeners(IWorkbenchPart part) { @@ -412,16 +412,16 @@ public class DebugWindowContextService implements IDebugContextService, IPartLis } private String getCombinedPartId(IWorkbenchPart part) { - if (part == null) { - return null; - } else if (part.getSite() instanceof IViewSite) { - IViewSite site = (IViewSite)part.getSite(); - return getCombinedPartId(site.getId(), site.getSecondaryId()); - - } else { - return part.getSite().getId(); - } - } + if (part == null) { + return null; + } else if (part.getSite() instanceof IViewSite) { + IViewSite site = (IViewSite)part.getSite(); + return getCombinedPartId(site.getId(), site.getSecondaryId()); + + } else { + return part.getSite().getId(); + } + } private String getCombinedPartId(String id, String secondaryId) { return id + (secondaryId != null ? ":" + secondaryId : ""); //$NON-NLS-1$//$NON-NLS-2$ diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/contexts/LaunchSuspendTrigger.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/contexts/LaunchSuspendTrigger.java index 61f788708..33531919e 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/contexts/LaunchSuspendTrigger.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/contexts/LaunchSuspendTrigger.java @@ -56,19 +56,19 @@ public class LaunchSuspendTrigger implements ISuspendTrigger, IDebugEventSetList @Override public void addSuspendTriggerListener(ISuspendTriggerListener listener) { - if (fListeners != null) { - fListeners.add(listener); - } + if (fListeners != null) { + fListeners.add(listener); + } } @Override public void removeSuspendTriggerListener(ISuspendTriggerListener listener) { - if (fListeners != null) { - fListeners.remove(listener); - } - if (fListeners.size() == 0) { - dispose(); - } + if (fListeners != null) { + fListeners.remove(listener); + } + if (fListeners.size() == 0) { + dispose(); + } } @Override @@ -111,23 +111,23 @@ public class LaunchSuspendTrigger implements ISuspendTrigger, IDebugEventSetList } final Object temp = context; ListenerList<ISuspendTriggerListener> list = fListeners; - if (list != null) { + if (list != null) { for (ISuspendTriggerListener iSuspendTriggerListener : list) { final ISuspendTriggerListener listener = iSuspendTriggerListener; - SafeRunner.run(new ISafeRunnable() { - @Override + SafeRunner.run(new ISafeRunnable() { + @Override public void run() throws Exception { - listener.suspended(launch, temp); - } + listener.suspended(launch, temp); + } - @Override + @Override public void handleException(Throwable exception) { - DebugUIPlugin.log(exception); - } + DebugUIPlugin.log(exception); + } - }); - } - } + }); + } + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/AsynchronousDebugLabelAdapter.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/AsynchronousDebugLabelAdapter.java index 756e5dffc..9515644d4 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/AsynchronousDebugLabelAdapter.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/AsynchronousDebugLabelAdapter.java @@ -41,31 +41,31 @@ public class AsynchronousDebugLabelAdapter extends AsynchronousLabelAdapter { @Override protected void computeLabels(Object element, IPresentationContext context, ILabelRequestMonitor monitor) { - DelegatingModelPresentation presentation = DebugElementHelper.getPresentation(); - // Honor view specific settings in a debug view by copying model presentation settings - // into the debug element helper's presentation before we get the label. This allows - // for qualified name and type name settings to remain in tact. - if (element instanceof IDebugElement && context.getPart() instanceof IDebugView) { - IDebugView debugView = (IDebugView)context.getPart(); + DelegatingModelPresentation presentation = DebugElementHelper.getPresentation(); + // Honor view specific settings in a debug view by copying model presentation settings + // into the debug element helper's presentation before we get the label. This allows + // for qualified name and type name settings to remain in tact. + if (element instanceof IDebugElement && context.getPart() instanceof IDebugView) { + IDebugView debugView = (IDebugView)context.getPart(); IDebugModelPresentation pres = debugView.getPresentation(((IDebugElement)element).getModelIdentifier()); Map<String, Object> settings = null; - synchronized (presentation) { - if (pres instanceof DelegatingModelPresentation) { - settings = ((DelegatingModelPresentation)pres).getAttributes(); - } else if (pres instanceof LazyModelPresentation) { - settings = ((LazyModelPresentation)pres).getAttributes(); - } - if (settings != null) { + synchronized (presentation) { + if (pres instanceof DelegatingModelPresentation) { + settings = ((DelegatingModelPresentation)pres).getAttributes(); + } else if (pres instanceof LazyModelPresentation) { + settings = ((LazyModelPresentation)pres).getAttributes(); + } + if (settings != null) { for (Entry<String, Object> entry : settings.entrySet()) { - presentation.setAttribute(entry.getKey(), entry.getValue()); - } - super.computeLabels(element, context, monitor); - return; - } - } + presentation.setAttribute(entry.getKey(), entry.getValue()); + } + super.computeLabels(element, context, monitor); + return; + } + } } - super.computeLabels(element, context, monitor); - } + super.computeLabels(element, context, monitor); + } @Override protected String[] getLabels(Object element, IPresentationContext context) throws CoreException { diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/DefaultBreakpointsViewInput.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/DefaultBreakpointsViewInput.java index 063a79dff..48b9df963 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/DefaultBreakpointsViewInput.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/DefaultBreakpointsViewInput.java @@ -47,26 +47,26 @@ public class DefaultBreakpointsViewInput { return fContext; } - @Override + @Override public int hashCode() { - if (getContext() != null) { - return getContext().hashCode(); - } else { - return 1; - } - } + if (getContext() != null) { + return getContext().hashCode(); + } else { + return 1; + } + } - @Override + @Override public boolean equals(Object arg0) { - if ( (arg0 != null) && arg0.getClass().equals(this.getClass()) ) { + if ( (arg0 != null) && arg0.getClass().equals(this.getClass()) ) { - IPresentationContext context = ((DefaultBreakpointsViewInput) arg0).getContext(); - if (getContext() != null && context != null) { + IPresentationContext context = ((DefaultBreakpointsViewInput) arg0).getContext(); + if (getContext() != null && context != null) { return getContext().equals(context); } - } + } - return super.equals(arg0); - } + return super.equals(arg0); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/DefaultVariableCellModifier.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/DefaultVariableCellModifier.java index ca4642f13..5dd952441 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/DefaultVariableCellModifier.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/DefaultVariableCellModifier.java @@ -55,8 +55,8 @@ public class DefaultVariableCellModifier implements ICellModifier { @Override public void modify(Object element, String property, Object value) { Object oldValue = getValue(element, property); - if (!value.equals(oldValue)) { - if (VariableColumnPresentation.COLUMN_VARIABLE_VALUE.equals(property)) { + if (!value.equals(oldValue)) { + if (VariableColumnPresentation.COLUMN_VARIABLE_VALUE.equals(property)) { if (element instanceof IVariable) { if (value instanceof String) { // The value column displays special characters escaped, so encode the string with any special characters escaped properly @@ -65,7 +65,7 @@ public class DefaultVariableCellModifier implements ICellModifier { DetailPaneAssignValueAction.assignValue(DebugUIPlugin.getShell(), variable, valueExpression); } } - } + } } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/MemoryRetrievalContentAdapter.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/MemoryRetrievalContentAdapter.java index a43f926c2..041702722 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/MemoryRetrievalContentAdapter.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/MemoryRetrievalContentAdapter.java @@ -27,12 +27,12 @@ public class MemoryRetrievalContentAdapter extends AsynchronousContentAdapter{ protected Object[] getChildren(Object parent, IPresentationContext context) throws CoreException { String id = context.getId(); if (id.equals(IDebugUIConstants.ID_MEMORY_VIEW)) - { + { if (parent instanceof IMemoryBlockRetrieval) { - return DebugPlugin.getDefault().getMemoryBlockManager().getMemoryBlocks((IMemoryBlockRetrieval)parent); + return DebugPlugin.getDefault().getMemoryBlockManager().getMemoryBlocks((IMemoryBlockRetrieval)parent); } - } + } return EMPTY; } @@ -40,14 +40,14 @@ public class MemoryRetrievalContentAdapter extends AsynchronousContentAdapter{ protected boolean hasChildren(Object element, IPresentationContext context) throws CoreException { String id = context.getId(); if (id.equals(IDebugUIConstants.ID_MEMORY_VIEW)) - { + { if (element instanceof IMemoryBlockRetrieval) { if (((IMemoryBlockRetrieval)element).supportsStorageRetrieval()) - return DebugPlugin.getDefault().getMemoryBlockManager().getMemoryBlocks((IMemoryBlockRetrieval)element).length > 0; + return DebugPlugin.getDefault().getMemoryBlockManager().getMemoryBlocks((IMemoryBlockRetrieval)element).length > 0; } - } - return false; + } + return false; } @Override diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/StackFrameViewerInputProvider.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/StackFrameViewerInputProvider.java index ed3b76001..e802b3469 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/StackFrameViewerInputProvider.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/StackFrameViewerInputProvider.java @@ -30,21 +30,21 @@ public class StackFrameViewerInputProvider extends ViewerInputProvider { @Override protected Object getViewerInput(Object source, IPresentationContext context, IViewerUpdate update) throws CoreException { - if ( IDebugUIConstants.ID_REGISTER_VIEW.equals(context.getId()) ) { - return new RegisterGroupProxy((IStackFrame) source); - } else if ( IDebugUIConstants.ID_BREAKPOINT_VIEW.equals(context.getId()) ) { - return new DefaultBreakpointsViewInput(context); - } else { - return DebugPlugin.getDefault().getExpressionManager(); - } + if ( IDebugUIConstants.ID_REGISTER_VIEW.equals(context.getId()) ) { + return new RegisterGroupProxy((IStackFrame) source); + } else if ( IDebugUIConstants.ID_BREAKPOINT_VIEW.equals(context.getId()) ) { + return new DefaultBreakpointsViewInput(context); + } else { + return DebugPlugin.getDefault().getExpressionManager(); + } } @Override protected boolean supportsContextId(String id) { return IDebugUIConstants.ID_REGISTER_VIEW.equals(id) || - IDebugUIConstants.ID_EXPRESSION_VIEW.equals(id) || - IDebugUIConstants.ID_BREAKPOINT_VIEW.equals(id); + IDebugUIConstants.ID_EXPRESSION_VIEW.equals(id) || + IDebugUIConstants.ID_BREAKPOINT_VIEW.equals(id); } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/VariableColumnFactoryAdapter.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/VariableColumnFactoryAdapter.java index e32ff8f05..6e6dca082 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/VariableColumnFactoryAdapter.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/VariableColumnFactoryAdapter.java @@ -31,10 +31,10 @@ public class VariableColumnFactoryAdapter implements IColumnPresentationFactory @Override public IColumnPresentation createColumnPresentation(IPresentationContext context, Object element) { String id = context.getId(); - if (IDebugUIConstants.ID_VARIABLE_VIEW.equals(id) || - IDebugUIConstants.ID_REGISTER_VIEW.equals(id) || - IDebugUIConstants.ID_EXPRESSION_VIEW.equals(id)) - { + if (IDebugUIConstants.ID_VARIABLE_VIEW.equals(id) || + IDebugUIConstants.ID_REGISTER_VIEW.equals(id) || + IDebugUIConstants.ID_EXPRESSION_VIEW.equals(id)) + { if (element instanceof IStackFrame || element instanceof IExpressionManager) { return new VariableColumnPresentation(); } @@ -46,8 +46,8 @@ public class VariableColumnFactoryAdapter implements IColumnPresentationFactory public String getColumnPresentationId(IPresentationContext context, Object element) { String id = context.getId(); if (IDebugUIConstants.ID_VARIABLE_VIEW.equals(id) || - IDebugUIConstants.ID_REGISTER_VIEW.equals(id) || - IDebugUIConstants.ID_EXPRESSION_VIEW.equals(id)) + IDebugUIConstants.ID_REGISTER_VIEW.equals(id) || + IDebugUIConstants.ID_EXPRESSION_VIEW.equals(id)) { if (element instanceof IStackFrame || element instanceof IExpressionManager) { return IDebugUIConstants.COLUMN_PRESENTATION_ID_VARIABLE; diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/WatchExpressionCellModifier.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/WatchExpressionCellModifier.java index 61246b462..0bc7ffddf 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/WatchExpressionCellModifier.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/WatchExpressionCellModifier.java @@ -29,30 +29,30 @@ public class WatchExpressionCellModifier implements ICellModifier { @Override public boolean canModify(Object element, String property) { - if (VariableColumnPresentation.COLUMN_VARIABLE_NAME.equals(property)) { - return element instanceof IWatchExpression; - } + if (VariableColumnPresentation.COLUMN_VARIABLE_NAME.equals(property)) { + return element instanceof IWatchExpression; + } return false; } @Override public Object getValue(Object element, String property) { - if (VariableColumnPresentation.COLUMN_VARIABLE_NAME.equals(property)) { - return DefaultLabelProvider.escapeSpecialChars( ((IWatchExpression)element).getExpressionText() ); - } - return null; + if (VariableColumnPresentation.COLUMN_VARIABLE_NAME.equals(property)) { + return DefaultLabelProvider.escapeSpecialChars( ((IWatchExpression)element).getExpressionText() ); + } + return null; } @Override public void modify(Object element, String property, Object value) { Object oldValue = getValue(element, property); - if (!value.equals(oldValue)) { - if (VariableColumnPresentation.COLUMN_VARIABLE_NAME.equals(property)) { + if (!value.equals(oldValue)) { + if (VariableColumnPresentation.COLUMN_VARIABLE_NAME.equals(property)) { if (element instanceof IWatchExpression) { if (value instanceof String) { // The value column displays special characters - // escaped, so encode the string with any special - // characters escaped properly + // escaped, so encode the string with any special + // characters escaped properly String expressionText = DefaultLabelProvider.encodeEsacpedChars((String)value); IWatchExpression expression = (IWatchExpression) element; // Bug 345974 see ExpressionManagerContentProvider.AddNewExpressionElement.modify does not allow an empty string @@ -63,7 +63,7 @@ public class WatchExpressionCellModifier implements ICellModifier { } } } - } + } } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/groups/CommonTabLite.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/groups/CommonTabLite.java index ac5966fd2..6edb7a674 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/groups/CommonTabLite.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/groups/CommonTabLite.java @@ -241,9 +241,9 @@ class CommonTabLite extends AbstractLaunchConfigurationTab { String currentContainerString = fSharedLocationText.getText(); IContainer currentContainer = getContainer(currentContainerString); ContainerSelectionDialog dialog = new ContainerSelectionDialog(getShell(), - currentContainer, - false, - LaunchConfigurationsMessages.CommonTab_Select_a_location_for_the_launch_configuration_13); + currentContainer, + false, + LaunchConfigurationsMessages.CommonTab_Select_a_location_for_the_launch_configuration_13); dialog.showClosedProjects(false); dialog.setDialogBoundsSettings(getDialogBoundsSettings(), Dialog.DIALOG_PERSISTSIZE); dialog.open(); @@ -427,11 +427,11 @@ class CommonTabLite extends AbstractLaunchConfigurationTab { return validateLocalShared(); } - /** - * validates the local shared config file location - * @return true if the local shared file exists, false otherwise - */ - private boolean validateLocalShared() { + /** + * validates the local shared config file location + * @return true if the local shared file exists, false otherwise + */ + private boolean validateLocalShared() { if (isShared()) { String path = fSharedLocationText.getText().trim(); IContainer container = getContainer(path); diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/groups/GroupLaunchConfigurationTabGroup.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/groups/GroupLaunchConfigurationTabGroup.java index 783599a96..f1073c598 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/groups/GroupLaunchConfigurationTabGroup.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/groups/GroupLaunchConfigurationTabGroup.java @@ -134,12 +134,12 @@ public class GroupLaunchConfigurationTabGroup extends AbstractLaunchConfiguratio } try { - String key = el.data.getType().getIdentifier(); - return DebugPluginImages.getImage(key); - } catch (CoreException e) { - Image errorImage = PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJS_ERROR_TSK); + String key = el.data.getType().getIdentifier(); + return DebugPluginImages.getImage(key); + } catch (CoreException e) { + Image errorImage = PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJS_ERROR_TSK); return errorImage; - } + } } return null; } @@ -398,7 +398,7 @@ public class GroupLaunchConfigurationTabGroup extends AbstractLaunchConfiguratio return -1; } GroupLaunchElement el = ((GroupLaunchElement) sel - .getFirstElement()); + .getFirstElement()); return input.indexOf(el); } @@ -444,8 +444,8 @@ public class GroupLaunchConfigurationTabGroup extends AbstractLaunchConfiguratio protected boolean isDownEnabled() { final int index = getSingleSelectionIndex(); - return (index >= 0) && (index != input.size() - 1); - } + return (index >= 0) && (index != input.size() - 1); + } protected boolean isUpEnabled(){ return getSingleSelectionIndex() > 0; diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/hover/DebugTextHover.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/hover/DebugTextHover.java index 6cbddd8cd..9ca00b61c 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/hover/DebugTextHover.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/hover/DebugTextHover.java @@ -82,50 +82,50 @@ public class DebugTextHover implements ITextHover, ITextHoverExtension, ITextHov * Replaces reserved HTML characters in the given string with * their escaped equivalents. This is to ensure that variable * values containing reserved characters are correctly displayed. - */ - private static String replaceHTMLChars(String variableText) { - StringBuilder buffer= new StringBuilder(variableText.length()); - char[] characters = variableText.toCharArray(); - for (int i = 0; i < characters.length; i++) { - char character= characters[i]; - switch (character) { - case '<': - buffer.append("<"); //$NON-NLS-1$ - break; - case '>': - buffer.append(">"); //$NON-NLS-1$ - break; - case '&': - buffer.append("&"); //$NON-NLS-1$ - break; - case '"': - buffer.append("""); //$NON-NLS-1$ - break; - default: - buffer.append(character); - } - } - return buffer.toString(); - } + */ + private static String replaceHTMLChars(String variableText) { + StringBuilder buffer= new StringBuilder(variableText.length()); + char[] characters = variableText.toCharArray(); + for (int i = 0; i < characters.length; i++) { + char character= characters[i]; + switch (character) { + case '<': + buffer.append("<"); //$NON-NLS-1$ + break; + case '>': + buffer.append(">"); //$NON-NLS-1$ + break; + case '&': + buffer.append("&"); //$NON-NLS-1$ + break; + case '"': + buffer.append("""); //$NON-NLS-1$ + break; + default: + buffer.append(character); + } + } + return buffer.toString(); + } - /** - * Returns the value of this filters preference (on/off) for the given - * view. - * - * @param part - * @return boolean - */ - public static boolean getBooleanPreferenceValue(String id, String preference) { - String compositeKey = id + "." + preference; //$NON-NLS-1$ + /** + * Returns the value of this filters preference (on/off) for the given + * view. + * + * @param part + * @return boolean + */ + public static boolean getBooleanPreferenceValue(String id, String preference) { + String compositeKey = id + "." + preference; //$NON-NLS-1$ IPreferenceStore store = DebugUIPlugin.getDefault().getPreferenceStore(); - boolean value = false; - if (store.contains(compositeKey)) { - value = store.getBoolean(compositeKey); - } else { - value = store.getBoolean(preference); - } - return value; - } + boolean value = false; + if (store.contains(compositeKey)) { + value = store.getBoolean(compositeKey); + } else { + value = store.getBoolean(preference); + } + return value; + } @Override public IInformationControlCreator getHoverControlCreator() { diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/hover/ExpressionInformationControlCreator.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/hover/ExpressionInformationControlCreator.java index f9ab8ae56..dc4f6f322 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/hover/ExpressionInformationControlCreator.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/hover/ExpressionInformationControlCreator.java @@ -94,16 +94,16 @@ public class ExpressionInformationControlCreator implements IInformationControlC private IVariable fVariable; private IPresentationContext fContext; - private TreeModelViewer fViewer; - private SashForm fSashForm; - private Composite fDetailPaneComposite; - private DetailPaneProxy fDetailPane; - private Tree fTree; + private TreeModelViewer fViewer; + private SashForm fSashForm; + private Composite fDetailPaneComposite; + private DetailPaneProxy fDetailPane; + private Tree fTree; /** - * Creates the content for the root element of the tree viewer in the hover - */ - private class TreeRoot extends ElementContentProvider { + * Creates the content for the root element of the tree viewer in the hover + */ + private class TreeRoot extends ElementContentProvider { @Override protected int getChildCount(Object element, IPresentationContext context, IViewerUpdate monitor) throws CoreException { return 1; @@ -118,7 +118,7 @@ public class ExpressionInformationControlCreator implements IInformationControlC protected boolean supportsContextId(String id) { return true; } - } + } /** * Inner class implementing IDetailPaneContainer methods. Handles changes to detail @@ -219,7 +219,7 @@ public class ExpressionInformationControlCreator implements IInformationControlC @Override public void dispose() { persistSettings(getShell()); - fContext.dispose(); + fContext.dispose(); super.dispose(); } @@ -253,61 +253,61 @@ public class ExpressionInformationControlCreator implements IInformationControlC @Override protected void createContent(Composite parent) { - fSashForm = new SashForm(parent, parent.getStyle()); - fSashForm.setOrientation(SWT.VERTICAL); - - // update presentation context - AbstractDebugView view = getViewToEmulate(); - fContext = new PresentationContext(IDebugUIConstants.ID_VARIABLE_VIEW); - if (view != null) { - // copy over properties - IPresentationContext copy = ((TreeModelViewer)view.getViewer()).getPresentationContext(); - String[] properties = copy.getProperties(); - for (int i = 0; i < properties.length; i++) { + fSashForm = new SashForm(parent, parent.getStyle()); + fSashForm.setOrientation(SWT.VERTICAL); + + // update presentation context + AbstractDebugView view = getViewToEmulate(); + fContext = new PresentationContext(IDebugUIConstants.ID_VARIABLE_VIEW); + if (view != null) { + // copy over properties + IPresentationContext copy = ((TreeModelViewer)view.getViewer()).getPresentationContext(); + String[] properties = copy.getProperties(); + for (int i = 0; i < properties.length; i++) { String key = properties[i]; fContext.setProperty(key, copy.getProperty(key)); } - } - - fViewer = new TreeModelViewer(fSashForm, SWT.NO_TRIM | SWT.MULTI | SWT.VIRTUAL, fContext); - fViewer.setAutoExpandLevel(1); - - if (view != null) { - // copy over filters - StructuredViewer structuredViewer = (StructuredViewer) view.getViewer(); - if (structuredViewer != null) { - ViewerFilter[] filters = structuredViewer.getFilters(); - for (int i = 0; i < filters.length; i++) { - fViewer.addFilter(filters[i]); - } - } - } - - fDetailPaneComposite = SWTFactory.createComposite(fSashForm, 1, 1, GridData.FILL_BOTH); - Layout layout = fDetailPaneComposite.getLayout(); - if (layout instanceof GridLayout) { + } + + fViewer = new TreeModelViewer(fSashForm, SWT.NO_TRIM | SWT.MULTI | SWT.VIRTUAL, fContext); + fViewer.setAutoExpandLevel(1); + + if (view != null) { + // copy over filters + StructuredViewer structuredViewer = (StructuredViewer) view.getViewer(); + if (structuredViewer != null) { + ViewerFilter[] filters = structuredViewer.getFilters(); + for (int i = 0; i < filters.length; i++) { + fViewer.addFilter(filters[i]); + } + } + } + + fDetailPaneComposite = SWTFactory.createComposite(fSashForm, 1, 1, GridData.FILL_BOTH); + Layout layout = fDetailPaneComposite.getLayout(); + if (layout instanceof GridLayout) { GridLayout gl = (GridLayout) layout; gl.marginHeight = 0; gl.marginWidth = 0; } - fDetailPane = new DetailPaneProxy(new DetailPaneContainer()); - fDetailPane.display(null); // Bring up the default pane so the user doesn't see an empty composite + fDetailPane = new DetailPaneProxy(new DetailPaneContainer()); + fDetailPane.display(null); // Bring up the default pane so the user doesn't see an empty composite - fTree = fViewer.getTree(); - fTree.addSelectionListener(new SelectionListener() { - @Override + fTree = fViewer.getTree(); + fTree.addSelectionListener(new SelectionListener() { + @Override public void widgetSelected(SelectionEvent e) { fDetailPane.display(fViewer.getStructuredSelection()); - } - @Override + } + @Override public void widgetDefaultSelected(SelectionEvent e) {} - }); + }); - initSashWeights(); + initSashWeights(); - // add update listener to auto-select and display details of root expression - fViewer.addViewerUpdateListener(new IViewerUpdateListener() { + // add update listener to auto-select and display details of root expression + fViewer.addViewerUpdateListener(new IViewerUpdateListener() { @Override public void viewerUpdatesComplete() { } @@ -328,55 +328,55 @@ public class ExpressionInformationControlCreator implements IInformationControlC } }); - setForegroundColor(getShell().getDisplay().getSystemColor(SWT.COLOR_INFO_FOREGROUND)); - setBackgroundColor(getShell().getDisplay().getSystemColor(SWT.COLOR_INFO_BACKGROUND)); + setForegroundColor(getShell().getDisplay().getSystemColor(SWT.COLOR_INFO_FOREGROUND)); + setBackgroundColor(getShell().getDisplay().getSystemColor(SWT.COLOR_INFO_BACKGROUND)); } /** - * Attempts to find an appropriate view to emulate, this will either be the - * variables view or the expressions view. - * @return a view to emulate or <code>null</code> - */ - private AbstractDebugView getViewToEmulate() { + * Attempts to find an appropriate view to emulate, this will either be the + * variables view or the expressions view. + * @return a view to emulate or <code>null</code> + */ + private AbstractDebugView getViewToEmulate() { IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); - AbstractDebugView expressionsView = (AbstractDebugView) page.findView(IDebugUIConstants.ID_EXPRESSION_VIEW); - if (expressionsView != null && expressionsView.isVisible()) { - return expressionsView; - } - AbstractDebugView variablesView = (AbstractDebugView) page.findView(IDebugUIConstants.ID_VARIABLE_VIEW); - if (variablesView != null && variablesView.isVisible()) { - return variablesView; - } - if (expressionsView != null) { - return expressionsView; - } - return variablesView; - } + AbstractDebugView expressionsView = (AbstractDebugView) page.findView(IDebugUIConstants.ID_EXPRESSION_VIEW); + if (expressionsView != null && expressionsView.isVisible()) { + return expressionsView; + } + AbstractDebugView variablesView = (AbstractDebugView) page.findView(IDebugUIConstants.ID_VARIABLE_VIEW); + if (variablesView != null && variablesView.isVisible()) { + return variablesView; + } + if (expressionsView != null) { + return expressionsView; + } + return variablesView; + } /** - * Initializes the sash form weights from the preference store (using default values if - * no sash weights were stored previously). - */ - protected void initSashWeights(){ - IDialogSettings settings = getDialogSettings(false); - if (settings != null) { - int tree = getIntSetting(settings, SASH_WEIGHT_TREE); - if (tree > 0) { - int details = getIntSetting(settings, SASH_WEIGHT_DETAILS); - if (details > 0) { - fSashForm.setWeights(new int[]{tree, details}); - } - } - } - } - - @Override - public void setForegroundColor(Color foreground) { - super.setForegroundColor(foreground); - fDetailPaneComposite.setForeground(foreground); - fTree.setForeground(foreground); - } + * Initializes the sash form weights from the preference store (using default values if + * no sash weights were stored previously). + */ + protected void initSashWeights(){ + IDialogSettings settings = getDialogSettings(false); + if (settings != null) { + int tree = getIntSetting(settings, SASH_WEIGHT_TREE); + if (tree > 0) { + int details = getIntSetting(settings, SASH_WEIGHT_DETAILS); + if (details > 0) { + fSashForm.setWeights(new int[]{tree, details}); + } + } + } + } + + @Override + public void setForegroundColor(Color foreground) { + super.setForegroundColor(foreground); + fDetailPaneComposite.setForeground(foreground); + fTree.setForeground(foreground); + } @Override public void setBackgroundColor(Color background) { @@ -400,7 +400,7 @@ public class ExpressionInformationControlCreator implements IInformationControlC public void setInput(Object input) { if (input instanceof IVariable) { fVariable = (IVariable) input; - fViewer.setInput(new TreeRoot()); + fViewer.setInput(new TreeRoot()); } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/importexport/breakpoints/EmbeddedBreakpointsViewer.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/importexport/breakpoints/EmbeddedBreakpointsViewer.java index b259cad20..533a342ee 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/importexport/breakpoints/EmbeddedBreakpointsViewer.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/importexport/breakpoints/EmbeddedBreakpointsViewer.java @@ -117,7 +117,7 @@ public class EmbeddedBreakpointsViewer { //presentation of the embedded viewer matches the current view Map<String, Object> map = null; IDebugModelPresentation current = view.getAdapter(IDebugModelPresentation.class); - if (current instanceof DelegatingModelPresentation) { + if (current instanceof DelegatingModelPresentation) { map = ((DelegatingModelPresentation) current).getAttributes(); } if(map != null) { @@ -157,7 +157,7 @@ public class EmbeddedBreakpointsViewer { list.add(breakpoint); } else if (item instanceof IBreakpointContainer) { - getBreakpointsFromContainers((IBreakpointContainer)item, list); + getBreakpointsFromContainers((IBreakpointContainer)item, list); } } for(int i = 0; i < list.size(); i++) { @@ -171,11 +171,11 @@ public class EmbeddedBreakpointsViewer { * @param list the list of breakpoints to update state for */ private void getBreakpointsFromContainers(IBreakpointContainer container, ArrayList<IBreakpoint> list) { - IBreakpoint[] bps = container.getBreakpoints(); - list.ensureCapacity(list.size() + bps.length); - for (int j = 0; j < bps.length; j++) { - list.add(bps[j]); - } + IBreakpoint[] bps = container.getBreakpoints(); + list.ensureCapacity(list.size() + bps.length); + for (int j = 0; j < bps.length; j++) { + list.add(bps[j]); + } } /** @@ -206,115 +206,115 @@ public class EmbeddedBreakpointsViewer { * @param element the element to search for when finding occurrences * @return a list of widget occurrences to update or an empty list */ - private Widget[] searchItems(Object element) { + private Widget[] searchItems(Object element) { ArrayList<TreeItem> list = new ArrayList<>(); - TreeItem[] items = fTree.getItems(); - for (int i = 0; i < items.length; i++) { - findAllOccurrences(items[i], element, list); - } - return list.toArray(new Widget[0]); - } + TreeItem[] items = fTree.getItems(); + for (int i = 0; i < items.length; i++) { + findAllOccurrences(items[i], element, list); + } + return list.toArray(new Widget[0]); + } - /** - * performs the actual search for items in the tree - * @param list the list to add matches to - * @param item the item in the tree - * @param element the element to compare - */ + /** + * performs the actual search for items in the tree + * @param list the list to add matches to + * @param item the item in the tree + * @param element the element to compare + */ private void findAllOccurrences(TreeItem item, Object element, ArrayList<TreeItem> list) { - if (element.equals(item.getData())) { - list.add(item); - } - TreeItem[] items = item.getItems(); - for (int i = 0; i < items.length; i++) { - findAllOccurrences(items[i], element, list); - } - } + if (element.equals(item.getData())) { + list.add(item); + } + TreeItem[] items = item.getItems(); + for (int i = 0; i < items.length; i++) { + findAllOccurrences(items[i], element, list); + } + } /** - * Update the checked state of the given element and all of its children. - * - * @param obj the object that has been changed - * @param enable the checked status of the obj - */ - private void updateCheckedState(Object obj, boolean enable) { - IBreakpoint breakpoint = (IBreakpoint)DebugPlugin.getAdapter(obj, IBreakpoint.class); - if (breakpoint != null) { - Widget[] list = searchItems(obj); - TreeItem item = null; - for(int i = 0; i < list.length; i++) { - item = (TreeItem)list[i]; - item.setChecked(enable); - refreshParents(item); - } - } - else if (obj instanceof BreakpointContainer) { + * Update the checked state of the given element and all of its children. + * + * @param obj the object that has been changed + * @param enable the checked status of the obj + */ + private void updateCheckedState(Object obj, boolean enable) { + IBreakpoint breakpoint = (IBreakpoint)DebugPlugin.getAdapter(obj, IBreakpoint.class); + if (breakpoint != null) { + Widget[] list = searchItems(obj); + TreeItem item = null; + for(int i = 0; i < list.length; i++) { + item = (TreeItem)list[i]; + item.setChecked(enable); + refreshParents(item); + } + } + else if (obj instanceof BreakpointContainer) { ArrayList<IBreakpoint> bps = new ArrayList<>(); - getBreakpointsFromContainers((BreakpointContainer)obj, bps); - for(int j = 0; j < bps.size(); j++) { - updateCheckedState(bps.get(j), enable); - } - } - } + getBreakpointsFromContainers((BreakpointContainer)obj, bps); + for(int j = 0; j < bps.size(); j++) { + updateCheckedState(bps.get(j), enable); + } + } + } - /** - * refreshes the grayed/checked state of the parents of item - * @param item the item to refresh parents of - */ - private void refreshParents(TreeItem item) { - TreeItem parent = item.getParentItem(); - while (parent != null) { - int checked = getNumberChildrenChecked(parent); - if(checked == 0) { - parent.setGrayed(false); - parent.setChecked(false); - } - else if(checked == parent.getItemCount()) { - if(getNumberChildrenGrayed(parent) > 0) { - parent.setGrayed(true); - } - else { - parent.setGrayed(false); - } - parent.setChecked(true); - } - else { - parent.setGrayed(true); - parent.setChecked(true); - } - parent = parent.getParentItem(); - } - } + /** + * refreshes the grayed/checked state of the parents of item + * @param item the item to refresh parents of + */ + private void refreshParents(TreeItem item) { + TreeItem parent = item.getParentItem(); + while (parent != null) { + int checked = getNumberChildrenChecked(parent); + if(checked == 0) { + parent.setGrayed(false); + parent.setChecked(false); + } + else if(checked == parent.getItemCount()) { + if(getNumberChildrenGrayed(parent) > 0) { + parent.setGrayed(true); + } + else { + parent.setGrayed(false); + } + parent.setChecked(true); + } + else { + parent.setGrayed(true); + parent.setChecked(true); + } + parent = parent.getParentItem(); + } + } - /** - * Gets the number of grayed children for this parent - * @param parent the parent to inspect - * @return treu is any one or more children is grayed, false otherwise - */ - private int getNumberChildrenGrayed(TreeItem parent) { - TreeItem[] children = parent.getItems(); - int count = 0; - for(int i = 0; i < children.length; i++) { - if(children[i].getGrayed()) { - count++; - } - } - return count; - } + /** + * Gets the number of grayed children for this parent + * @param parent the parent to inspect + * @return treu is any one or more children is grayed, false otherwise + */ + private int getNumberChildrenGrayed(TreeItem parent) { + TreeItem[] children = parent.getItems(); + int count = 0; + for(int i = 0; i < children.length; i++) { + if(children[i].getGrayed()) { + count++; + } + } + return count; + } - /** - * Checks to see if all of the children under an given parent are checked or not - * @param children the children to check - * @return true if all children are checked, false otherwise - */ - private int getNumberChildrenChecked(TreeItem parent) { - TreeItem[] children = parent.getItems(); - int count = 0; - for(int i = 0; i < children.length; i++) { - if(children[i].getChecked()) { - count++; - } - } - return count; - } + /** + * Checks to see if all of the children under an given parent are checked or not + * @param children the children to check + * @return true if all children are checked, false otherwise + */ + private int getNumberChildrenChecked(TreeItem parent) { + TreeItem[] children = parent.getItems(); + int count = 0; + for(int i = 0; i < children.length; i++) { + if(children[i].getChecked()) { + count++; + } + } + return count; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/importexport/breakpoints/WizardExportBreakpoints.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/importexport/breakpoints/WizardExportBreakpoints.java index 98cb4768c..1c31ff369 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/importexport/breakpoints/WizardExportBreakpoints.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/importexport/breakpoints/WizardExportBreakpoints.java @@ -96,6 +96,6 @@ public class WizardExportBreakpoints extends Wizard implements IExportWizard { public void init(IWorkbench workbench, IStructuredSelection selection) { fSelection = selection; setWindowTitle(ImportExportMessages.WizardExportBreakpoints_0); - setNeedsProgressMonitor(true); + setNeedsProgressMonitor(true); } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/importexport/breakpoints/WizardExportBreakpointsPage.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/importexport/breakpoints/WizardExportBreakpointsPage.java index 2e3123bb8..958de66e4 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/importexport/breakpoints/WizardExportBreakpointsPage.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/importexport/breakpoints/WizardExportBreakpointsPage.java @@ -203,17 +203,17 @@ public class WizardExportBreakpointsPage extends WizardPage implements Listener } /** - * Creates the buttons for selecting all or none of the elements. - * - * @param parent the parent control - */ - private void createButtonsGroup(Composite parent) { - Composite composite = SWTFactory.createComposite(parent, parent.getFont(), 3, 1, GridData.FILL_HORIZONTAL, 0, 0); - fSelectAll = SWTFactory.createPushButton(composite, ImportExportMessages.WizardBreakpointsPage_1, null); - fSelectAll.addListener(SWT.Selection, this); + * Creates the buttons for selecting all or none of the elements. + * + * @param parent the parent control + */ + private void createButtonsGroup(Composite parent) { + Composite composite = SWTFactory.createComposite(parent, parent.getFont(), 3, 1, GridData.FILL_HORIZONTAL, 0, 0); + fSelectAll = SWTFactory.createPushButton(composite, ImportExportMessages.WizardBreakpointsPage_1, null); + fSelectAll.addListener(SWT.Selection, this); fDeselectAll = SWTFactory.createPushButton(composite, ImportExportMessages.WizardBreakpointsPage_2, null); fDeselectAll.addListener(SWT.Selection, this); - } + } /** * This method is used to determine if the page can be "finished". diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/importexport/breakpoints/WizardImportBreakpoints.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/importexport/breakpoints/WizardImportBreakpoints.java index b357a6d1a..a13af565b 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/importexport/breakpoints/WizardImportBreakpoints.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/importexport/breakpoints/WizardImportBreakpoints.java @@ -99,7 +99,7 @@ public class WizardImportBreakpoints extends Wizard implements IImportWizard { @Override public void init(IWorkbench workbench, IStructuredSelection selection) { setWindowTitle(ImportExportMessages.WizardImportBreakpoints_0); - setNeedsProgressMonitor(true); + setNeedsProgressMonitor(true); } @Override diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/importexport/launchconfigurations/ExportLaunchConfigurationsWizardPage.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/importexport/launchconfigurations/ExportLaunchConfigurationsWizardPage.java index 291ffe62c..e5cd4bfcf 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/importexport/launchconfigurations/ExportLaunchConfigurationsWizardPage.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/importexport/launchconfigurations/ExportLaunchConfigurationsWizardPage.java @@ -144,11 +144,11 @@ public class ExportLaunchConfigurationsWizardPage extends WizardPage { @Override public void createControl(Composite parent) { Composite comp = SWTFactory.createComposite(parent, 2, 1, GridData.FILL_BOTH); - //add the check table + //add the check table createViewer(comp); - //add the file path and browse button + //add the file path and browse button createFilePath(comp); - //add the overwrite option + //add the overwrite option fOverwrite = SWTFactory.createCheckButton(comp, WizardMessages.ExportLaunchConfigurationsWizardPage_1, null, getDialogSettings().getBoolean(OVERWRITE), 2); setControl(comp); PlatformUI .getWorkbench().getHelpSystem().setHelp(comp, IDebugHelpContextIds.EXPORT_LAUNCH_CONFIGURATIONS_PAGE); @@ -475,6 +475,6 @@ public class ExportLaunchConfigurationsWizardPage extends WizardPage { while ((i = is.read(buf)) != -1) { os.write(buf, 0, i); } - } + } } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/importexport/launchconfigurations/ImportLaunchConfigurationsWizardPage.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/importexport/launchconfigurations/ImportLaunchConfigurationsWizardPage.java index 403c34c27..67bad5c5f 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/importexport/launchconfigurations/ImportLaunchConfigurationsWizardPage.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/importexport/launchconfigurations/ImportLaunchConfigurationsWizardPage.java @@ -263,16 +263,16 @@ public class ImportLaunchConfigurationsWizardPage extends WizardResourceImportPa protected void createSourceGroup(Composite parent) {} /** - * Create the group for creating the root directory - */ - protected void createRootDirectoryGroup(Composite parent) { - Composite comp = SWTFactory.createComposite(parent, parent.getFont(), 3, 1, GridData.FILL_HORIZONTAL, 0, 0); - SWTFactory.createLabel(comp, WizardMessages.ImportLaunchConfigurationsWizardPage_6, 1); - // source name entry field - fFromDirectory = SWTFactory.createText(comp, SWT.BORDER | SWT.SINGLE | SWT.READ_ONLY, 1, GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL); - // source browse button - Button browse = SWTFactory.createPushButton(comp, WizardMessages.ImportLaunchConfigurationsWizardPage_7, null); - browse.addSelectionListener(new SelectionAdapter () { + * Create the group for creating the root directory + */ + protected void createRootDirectoryGroup(Composite parent) { + Composite comp = SWTFactory.createComposite(parent, parent.getFont(), 3, 1, GridData.FILL_HORIZONTAL, 0, 0); + SWTFactory.createLabel(comp, WizardMessages.ImportLaunchConfigurationsWizardPage_6, 1); + // source name entry field + fFromDirectory = SWTFactory.createText(comp, SWT.BORDER | SWT.SINGLE | SWT.READ_ONLY, 1, GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL); + // source browse button + Button browse = SWTFactory.createPushButton(comp, WizardMessages.ImportLaunchConfigurationsWizardPage_7, null); + browse.addSelectionListener(new SelectionAdapter () { @Override public void widgetSelected(SelectionEvent e) { DirectoryDialog dd = new DirectoryDialog(getContainer().getShell(), SWT.SHEET); @@ -287,14 +287,14 @@ public class ImportLaunchConfigurationsWizardPage extends WizardResourceImportPa } } } - }); - } + }); + } - /** - * Resets the selection of the tree root element for the viewer - * @param path the path from the text widget - */ - protected void resetSelection(final IPath path) { + /** + * Resets the selection of the tree root element for the viewer + * @param path the path from the text widget + */ + protected void resetSelection(final IPath path) { BusyIndicator.showWhile(getShell().getDisplay(), () -> { File file = new File(path.toOSString()); DebugFileSystemElement dummyparent = new DebugFileSystemElement(IInternalDebugCoreConstants.EMPTY_STRING, @@ -306,47 +306,47 @@ public class ImportLaunchConfigurationsWizardPage extends WizardResourceImportPa element.getFiles(); selectionGroup.setRoot(dummyparent); }); - } + } @Override protected ITreeContentProvider getFileProvider() { return new WorkbenchContentProvider() { - @Override + @Override public Object[] getChildren(Object o) { - if (o instanceof DebugFileSystemElement) { - DebugFileSystemElement element = (DebugFileSystemElement) o; - return element.getFiles().getChildren(element); - } - return new Object[0]; - } - }; + if (o instanceof DebugFileSystemElement) { + DebugFileSystemElement element = (DebugFileSystemElement) o; + return element.getFiles().getChildren(element); + } + return new Object[0]; + } + }; } @Override protected ITreeContentProvider getFolderProvider() { return new WorkbenchContentProvider() { - @Override + @Override public Object[] getChildren(Object o) { - if (o instanceof DebugFileSystemElement) { - DebugFileSystemElement element = (DebugFileSystemElement) o; - return element.getFolders().getChildren(); - } - return new Object[0]; - } + if (o instanceof DebugFileSystemElement) { + DebugFileSystemElement element = (DebugFileSystemElement) o; + return element.getFolders().getChildren(); + } + return new Object[0]; + } - @Override + @Override public boolean hasChildren(Object o) { - if (o instanceof DebugFileSystemElement) { - DebugFileSystemElement element = (DebugFileSystemElement) o; - if (element.isPopulated()) { + if (o instanceof DebugFileSystemElement) { + DebugFileSystemElement element = (DebugFileSystemElement) o; + if (element.isPopulated()) { return getChildren(element).length > 0; } - //If we have not populated then wait until asked - return true; - } - return false; - } - }; + //If we have not populated then wait until asked + return true; + } + return false; + } + }; } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/CompileErrorProjectPromptStatusHandler.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/CompileErrorProjectPromptStatusHandler.java index 818e965ca..5f2d1a69b 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/CompileErrorProjectPromptStatusHandler.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/CompileErrorProjectPromptStatusHandler.java @@ -90,15 +90,15 @@ public class CompileErrorProjectPromptStatusHandler implements IStatusHandler { 0, LaunchConfigurationsMessages.CompileErrorProjectPromptStatusHandler_1, false); - int open = dialog.open(); + int open = dialog.open(); if (open == IDialogConstants.PROCEED_ID) { - if(dialog.getToggleState()) { - store.setValue(IInternalDebugUIConstants.PREF_CONTINUE_WITH_COMPILE_ERROR, MessageDialogWithToggle.ALWAYS); - } - return Boolean.TRUE; - } - else { - return Boolean.FALSE; - } + if(dialog.getToggleState()) { + store.setValue(IInternalDebugUIConstants.PREF_CONTINUE_WITH_COMPILE_ERROR, MessageDialogWithToggle.ALWAYS); + } + return Boolean.TRUE; + } + else { + return Boolean.FALSE; + } } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/DebugModePromptStatusHandler.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/DebugModePromptStatusHandler.java index 0658aabf2..5794c6751 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/DebugModePromptStatusHandler.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/DebugModePromptStatusHandler.java @@ -39,16 +39,16 @@ public class DebugModePromptStatusHandler implements IStatusHandler { } IPreferenceStore store = DebugUIPlugin.getDefault().getPreferenceStore(); - ILaunchConfiguration configuration = (ILaunchConfiguration)source; - String pref = store.getString(IInternalDebugUIConstants.PREF_RELAUNCH_IN_DEBUG_MODE); - if (pref != null) { - if (pref.equals(MessageDialogWithToggle.NEVER)) { - return Boolean.FALSE; - } else if (pref.equals(MessageDialogWithToggle.ALWAYS)) { - relaunchInDebugMode(configuration); - return Boolean.TRUE; - } - } + ILaunchConfiguration configuration = (ILaunchConfiguration)source; + String pref = store.getString(IInternalDebugUIConstants.PREF_RELAUNCH_IN_DEBUG_MODE); + if (pref != null) { + if (pref.equals(MessageDialogWithToggle.NEVER)) { + return Boolean.FALSE; + } else if (pref.equals(MessageDialogWithToggle.ALWAYS)) { + relaunchInDebugMode(configuration); + return Boolean.TRUE; + } + } Shell activeShell = DebugUIPlugin.getShell(); String title = LaunchConfigurationsMessages.DebugModePromptStatusHandler_0; diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/FavoritesDialog.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/FavoritesDialog.java index 3a2b105e7..5779bf0b8 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/FavoritesDialog.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/FavoritesDialog.java @@ -248,17 +248,17 @@ public class FavoritesDialog extends TrayDialog { /** * Returns a label to use for launch mode with accelerators removed. * - * @return label to use for launch mode with accelerators removed - */ - private String getModeLabel() { - return DebugUIPlugin.removeAccelerators(fHistory.getLaunchGroup().getLabel()); - } - - /** - * Creates the main area of the dialog - * @param parent the parent to add this content to - */ - protected void createFavoritesArea(Composite parent) { + * @return label to use for launch mode with accelerators removed + */ + private String getModeLabel() { + return DebugUIPlugin.removeAccelerators(fHistory.getLaunchGroup().getLabel()); + } + + /** + * Creates the main area of the dialog + * @param parent the parent to add this content to + */ + protected void createFavoritesArea(Composite parent) { Composite topComp = SWTFactory.createComposite(parent, parent.getFont(), 2, 1, GridData.FILL_BOTH, 0, 0); SWTFactory.createLabel(topComp, LaunchConfigurationsMessages.FavoritesDialog_2, 2); fFavoritesTable = createTable(topComp, new FavoritesContentProvider()); @@ -451,15 +451,15 @@ public class FavoritesDialog extends TrayDialog { super.okPressed(); } - @Override + @Override protected IDialogSettings getDialogBoundsSettings() { - IDialogSettings settings = DebugUIPlugin.getDefault().getDialogSettings(); - IDialogSettings section = settings.getSection(getDialogSettingsSectionName()); - if (section == null) { - section = settings.addNewSection(getDialogSettingsSectionName()); - } - return section; - } + IDialogSettings settings = DebugUIPlugin.getDefault().getDialogSettings(); + IDialogSettings section = settings.getSection(getDialogSettingsSectionName()); + if (section == null) { + section = settings.addNewSection(getDialogSettingsSectionName()); + } + return section; + } /** * Returns the name of the section that this dialog stores its settings in diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchConfigurationManager.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchConfigurationManager.java index fe801b623..ddb52e0f9 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchConfigurationManager.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchConfigurationManager.java @@ -325,16 +325,16 @@ public class LaunchConfigurationManager implements ILaunchListener, ISavePartici * @param newLaunch the newly added launch to leave in the view */ protected void removeTerminatedLaunches(ILaunch newLaunch) { - if (DebugUIPlugin.getDefault().getPreferenceStore().getBoolean(IDebugUIConstants.PREF_AUTO_REMOVE_OLD_LAUNCHES)) { - ILaunchManager lManager= DebugPlugin.getDefault().getLaunchManager(); - Object[] launches= lManager.getLaunches(); - for (int i= 0; i < launches.length; i++) { - ILaunch launch= (ILaunch)launches[i]; - if (launch != newLaunch && launch.isTerminated()) { - lManager.removeLaunch(launch); - } - } - } + if (DebugUIPlugin.getDefault().getPreferenceStore().getBoolean(IDebugUIConstants.PREF_AUTO_REMOVE_OLD_LAUNCHES)) { + ILaunchManager lManager= DebugPlugin.getDefault().getLaunchManager(); + Object[] launches= lManager.getLaunches(); + for (int i= 0; i < launches.length; i++) { + ILaunch launch= (ILaunch)launches[i]; + if (launch != newLaunch && launch.isTerminated()) { + lManager.removeLaunch(launch); + } + } + } } /** diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchConfigurationPropertiesDialog.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchConfigurationPropertiesDialog.java index baae46074..71352717f 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchConfigurationPropertiesDialog.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchConfigurationPropertiesDialog.java @@ -107,9 +107,9 @@ public class LaunchConfigurationPropertiesDialog extends LaunchConfigurationsDia @Override public boolean close() { - if (!isSafeToClose()) { - return false; - } + if (!isSafeToClose()) { + return false; + } DebugPlugin.getDefault().getLaunchManager().removeLaunchConfigurationListener(this); return super.close(); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchConfigurationTabGroupViewer.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchConfigurationTabGroupViewer.java index f947492a9..75201c55d 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchConfigurationTabGroupViewer.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchConfigurationTabGroupViewer.java @@ -172,13 +172,13 @@ public class LaunchConfigurationTabGroupViewer { * A link to allow users to select a valid set of launch options for the specified mode * @since 3.3 */ - private Link fOptionsLink = null; + private Link fOptionsLink = null; - /** - * A label to indicate that the user needs to select an a launcher. - * @since 3.5 - */ - private Label fOptionsErrorLabel = null; + /** + * A label to indicate that the user needs to select an a launcher. + * @since 3.5 + */ + private Label fOptionsErrorLabel = null; /** * A new composite replacing the perspectives tab @@ -232,17 +232,17 @@ public class LaunchConfigurationTabGroupViewer { */ private void createControl(Composite parent) { fViewerControl = parent; - fViewform = new ViewForm(parent, SWT.FLAT | SWT.BORDER); - GridLayout layout = new GridLayout(1, false); - layout.horizontalSpacing = 0; - layout.verticalSpacing = 0; - fViewform.setLayout(layout); + fViewform = new ViewForm(parent, SWT.FLAT | SWT.BORDER); + GridLayout layout = new GridLayout(1, false); + layout.horizontalSpacing = 0; + layout.verticalSpacing = 0; + fViewform.setLayout(layout); GridData gd = new GridData(GridData.FILL_BOTH); fViewform.setLayoutData(gd); - fViewform.setTopLeft(null); + fViewform.setTopLeft(null); - Composite mainComp = SWTFactory.createComposite(fViewform, fViewform.getFont(), 1, 1, 1, 0, 0); - fViewform.setContent(mainComp); + Composite mainComp = SWTFactory.createComposite(fViewform, fViewform.getFont(), 1, 1, 1, 0, 0); + fViewform.setContent(mainComp); fTabPlaceHolder = SWTFactory.createComposite(mainComp, 1, 1, GridData.FILL_BOTH); fTabPlaceHolder.setLayout(new StackLayout()); @@ -254,13 +254,13 @@ public class LaunchConfigurationTabGroupViewer { SWTFactory.createLabel(fGroupComposite, LaunchConfigurationsMessages.LaunchConfigurationDialog__Name__16, 1); fNameWidget = new Text(fGroupComposite, SWT.SINGLE | SWT.BORDER); - fNameWidget.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + fNameWidget.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); fNameWidget.addModifyListener(e -> { if (!fInitializingTabs) { handleNameModified(); } } - ); + ); createTabFolder(fGroupComposite); @@ -269,8 +269,8 @@ public class LaunchConfigurationTabGroupViewer { //a link for launch options fOptionsErrorLabel = new Label(linkComp, SWT.NONE); - gd = new GridData(); - fOptionsErrorLabel.setLayoutData(gd); + gd = new GridData(); + fOptionsErrorLabel.setLayoutData(gd); fOptionsLink = new Link(linkComp, SWT.WRAP); fOptionsLink.setFont(linkComp.getFont()); @@ -347,7 +347,7 @@ public class LaunchConfigurationTabGroupViewer { } } }); - Dialog.applyDialogFont(parent); + Dialog.applyDialogFont(parent); } /** @@ -521,7 +521,7 @@ public class LaunchConfigurationTabGroupViewer { boolean newwc = !getWorkingCopy().isDirty(); ILaunchConfigurationTab tab = getActiveTab(); if (tab != null) { - tab.performApply(getWorkingCopy()); + tab.performApply(getWorkingCopy()); } if((fOriginal instanceof ILaunchConfigurationWorkingCopy) && newwc) { try { @@ -583,9 +583,9 @@ public class LaunchConfigurationTabGroupViewer { } fOptionsLink.setVisible(!canLaunchWithModes() || hasMultipleDelegates()); if (hasDuplicateDelegates()) { - fOptionsErrorLabel.setImage(JFaceResources.getImage(Dialog.DLG_IMG_MESSAGE_ERROR)); + fOptionsErrorLabel.setImage(JFaceResources.getImage(Dialog.DLG_IMG_MESSAGE_ERROR)); } else { - fOptionsErrorLabel.setImage(null); + fOptionsErrorLabel.setImage(null); } fViewform.layout(true, true); } @@ -820,12 +820,12 @@ public class LaunchConfigurationTabGroupViewer { fShowCommandLineButton.setVisible(visible); } } - /** - * sets the current widget focus to the 'Name' widget - */ - protected void setFocusOnName() { - fNameWidget.setFocus(); - } + /** + * sets the current widget focus to the 'Name' widget + */ + protected void setFocusOnName() { + fNameWidget.setFocus(); + } /** * Displays tabs for the current working copy @@ -929,7 +929,7 @@ public class LaunchConfigurationTabGroupViewer { } //set the default tab as the first one if (tabs.length > 0) { - setActiveTab(tabs[0]); + setActiveTab(tabs[0]); } // select same tab as before, if possible for (int i = 0; i < tabs.length; i++) { @@ -1142,7 +1142,7 @@ public class LaunchConfigurationTabGroupViewer { * Returns the working copy used to edit the original, possibly * <code>null</code>. * @return the backing {@link ILaunchConfigurationWorkingCopy} - */ + */ protected ILaunchConfigurationWorkingCopy getWorkingCopy() { return fWorkingCopy; } @@ -1292,7 +1292,7 @@ public class LaunchConfigurationTabGroupViewer { } if(hasDuplicateDelegates()) { - return LaunchConfigurationsMessages.LaunchConfigurationTabGroupViewer_18; + return LaunchConfigurationsMessages.LaunchConfigurationTabGroupViewer_18; } String message = null; @@ -1429,8 +1429,8 @@ public class LaunchConfigurationTabGroupViewer { */ private void disposeExistingTabs() { fDisposingTabs = true; - fTabFolder.dispose(); - fTabFolder = null; + fTabFolder.dispose(); + fTabFolder = null; createTabFolder(fGroupComposite); disposeTabGroup(); fDisposingTabs = false; diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchConfigurationTabGroupWrapper.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchConfigurationTabGroupWrapper.java index f4d8d8098..24bef0588 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchConfigurationTabGroupWrapper.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchConfigurationTabGroupWrapper.java @@ -161,9 +161,9 @@ public class LaunchConfigurationTabGroupWrapper implements ILaunchConfigurationT TabCollector collector = new TabCollector(Arrays.asList(fGroup.getTabs()), Arrays.asList(ext)); while(collector.hasNext()) { ILaunchConfigurationTab next = collector.next(); - if (next != null) { - fTabs.add(next); - } + if (next != null) { + fTabs.add(next); + } } } else { diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchConfigurationView.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchConfigurationView.java index 70f3161cc..39537b252 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchConfigurationView.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchConfigurationView.java @@ -310,13 +310,13 @@ public class LaunchConfigurationView extends AbstractDebugView implements ILaunc } } - /** - * The given launch configuration has been added. Add it to the tree. - * @param configuration the added configuration - */ - private void handleConfigurationAdded(ILaunchConfiguration configuration, ILaunchConfiguration from) { - TreeViewer viewer = getTreeViewer(); - if (viewer != null) { + /** + * The given launch configuration has been added. Add it to the tree. + * @param configuration the added configuration + */ + private void handleConfigurationAdded(ILaunchConfiguration configuration, ILaunchConfiguration from) { + TreeViewer viewer = getTreeViewer(); + if (viewer != null) { try { viewer.getControl().setRedraw(false); if (configuration.getPrototype() != null) { @@ -324,49 +324,49 @@ public class LaunchConfigurationView extends AbstractDebugView implements ILaunc } else { viewer.add(configuration.getType(), configuration); } - // if moved, remove original now - if (from != null) { - viewer.remove(from); - } - if (isAutoSelect()) { - viewer.setSelection(new StructuredSelection(configuration), true); - } - updateFilterLabel(); + // if moved, remove original now + if (from != null) { + viewer.remove(from); + } + if (isAutoSelect()) { + viewer.setSelection(new StructuredSelection(configuration), true); + } + updateFilterLabel(); } catch (CoreException e) {} finally { viewer.getControl().setRedraw(true); } - } - } - - /** - * Returns if the specified configuration is supported by this instance of the view. - * Supported means that: - * <ul> - * <li>The configuration is not private</li> - * <li>AND that the configurations' type supports the mode of the current launch group</li> - * <li>AND that the category of the configurations' type matches that of the current launch group</li> - * </ul> - * @param configuration the configuration - * @return true if the configuration is supported by this instance of the view, false otherwise - * - * @since 3.4 - */ - protected boolean isSupportedConfiguration(ILaunchConfiguration configuration) { - try { - ILaunchConfigurationType type = configuration.getType(); - return !configuration.getAttribute(IDebugUIConstants.ATTR_PRIVATE, false) && - type.supportsMode(getLaunchGroup().getMode()) && - equalCategories(type.getCategory(), getLaunchGroup().getCategory()); - } - catch(CoreException ce) { - DebugUIPlugin.log(ce); - } - return false; - } - - /** + } + } + + /** + * Returns if the specified configuration is supported by this instance of the view. + * Supported means that: + * <ul> + * <li>The configuration is not private</li> + * <li>AND that the configurations' type supports the mode of the current launch group</li> + * <li>AND that the category of the configurations' type matches that of the current launch group</li> + * </ul> + * @param configuration the configuration + * @return true if the configuration is supported by this instance of the view, false otherwise + * + * @since 3.4 + */ + protected boolean isSupportedConfiguration(ILaunchConfiguration configuration) { + try { + ILaunchConfigurationType type = configuration.getType(); + return !configuration.getAttribute(IDebugUIConstants.ATTR_PRIVATE, false) && + type.supportsMode(getLaunchGroup().getMode()) && + equalCategories(type.getCategory(), getLaunchGroup().getCategory()); + } + catch(CoreException ce) { + DebugUIPlugin.log(ce); + } + return false; + } + + /** * Returns whether the given categories are equal. * * @param c1 category identifier or <code>null</code> @@ -409,14 +409,14 @@ public class LaunchConfigurationView extends AbstractDebugView implements ILaunc /** * The given launch configuration has been removed. Remove it from the tree. - * @param configuration the deleted configuration - */ - private void handleConfigurationRemoved(ILaunchConfiguration configuration) { - getTreeViewer().remove(configuration); + * @param configuration the deleted configuration + */ + private void handleConfigurationRemoved(ILaunchConfiguration configuration) { + getTreeViewer().remove(configuration); updateFilterLabel(); - } + } - /** + /** * This is similar to IWorkbenchPart#createPartControl(Composite), but it is * called by the launch dialog when creating the launch config tree view. * Since this view is not contained in the workbench, we cannot do all the diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchConfigurationsDialog.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchConfigurationsDialog.java index a4a49817d..308b17848 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchConfigurationsDialog.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchConfigurationsDialog.java @@ -346,11 +346,11 @@ public class LaunchConfigurationsDialog extends TitleAreaDialog implements ILaun @Override public boolean close() { - if (!isSafeToClose()) { - return false; - } - persistSashWeights(); - persistExpansion(); + if (!isSafeToClose()) { + return false; + } + persistSashWeights(); + persistExpansion(); setCurrentlyVisibleLaunchConfigurationDialog(null); fTabViewer.dispose(); if (fLaunchConfigurationView != null) { @@ -394,9 +394,9 @@ public class LaunchConfigurationsDialog extends TitleAreaDialog implements ILaun composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); composite.setFont(font); // create help control if needed - if (isHelpAvailable()) { - createHelpControl(composite); - } + if (isHelpAvailable()) { + createHelpControl(composite); + } Composite monitorComposite = new Composite(composite, SWT.NULL); layout = new GridLayout(); layout.marginHeight = 0; @@ -447,7 +447,7 @@ public class LaunchConfigurationsDialog extends TitleAreaDialog implements ILaun @Override protected void createButtonsForButtonBar(Composite parent) { Button button = createButton(parent, ID_LAUNCH_BUTTON, getLaunchButtonText(), true); - button.setEnabled(false); + button.setEnabled(false); Listener[] listeners = button.getListeners(SWT.Selection); for (Listener listener : listeners) { button.removeListener(SWT.Selection, listener); @@ -528,26 +528,26 @@ public class LaunchConfigurationsDialog extends TitleAreaDialog implements ILaun * @return the composite used for launch configuration selection area */ protected Control createLaunchConfigurationSelectionArea(Composite parent) { - Composite comp = new Composite(parent, SWT.FLAT); - GridLayout gridLayout = new GridLayout(1, false); - gridLayout.marginHeight = 0; - gridLayout.marginWidth = 0; - comp.setLayout(gridLayout); - comp.setLayoutData(new GridData(GridData.FILL_BOTH)); - - ViewForm viewForm = new ViewForm(comp, SWT.FLAT | SWT.BORDER); - ToolBarManager toolBarManager= new ToolBarManager(SWT.FLAT); - ToolBar toolBar = toolBarManager.createControl(viewForm); - toolBar.setBackground(parent.getBackground()); - viewForm.setTopLeft(toolBar); - viewForm.setLayoutData(new GridData(GridData.FILL_BOTH)); - - Composite viewFormContents = new Composite(viewForm, SWT.FLAT); - gridLayout = new GridLayout(); - gridLayout.marginHeight = 5; - gridLayout.marginWidth = 5; - viewFormContents.setLayout(gridLayout); - viewFormContents.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND)); + Composite comp = new Composite(parent, SWT.FLAT); + GridLayout gridLayout = new GridLayout(1, false); + gridLayout.marginHeight = 0; + gridLayout.marginWidth = 0; + comp.setLayout(gridLayout); + comp.setLayoutData(new GridData(GridData.FILL_BOTH)); + + ViewForm viewForm = new ViewForm(comp, SWT.FLAT | SWT.BORDER); + ToolBarManager toolBarManager= new ToolBarManager(SWT.FLAT); + ToolBar toolBar = toolBarManager.createControl(viewForm); + toolBar.setBackground(parent.getBackground()); + viewForm.setTopLeft(toolBar); + viewForm.setLayoutData(new GridData(GridData.FILL_BOTH)); + + Composite viewFormContents = new Composite(viewForm, SWT.FLAT); + gridLayout = new GridLayout(); + gridLayout.marginHeight = 5; + gridLayout.marginWidth = 5; + viewFormContents.setLayout(gridLayout); + viewFormContents.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND)); fLaunchConfigurationView = new LaunchConfigurationView(getLaunchGroup(), createViewerFilters()); fLaunchConfigurationView.createLaunchDialogControl(viewFormContents); Text filterText = fLaunchConfigurationView.getFilteringTextControl(); @@ -588,7 +588,7 @@ public class LaunchConfigurationsDialog extends TitleAreaDialog implements ILaun Control control = viewer.getControl(); GridData gd = new GridData(GridData.FILL_BOTH); control.setLayoutData(gd); - viewForm.setContent(viewFormContents); + viewForm.setContent(viewFormContents); AbstractLaunchConfigurationAction.IConfirmationRequestor requestor = new AbstractLaunchConfigurationAction.IConfirmationRequestor() { @Override public boolean getConfirmation() { @@ -737,15 +737,15 @@ public class LaunchConfigurationsDialog extends TitleAreaDialog implements ILaun * * @since 3.2 */ - @Override + @Override protected IDialogSettings getDialogBoundsSettings() { - return getDialogSettings(); - } + return getDialogSettings(); + } - @Override + @Override protected int getDialogBoundsStrategy() { - return DIALOG_PERSISTSIZE; - } + return DIALOG_PERSISTSIZE; + } /** * Returns the dialog settings for this dialog. Subclasses should override @@ -784,12 +784,12 @@ public class LaunchConfigurationsDialog extends TitleAreaDialog implements ILaun return DebugUIPlugin.getStandardDisplay(); } - /** - * Gets the duplicate menu action - * - * @return the duplicate menu action - */ - protected AbstractLaunchConfigurationAction getDuplicateAction() { + /** + * Gets the duplicate menu action + * + * @return the duplicate menu action + */ + protected AbstractLaunchConfigurationAction getDuplicateAction() { return (AbstractLaunchConfigurationAction)fLaunchConfigurationView.getAction(DuplicateLaunchConfigurationAction.ID_DUPLICATE_ACTION); } @@ -811,7 +811,7 @@ public class LaunchConfigurationsDialog extends TitleAreaDialog implements ILaun return IDebugHelpContextIds.LAUNCH_CONFIGURATION_DIALOG; } - /** + /** * Returns the status the dialog was opened on or <code>null</code> if none. * * @return IStatus @@ -820,7 +820,7 @@ public class LaunchConfigurationsDialog extends TitleAreaDialog implements ILaun return fInitialStatus; } - /** + /** * Return the last launched configuration in the workspace. * * @return the last launched configuration @@ -829,7 +829,7 @@ public class LaunchConfigurationsDialog extends TitleAreaDialog implements ILaun return DebugUIPlugin.getDefault().getLaunchConfigurationManager().getLastLaunch(getLaunchGroup().getIdentifier()); } - /** + /** * Returns the appropriate text for the launch button - run or debug. * * @return the launch button text @@ -838,7 +838,7 @@ public class LaunchConfigurationsDialog extends TitleAreaDialog implements ILaun return DebugPlugin.getDefault().getLaunchManager().getLaunchMode(getMode()).getLabel(); } - /** + /** * Returns the launch group being displayed. * * @return launch group @@ -847,10 +847,10 @@ public class LaunchConfigurationsDialog extends TitleAreaDialog implements ILaun return fGroup; } - @Override + @Override public String getMode() { - return getLaunchGroup().getMode(); - } + return getLaunchGroup().getMode(); + } /** * Gets the new menu action @@ -944,24 +944,24 @@ public class LaunchConfigurationsDialog extends TitleAreaDialog implements ILaun } /** - * Returns the current tab group - * - * @return the current tab group, or <code>null</code> if none - */ - public ILaunchConfigurationTabGroup getTabGroup() { - if (fTabViewer != null) { - return fTabViewer.getTabGroup(); - } - return null; - } + * Returns the current tab group + * + * @return the current tab group, or <code>null</code> if none + */ + public ILaunchConfigurationTabGroup getTabGroup() { + if (fTabViewer != null) { + return fTabViewer.getTabGroup(); + } + return null; + } - @Override + @Override public ILaunchConfigurationTab[] getTabs() { - if (getTabGroup() == null) { - return null; - } - return getTabGroup().getTabs(); - } + if (getTabGroup() == null) { + return null; + } + return getTabGroup().getTabs(); + } /** * Returns the viewer used to display the tabs for a launch configuration. @@ -1001,43 +1001,43 @@ public class LaunchConfigurationsDialog extends TitleAreaDialog implements ILaun * * @param event selection changed event */ - protected void handleLaunchConfigurationSelectionChanged(SelectionChangedEvent event) { - Object input = fTabViewer.getInput(); - Object newInput = null; + protected void handleLaunchConfigurationSelectionChanged(SelectionChangedEvent event) { + Object input = fTabViewer.getInput(); + Object newInput = null; IStructuredSelection selection = event.getStructuredSelection(); - if (selection.size() == 1) { + if (selection.size() == 1) { newInput = selection.getFirstElement(); - } - if (!isEqual(input, newInput)) { - ILaunchConfiguration original = fTabViewer.getOriginal(); - if (original != null && newInput == null && getLaunchManager().getMovedTo(original) != null) { - return; - } - boolean deleted = false; - if (original != null) { - deleted = !original.exists(); - } + } + if (!isEqual(input, newInput)) { + ILaunchConfiguration original = fTabViewer.getOriginal(); + if (original != null && newInput == null && getLaunchManager().getMovedTo(original) != null) { + return; + } + boolean deleted = false; + if (original != null) { + deleted = !original.exists(); + } boolean renamed = false; if (newInput instanceof ILaunchConfiguration) { renamed = getLaunchManager().getMovedFrom((ILaunchConfiguration)newInput) != null; } try { fSettingInput = true; - if (fTabViewer.canSave() && fTabViewer.isDirty() && !deleted && !renamed) { - if(fLaunchConfigurationView != null) { - fLaunchConfigurationView.setAutoSelect(false); - } - int ret = showUnsavedChangesDialog(); - if(ret == IDialogConstants.YES_ID) { - fTabViewer.handleApplyPressed(); + if (fTabViewer.canSave() && fTabViewer.isDirty() && !deleted && !renamed) { + if(fLaunchConfigurationView != null) { + fLaunchConfigurationView.setAutoSelect(false); + } + int ret = showUnsavedChangesDialog(); + if(ret == IDialogConstants.YES_ID) { + fTabViewer.handleApplyPressed(); ILaunchConfigurationTab[] tabs = getTabs(); if (tabs != null) { for (ILaunchConfigurationTab tab : tabs) { tab.postApply(); } } - fTabViewer.setInput(newInput); - } + fTabViewer.setInput(newInput); + } else if(ret == IDialogConstants.NO_ID) { fTabViewer.handleRevertPressed(); fTabViewer.setInput(newInput); @@ -1045,24 +1045,24 @@ public class LaunchConfigurationsDialog extends TitleAreaDialog implements ILaun else { fLaunchConfigurationView.getViewer().setSelection(new StructuredSelection(input)); } - fLaunchConfigurationView.setAutoSelect(true); - } - else { - fTabViewer.setInput(newInput); - if(fTabViewer.isDirty()) { - fTabViewer.handleApplyPressed(); - } - } + fLaunchConfigurationView.setAutoSelect(true); + } + else { + fTabViewer.setInput(newInput); + if(fTabViewer.isDirty()) { + fTabViewer.handleApplyPressed(); + } + } } finally { fSettingInput = false; updateButtons(); updateMessage(); } - if(getShell() != null && getShell().isVisible()) { - resize(); - } - } - } + if(getShell() != null && getShell().isVisible()) { + resize(); + } + } + } /** * Notification the 'launch' button has been pressed. Save and launch. @@ -1201,14 +1201,14 @@ public class LaunchConfigurationsDialog extends TitleAreaDialog implements ILaun * @return true if they are equal, false if object 1 is null, the result of o1.equals(o2) otherwise */ protected boolean isEqual(Object o1, Object o2) { - if (o1 == o2) { - return true; - } else if (o1 == null) { - return false; - } else { - return o1.equals(o2); - } - } + if (o1 == o2) { + return true; + } else if (o1 == null) { + return false; + } else { + return o1.equals(o2); + } + } /** * Returns whether the dialog can be closed @@ -1216,7 +1216,7 @@ public class LaunchConfigurationsDialog extends TitleAreaDialog implements ILaun * @return whether the dialog can be closed */ protected boolean isSafeToClose() { - return fActiveRunningOperations == 0; + return fActiveRunningOperations == 0; } /** @@ -1349,17 +1349,17 @@ public class LaunchConfigurationsDialog extends TitleAreaDialog implements ILaun * resize the dialog to show all relevant content */ protected void resize() { - if(getTabGroup() != null) { + if(getTabGroup() != null) { Point shell = getShell().getSize(); - int maxx = (int)(getDisplay().getBounds().width * MAX_DIALOG_WIDTH_PERCENT), + int maxx = (int)(getDisplay().getBounds().width * MAX_DIALOG_WIDTH_PERCENT), maxy = (int) (getDisplay().getBounds().height * MAX_DIALOG_HEIGHT_PERCENT); - maxx = (maxx < DEFAULT_INITIAL_DIALOG_SIZE.x ? DEFAULT_INITIAL_DIALOG_SIZE.x : maxx); - maxy = (maxy < DEFAULT_INITIAL_DIALOG_SIZE.y ? DEFAULT_INITIAL_DIALOG_SIZE.y : maxy); - Point psize = getShell().computeSize(SWT.DEFAULT, maxy); - if((psize.x > maxx ? maxx : psize.x) > shell.x || (psize.y > maxy ? maxy : psize.y) > shell.y) { + maxx = (maxx < DEFAULT_INITIAL_DIALOG_SIZE.x ? DEFAULT_INITIAL_DIALOG_SIZE.x : maxx); + maxy = (maxy < DEFAULT_INITIAL_DIALOG_SIZE.y ? DEFAULT_INITIAL_DIALOG_SIZE.y : maxy); + Point psize = getShell().computeSize(SWT.DEFAULT, maxy); + if((psize.x > maxx ? maxx : psize.x) > shell.x || (psize.y > maxy ? maxy : psize.y) > shell.y) { setShellSize(Math.min(psize.x, maxx), Math.min(psize.y, maxy)); constrainShellSize(); - } + } } } @@ -1512,9 +1512,9 @@ public class LaunchConfigurationsDialog extends TitleAreaDialog implements ILaun } /** - * Increase the size of this dialog's <code>Shell</code> by the specified amounts. - * Do not increase the size of the Shell beyond the bounds of the Display. - */ + * Increase the size of this dialog's <code>Shell</code> by the specified amounts. + * Do not increase the size of the Shell beyond the bounds of the Display. + */ protected void setShellSize(int width, int height) { Rectangle bounds = getShell().getMonitor().getBounds(); getShell().setSize(Math.min(width, bounds.width), Math.min(height, bounds.height)); diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchShortcutExtension.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchShortcutExtension.java index adbb16e75..e8b188773 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchShortcutExtension.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchShortcutExtension.java @@ -68,29 +68,29 @@ public class LaunchShortcutExtension implements ILaunchShortcut2, IPluginContrib * Command handler for launch shortcut key binding. */ private class LaunchCommandHandler extends AbstractHandler { - // the shortcut to invoke - private LaunchShortcutExtension fShortcut; - private String fMode; - - /** - * Constructs a new command handler for the given shortcut - * - * @param shortcut - */ - public LaunchCommandHandler(LaunchShortcutExtension shortcut, String mode) { - fShortcut = shortcut; - fMode = mode; - } + // the shortcut to invoke + private LaunchShortcutExtension fShortcut; + private String fMode; + + /** + * Constructs a new command handler for the given shortcut + * + * @param shortcut + */ + public LaunchCommandHandler(LaunchShortcutExtension shortcut, String mode) { + fShortcut = shortcut; + fMode = mode; + } @Override public Object execute(ExecutionEvent event) throws ExecutionException { - LaunchShortcutAction action = new LaunchShortcutAction(fMode, fShortcut); - if (action.isEnabled()) { - action.run(); - } else { - fShortcut.launch(new StructuredSelection(), fMode); - } - return null; + LaunchShortcutAction action = new LaunchShortcutAction(fMode, fShortcut); + if (action.isEnabled()) { + action.run(); + } else { + fShortcut.launch(new StructuredSelection(), fMode); + } + return null; } } @@ -116,16 +116,16 @@ public class LaunchShortcutExtension implements ILaunchShortcut2, IPluginContrib /** * Registers command handlers for launch shortcut key bindings */ - private void registerLaunchCommandHandlers() { - IHandlerService handlerService = PlatformUI.getWorkbench().getAdapter(IHandlerService.class); - if(handlerService != null) { + private void registerLaunchCommandHandlers() { + IHandlerService handlerService = PlatformUI.getWorkbench().getAdapter(IHandlerService.class); + if(handlerService != null) { for (String mode : getModes()) { - String id = getId() + "." + mode; //$NON-NLS-1$ - IHandler handler = new LaunchCommandHandler(this, mode); - handlerService.activateHandler(id, handler); - } - } - } + String id = getId() + "." + mode; //$NON-NLS-1$ + IHandler handler = new LaunchCommandHandler(this, mode); + handlerService.activateHandler(id, handler); + } + } + } /** * Sets the configuration element that defines the attributes diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/PerspectiveManager.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/PerspectiveManager.java index 2e3bd4845..606540170 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/PerspectiveManager.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/PerspectiveManager.java @@ -215,13 +215,13 @@ public class PerspectiveManager implements ILaunchListener, ISuspendTriggerListe @Override protected IStatus run(final IProgressMonitor monitor) { - if (monitor.isCanceled()) { + if (monitor.isCanceled()) { + return Status.CANCEL_STATUS; + } + Display asyncDisplay = DebugUIPlugin.getStandardDisplay(); + if (asyncDisplay == null || asyncDisplay.isDisposed()) { return Status.CANCEL_STATUS; } - Display asyncDisplay = DebugUIPlugin.getStandardDisplay(); - if (asyncDisplay == null || asyncDisplay.isDisposed()) { - return Status.CANCEL_STATUS; - } asyncDisplay.asyncExec(() -> { IStatus result = null; Throwable throwable = null; @@ -242,10 +242,10 @@ public class PerspectiveManager implements ILaunchListener, ISuspendTriggerListe done(result); } }); - return Job.ASYNC_FINISH; + return Job.ASYNC_FINISH; } - public abstract IStatus runInUIThread(IProgressMonitor monitor); + public abstract IStatus runInUIThread(IProgressMonitor monitor); } @@ -270,10 +270,10 @@ public class PerspectiveManager implements ILaunchListener, ISuspendTriggerListe */ private boolean fPrompting; - /** - * Maps each launch to its perspective context activation. These - * are disabled when a launch terminates. - */ + /** + * Maps each launch to its perspective context activation. These + * are disabled when a launch terminates. + */ private Map<ILaunch, IContextActivation[]> fLaunchToContextActivations = new HashMap<>(); /** @@ -304,10 +304,10 @@ public class PerspectiveManager implements ILaunchListener, ISuspendTriggerListe */ @Override public synchronized void launchRemoved(final ILaunch launch) { - ISuspendTrigger trigger = launch.getAdapter(ISuspendTrigger.class); - if (trigger != null) { - trigger.removeSuspendTriggerListener(this); - } + ISuspendTrigger trigger = launch.getAdapter(ISuspendTrigger.class); + if (trigger != null) { + trigger.removeSuspendTriggerListener(this); + } Runnable r = () -> { IContextActivation[] activations = fLaunchToContextActivations.remove(launch); if (activations != null) { @@ -336,10 +336,10 @@ public class PerspectiveManager implements ILaunchListener, ISuspendTriggerListe */ @Override public synchronized void launchAdded(ILaunch launch) { - ISuspendTrigger trigger = launch.getAdapter(ISuspendTrigger.class); - if (trigger != null) { - trigger.addSuspendTriggerListener(this); - } + ISuspendTrigger trigger = launch.getAdapter(ISuspendTrigger.class); + if (trigger != null) { + trigger.addSuspendTriggerListener(this); + } String perspectiveId = null; // check event filters try { @@ -890,8 +890,8 @@ public class PerspectiveManager implements ILaunchListener, ISuspendTriggerListe * * @return XML * @exception IOException if unable to generate the XML - * @exception TransformerException if unable to generate the XML - * @exception ParserConfigurationException if unable to generate the XML + * @exception TransformerException if unable to generate the XML + * @exception ParserConfigurationException if unable to generate the XML */ private String generatePerspectiveXML() throws ParserConfigurationException, CoreException { Document doc = DebugUIPlugin.getDocument(); diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/SaveScopeResourcesHandler.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/SaveScopeResourcesHandler.java index 500ef030b..f8a61893c 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/SaveScopeResourcesHandler.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/SaveScopeResourcesHandler.java @@ -169,27 +169,27 @@ public class SaveScopeResourcesHandler implements IStatusHandler { projects = (IProject[]) objects[1]; } } - if (config != null) { - if (DebugUITools.isPrivate(config)) { - return Boolean.TRUE; - } - } - if (projects != null && projects.length > 0) { - IPreferenceStore store = DebugUIPlugin.getDefault().getPreferenceStore(); - String save = store.getString(IInternalDebugUIConstants.PREF_SAVE_DIRTY_EDITORS_BEFORE_LAUNCH); - int ret = showSaveDialog(projects, !save.equals(MessageDialogWithToggle.NEVER), save.equals(MessageDialogWithToggle.PROMPT)); - if(ret == IDialogConstants.OK_ID) { - doSave(); - return Boolean.TRUE; - } - return Boolean.FALSE; - } - else { + if (config != null) { + if (DebugUITools.isPrivate(config)) { + return Boolean.TRUE; + } + } + if (projects != null && projects.length > 0) { + IPreferenceStore store = DebugUIPlugin.getDefault().getPreferenceStore(); + String save = store.getString(IInternalDebugUIConstants.PREF_SAVE_DIRTY_EDITORS_BEFORE_LAUNCH); + int ret = showSaveDialog(projects, !save.equals(MessageDialogWithToggle.NEVER), save.equals(MessageDialogWithToggle.PROMPT)); + if(ret == IDialogConstants.OK_ID) { + doSave(); + return Boolean.TRUE; + } + return Boolean.FALSE; + } + else { @SuppressWarnings("deprecation") boolean cancel = DebugUIPlugin.preLaunchSave(); - return Boolean.valueOf(cancel); - } - } + return Boolean.valueOf(cancel); + } + } /** * diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/SelectFavoritesDialog.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/SelectFavoritesDialog.java index b10f6b6fe..eba5ab2f7 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/SelectFavoritesDialog.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/SelectFavoritesDialog.java @@ -91,11 +91,11 @@ public class SelectFavoritesDialog extends AbstractDebugCheckboxSelectionDialog /** * Returns a label to use for launch mode with accelerators removed. * - * @return label to use for launch mode with accelerators removed - */ - private String getModeLabel() { - return DebugUIPlugin.removeAccelerators(fHistory.getLaunchGroup().getLabel()); - } + * @return label to use for launch mode with accelerators removed + */ + private String getModeLabel() { + return DebugUIPlugin.removeAccelerators(fHistory.getLaunchGroup().getLabel()); + } @Override protected String getDialogSettingsId() { diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/memory/MemoryRenderingType.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/memory/MemoryRenderingType.java index 2b027a688..d1380037a 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/memory/MemoryRenderingType.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/memory/MemoryRenderingType.java @@ -30,55 +30,55 @@ import org.eclipse.debug.ui.memory.IMemoryRenderingTypeDelegate; */ class MemoryRenderingType implements IMemoryRenderingType { - private IConfigurationElement fConfigurationElement; - private IMemoryRenderingTypeDelegate fDelegate; + private IConfigurationElement fConfigurationElement; + private IMemoryRenderingTypeDelegate fDelegate; - // attributes for a memoryRenderingType - static final String ATTR_MEM_RENDERING_TYPE_NAME = "name"; //$NON-NLS-1$ - static final String ATTR_MEM_RENDERING_TYPE_ID = "id"; //$NON-NLS-1$ - static final String ATTR_MEM_RENDERING_TYPE_DELEGATE = "class"; //$NON-NLS-1$ + // attributes for a memoryRenderingType + static final String ATTR_MEM_RENDERING_TYPE_NAME = "name"; //$NON-NLS-1$ + static final String ATTR_MEM_RENDERING_TYPE_ID = "id"; //$NON-NLS-1$ + static final String ATTR_MEM_RENDERING_TYPE_DELEGATE = "class"; //$NON-NLS-1$ - /** - * Constructs a rendering type from a contribution. - */ - MemoryRenderingType(IConfigurationElement element) { - fConfigurationElement = element; - } + /** + * Constructs a rendering type from a contribution. + */ + MemoryRenderingType(IConfigurationElement element) { + fConfigurationElement = element; + } - @Override + @Override public String getLabel() { - return fConfigurationElement.getAttribute(ATTR_MEM_RENDERING_TYPE_NAME); - } + return fConfigurationElement.getAttribute(ATTR_MEM_RENDERING_TYPE_NAME); + } - @Override + @Override public String getId() { - return fConfigurationElement.getAttribute(ATTR_MEM_RENDERING_TYPE_ID); - } + return fConfigurationElement.getAttribute(ATTR_MEM_RENDERING_TYPE_ID); + } - @Override + @Override public IMemoryRendering createRendering() throws CoreException { - if (fDelegate == null) { - fDelegate = (IMemoryRenderingTypeDelegate) fConfigurationElement.createExecutableExtension(ATTR_MEM_RENDERING_TYPE_DELEGATE); - } - return fDelegate.createRendering(getId()); - } + if (fDelegate == null) { + fDelegate = (IMemoryRenderingTypeDelegate) fConfigurationElement.createExecutableExtension(ATTR_MEM_RENDERING_TYPE_DELEGATE); + } + return fDelegate.createRendering(getId()); + } - /** - * Validates this contribution. - * - * @exception CoreException if invalid - */ - void validate() throws CoreException { - verifyPresent(ATTR_MEM_RENDERING_TYPE_ID); - verifyPresent(ATTR_MEM_RENDERING_TYPE_NAME); - verifyPresent(ATTR_MEM_RENDERING_TYPE_DELEGATE); - } + /** + * Validates this contribution. + * + * @exception CoreException if invalid + */ + void validate() throws CoreException { + verifyPresent(ATTR_MEM_RENDERING_TYPE_ID); + verifyPresent(ATTR_MEM_RENDERING_TYPE_NAME); + verifyPresent(ATTR_MEM_RENDERING_TYPE_DELEGATE); + } - private void verifyPresent(String attrName) throws CoreException { - if (fConfigurationElement.getAttribute(attrName) == null) { - Status status = new Status(IStatus.ERROR, DebugUIPlugin.getUniqueIdentifier(), IDebugUIConstants.INTERNAL_ERROR, - "<memoryRenderingType> element missing required attribute: " + attrName, null); //$NON-NLS-1$ - throw new CoreException(status); - } - } + private void verifyPresent(String attrName) throws CoreException { + if (fConfigurationElement.getAttribute(attrName) == null) { + Status status = new Status(IStatus.ERROR, DebugUIPlugin.getUniqueIdentifier(), IDebugUIConstants.INTERNAL_ERROR, + "<memoryRenderingType> element missing required attribute: " + attrName, null); //$NON-NLS-1$ + throw new CoreException(status); + } + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/BreakpointContainerLabelProvider.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/BreakpointContainerLabelProvider.java index 57f5608e7..13f305fe1 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/BreakpointContainerLabelProvider.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/BreakpointContainerLabelProvider.java @@ -39,28 +39,28 @@ public class BreakpointContainerLabelProvider extends DebugElementLabelProvider ImageDescriptor desc = super.getImageDescriptor(elementPath, presentationContext, columnId); int flags = computeAdornmentFlags(); - if (flags > 0) { - Image image = DebugUIPlugin.getImageDescriptorRegistry().get(desc); - CompositeDebugImageDescriptor compDesc = new CompositeDebugImageDescriptor(image, flags); - return compDesc; - } - return desc; + if (flags > 0) { + Image image = DebugUIPlugin.getImageDescriptorRegistry().get(desc); + CompositeDebugImageDescriptor compDesc = new CompositeDebugImageDescriptor(image, flags); + return compDesc; + } + return desc; } @Override public boolean getChecked(TreePath path, IPresentationContext presentationContext) throws CoreException { Object lastSegment = path.getLastSegment(); - if (lastSegment instanceof IBreakpointContainer) { - IBreakpointContainer container = (IBreakpointContainer) lastSegment; - IBreakpoint[] breakpoints = container.getBreakpoints(); - for (int i = 0; i < breakpoints.length; ++i) { - if (breakpoints[i].isEnabled()) { + if (lastSegment instanceof IBreakpointContainer) { + IBreakpointContainer container = (IBreakpointContainer) lastSegment; + IBreakpoint[] breakpoints = container.getBreakpoints(); + for (int i = 0; i < breakpoints.length; ++i) { + if (breakpoints[i].isEnabled()) { return true; } - } + } - return false; - } + return false; + } return super.getChecked(path, presentationContext); } @@ -102,10 +102,10 @@ public class BreakpointContainerLabelProvider extends DebugElementLabelProvider FontData fontData = super.getFontData(elementPath, presentationContext, columnId); if (fontData == null && element instanceof IAdaptable) { - IWorkbenchAdapter2 adapter = ((IAdaptable)element).getAdapter(IWorkbenchAdapter2.class); - if (adapter != null) { - fontData = adapter.getFont(element); - } + IWorkbenchAdapter2 adapter = ((IAdaptable)element).getAdapter(IWorkbenchAdapter2.class); + if (adapter != null) { + fontData = adapter.getFont(element); + } } return fontData; } @@ -117,10 +117,10 @@ public class BreakpointContainerLabelProvider extends DebugElementLabelProvider RGB rgb = super.getForeground(elementPath, presentationContext, columnId); if (rgb == null && element instanceof IAdaptable) { - IWorkbenchAdapter2 adapter = ((IAdaptable)element).getAdapter(IWorkbenchAdapter2.class); - if (adapter != null) { - rgb = adapter.getForeground(element); - } + IWorkbenchAdapter2 adapter = ((IAdaptable)element).getAdapter(IWorkbenchAdapter2.class); + if (adapter != null) { + rgb = adapter.getForeground(element); + } } return rgb; } @@ -132,23 +132,23 @@ public class BreakpointContainerLabelProvider extends DebugElementLabelProvider RGB rgb = super.getBackground(elementPath, presentationContext, columnId); if (rgb == null && element instanceof IAdaptable) { - IWorkbenchAdapter2 adapter = ((IAdaptable)element).getAdapter(IWorkbenchAdapter2.class); - if (adapter != null) { - rgb = adapter.getBackground(element); - } + IWorkbenchAdapter2 adapter = ((IAdaptable)element).getAdapter(IWorkbenchAdapter2.class); + if (adapter != null) { + rgb = adapter.getBackground(element); + } } return rgb; } /** - * Computes and return common adornment flags for the given category. - * - * @return adornment flags defined in CompositeDebugImageDescriptor - */ - private int computeAdornmentFlags() { - if (!DebugPlugin.getDefault().getBreakpointManager().isEnabled()) { - return CompositeDebugImageDescriptor.SKIP_BREAKPOINT; - } - return 0; - } + * Computes and return common adornment flags for the given category. + * + * @return adornment flags defined in CompositeDebugImageDescriptor + */ + private int computeAdornmentFlags() { + if (!DebugPlugin.getDefault().getBreakpointManager().isEnabled()) { + return CompositeDebugImageDescriptor.SKIP_BREAKPOINT; + } + return 0; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/BreakpointManagerContentProvider.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/BreakpointManagerContentProvider.java index 175603b8c..d0a952f4e 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/BreakpointManagerContentProvider.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/BreakpointManagerContentProvider.java @@ -74,209 +74,209 @@ import org.eclipse.ui.IWorkbenchWindow; * @since 3.6 */ public class BreakpointManagerContentProvider extends ElementContentProvider - implements IBreakpointsListener { - - /** - * Breakpoint input data. Contains all input specific data. - * - * @since 3.6 - */ - private class InputData { - /** - * Breakpoint manager input - */ - final private DefaultBreakpointsViewInput fInput; - - /** - * Model proxy of the input - */ + implements IBreakpointsListener { + + /** + * Breakpoint input data. Contains all input specific data. + * + * @since 3.6 + */ + private class InputData { + /** + * Breakpoint manager input + */ + final private DefaultBreakpointsViewInput fInput; + + /** + * Model proxy of the input + */ final private List<BreakpointManagerProxy> fProxies = new ArrayList<>(1); - /** - * Element comparator, use to compare the ordering of elements for the model - * <br/> Note: We assume that the comparator does not change. - */ - private ElementComparator fComparator; + /** + * Element comparator, use to compare the ordering of elements for the model + * <br/> Note: We assume that the comparator does not change. + */ + private ElementComparator fComparator; - /** - * The breakpoint root container.<br/> - * Note: The final qualifier guarantees that fContainer will be - * initialized before the class is accessed on other threads. - */ - final private BreakpointContainer fContainer; + /** + * The breakpoint root container.<br/> + * Note: The final qualifier guarantees that fContainer will be + * initialized before the class is accessed on other threads. + */ + final private BreakpointContainer fContainer; - /** - * Known current breakpoint organizers. - */ - private IBreakpointOrganizer[] fOrganizers; + /** + * Known current breakpoint organizers. + */ + private IBreakpointOrganizer[] fOrganizers; - private IStructuredSelection fDebugContext = StructuredSelection.EMPTY; + private IStructuredSelection fDebugContext = StructuredSelection.EMPTY; - private IPropertyChangeListener fOrganizersListener = new IPropertyChangeListener() { - @Override + private IPropertyChangeListener fOrganizersListener = new IPropertyChangeListener() { + @Override public void propertyChange(PropertyChangeEvent event) { - // For any property changes in breakpoint organizers, refresh the containers. - updateContainers(); - } - }; + // For any property changes in breakpoint organizers, refresh the containers. + updateContainers(); + } + }; - private IPropertyChangeListener fPresentationContextListener = new IPropertyChangeListener() { - @Override + private IPropertyChangeListener fPresentationContextListener = new IPropertyChangeListener() { + @Override public void propertyChange(PropertyChangeEvent event) { - presentationPropertyChanged(event); - } - }; + presentationPropertyChanged(event); + } + }; - private IDebugContextListener fDebugContextListener = new IDebugContextListener() { - @Override + private IDebugContextListener fDebugContextListener = new IDebugContextListener() { + @Override public void debugContextChanged(DebugContextEvent event) { - InputData.this.debugContextChanged(event); - } - }; - - /** - * Constructor - * - * @param input the breakpoint manager input - */ - InputData(DefaultBreakpointsViewInput input) { - fInput = input; - fComparator = (ElementComparator) - input.getContext().getProperty(IBreakpointUIConstants.PROP_BREAKPOINTS_ELEMENT_COMPARATOR); - - fOrganizers = (IBreakpointOrganizer[]) - input.getContext().getProperty(IBreakpointUIConstants.PROP_BREAKPOINTS_ORGANIZERS); - - // Create the initial container. - ModelDelta initialDelta = new ModelDelta(fInput, 0, IModelDelta.NO_CHANGE, -1); - IBreakpoint[] breakpoints = filterBreakpoints( - fInput, getSelectionFilter(fInput, getDebugContext()), fBpManager.getBreakpoints()); - fContainer = createRootContainer(initialDelta, fInput, fOrganizers, breakpoints); - - registerOrganizersListener(null, fOrganizers); - input.getContext().addPropertyChangeListener(fPresentationContextListener); - - IWorkbenchWindow window = fInput.getContext().getWindow(); - if (window != null) { - IDebugContextService debugContextService = DebugUITools.getDebugContextManager().getContextService(window); - ISelection debugContext = debugContextService.getActiveContext(); - if (debugContext instanceof IStructuredSelection) { - synchronized(this) { - fDebugContext = (IStructuredSelection)debugContext; - } - } - debugContextService.addDebugContextListener(fDebugContextListener); - } - } - - void dispose() { - // Unregister listener to breakpoint organizers. - IBreakpointOrganizer[] organizers; - synchronized(this) { - organizers = fOrganizers; - fOrganizers = null; - } - registerOrganizersListener(organizers, null); - - // Unregister listener to presentation context. - fInput.getContext().removePropertyChangeListener(fPresentationContextListener); - - // Unregister listener to debug context in window. - IWorkbenchWindow window = fInput.getContext().getWindow(); - if (window != null) { - IDebugContextService debugContextService = DebugUITools.getDebugContextManager().getContextService(window); - debugContextService.removeDebugContextListener(fDebugContextListener); - } - - } - - void proxyInstalled(BreakpointManagerProxy proxy) { - ModelDelta rootDelta = null; - synchronized(this) { - fProxies.add(proxy); - - // Generate an install delta - - rootDelta = new ModelDelta(fInput, 0, IModelDelta.NO_CHANGE, -1); - buildInstallDelta(rootDelta, fContainer); - - if (DebugUIPlugin.DEBUG_BREAKPOINT_DELTAS) { - DebugUIPlugin.trace("PROXY INSTALLED (" + proxy + ")\n"); //$NON-NLS-1$ //$NON-NLS-2$ - } - - proxy.postModelChanged(rootDelta, false); - } - } - - synchronized void proxyDisposed(BreakpointManagerProxy proxy) { - fProxies.remove(proxy); - if (DebugUIPlugin.DEBUG_BREAKPOINT_DELTAS) { - DebugUIPlugin.trace("PROXY DISPOSED (" + proxy + ")\n"); //$NON-NLS-1$ //$NON-NLS-2$ - } - } - - synchronized BreakpointManagerProxy[] getProxies() { - return fProxies.toArray(new BreakpointManagerProxy[fProxies.size()]); - } - - /** - * Change the breakpoint organizers for the root container. - * - * @param organizers the new organizers. - */ - void setOrganizers(IBreakpointOrganizer[] organizers) { - IBreakpointOrganizer[] oldOrganizers = null; - synchronized(this) { - oldOrganizers = fOrganizers; - fOrganizers = organizers; - } - registerOrganizersListener(oldOrganizers, organizers); - updateContainers(); - } - - private void registerOrganizersListener(IBreakpointOrganizer[] oldOrganizers, IBreakpointOrganizer[] newOrganizers) { - if (oldOrganizers != null) { - for (int i = 0; i < oldOrganizers.length; i++) { - oldOrganizers[i].removePropertyChangeListener(fOrganizersListener); - } - } - if (newOrganizers != null) { - for (int i = 0; i < newOrganizers.length; i++) { - newOrganizers[i].addPropertyChangeListener(fOrganizersListener); - } - } - } - - void updateContainers() { - IBreakpoint[] breakpoints = filterBreakpoints( - fInput, getSelectionFilter(fInput, getDebugContext()), fBpManager.getBreakpoints()); - - synchronized(this) { - ModelDelta delta = new ModelDelta(fInput, IModelDelta.NO_CHANGE); - // create a reference container, use for deleting elements and adding elements - ModelDelta dummyDelta = new ModelDelta(null, IModelDelta.NO_CHANGE); - BreakpointContainer refContainer = createRootContainer(dummyDelta, fInput, fOrganizers, breakpoints); - - // delete the removed elements - deleteRemovedElements(fContainer, refContainer, delta); - - // adjust the old organizer with the reference organizer - BreakpointContainer.copyOrganizers(fContainer, refContainer); - - // insert the added elements - IBreakpoint newBreakpoint = insertAddedElements(fContainer, refContainer, delta); - delta.setChildCount(fContainer.getChildren().length); - - // select the new breakpoint - if (newBreakpoint != null) { - appendModelDeltaToElement(delta, newBreakpoint, IModelDelta.SELECT); - } - if (DebugUIPlugin.DEBUG_BREAKPOINT_DELTAS) { - DebugUIPlugin.trace("POST BREAKPOINT DELTA (setOrganizers)\n"); //$NON-NLS-1$ - } - postModelChanged(delta, false); - } - } + InputData.this.debugContextChanged(event); + } + }; + + /** + * Constructor + * + * @param input the breakpoint manager input + */ + InputData(DefaultBreakpointsViewInput input) { + fInput = input; + fComparator = (ElementComparator) + input.getContext().getProperty(IBreakpointUIConstants.PROP_BREAKPOINTS_ELEMENT_COMPARATOR); + + fOrganizers = (IBreakpointOrganizer[]) + input.getContext().getProperty(IBreakpointUIConstants.PROP_BREAKPOINTS_ORGANIZERS); + + // Create the initial container. + ModelDelta initialDelta = new ModelDelta(fInput, 0, IModelDelta.NO_CHANGE, -1); + IBreakpoint[] breakpoints = filterBreakpoints( + fInput, getSelectionFilter(fInput, getDebugContext()), fBpManager.getBreakpoints()); + fContainer = createRootContainer(initialDelta, fInput, fOrganizers, breakpoints); + + registerOrganizersListener(null, fOrganizers); + input.getContext().addPropertyChangeListener(fPresentationContextListener); + + IWorkbenchWindow window = fInput.getContext().getWindow(); + if (window != null) { + IDebugContextService debugContextService = DebugUITools.getDebugContextManager().getContextService(window); + ISelection debugContext = debugContextService.getActiveContext(); + if (debugContext instanceof IStructuredSelection) { + synchronized(this) { + fDebugContext = (IStructuredSelection)debugContext; + } + } + debugContextService.addDebugContextListener(fDebugContextListener); + } + } + + void dispose() { + // Unregister listener to breakpoint organizers. + IBreakpointOrganizer[] organizers; + synchronized(this) { + organizers = fOrganizers; + fOrganizers = null; + } + registerOrganizersListener(organizers, null); + + // Unregister listener to presentation context. + fInput.getContext().removePropertyChangeListener(fPresentationContextListener); + + // Unregister listener to debug context in window. + IWorkbenchWindow window = fInput.getContext().getWindow(); + if (window != null) { + IDebugContextService debugContextService = DebugUITools.getDebugContextManager().getContextService(window); + debugContextService.removeDebugContextListener(fDebugContextListener); + } + + } + + void proxyInstalled(BreakpointManagerProxy proxy) { + ModelDelta rootDelta = null; + synchronized(this) { + fProxies.add(proxy); + + // Generate an install delta + + rootDelta = new ModelDelta(fInput, 0, IModelDelta.NO_CHANGE, -1); + buildInstallDelta(rootDelta, fContainer); + + if (DebugUIPlugin.DEBUG_BREAKPOINT_DELTAS) { + DebugUIPlugin.trace("PROXY INSTALLED (" + proxy + ")\n"); //$NON-NLS-1$ //$NON-NLS-2$ + } + + proxy.postModelChanged(rootDelta, false); + } + } + + synchronized void proxyDisposed(BreakpointManagerProxy proxy) { + fProxies.remove(proxy); + if (DebugUIPlugin.DEBUG_BREAKPOINT_DELTAS) { + DebugUIPlugin.trace("PROXY DISPOSED (" + proxy + ")\n"); //$NON-NLS-1$ //$NON-NLS-2$ + } + } + + synchronized BreakpointManagerProxy[] getProxies() { + return fProxies.toArray(new BreakpointManagerProxy[fProxies.size()]); + } + + /** + * Change the breakpoint organizers for the root container. + * + * @param organizers the new organizers. + */ + void setOrganizers(IBreakpointOrganizer[] organizers) { + IBreakpointOrganizer[] oldOrganizers = null; + synchronized(this) { + oldOrganizers = fOrganizers; + fOrganizers = organizers; + } + registerOrganizersListener(oldOrganizers, organizers); + updateContainers(); + } + + private void registerOrganizersListener(IBreakpointOrganizer[] oldOrganizers, IBreakpointOrganizer[] newOrganizers) { + if (oldOrganizers != null) { + for (int i = 0; i < oldOrganizers.length; i++) { + oldOrganizers[i].removePropertyChangeListener(fOrganizersListener); + } + } + if (newOrganizers != null) { + for (int i = 0; i < newOrganizers.length; i++) { + newOrganizers[i].addPropertyChangeListener(fOrganizersListener); + } + } + } + + void updateContainers() { + IBreakpoint[] breakpoints = filterBreakpoints( + fInput, getSelectionFilter(fInput, getDebugContext()), fBpManager.getBreakpoints()); + + synchronized(this) { + ModelDelta delta = new ModelDelta(fInput, IModelDelta.NO_CHANGE); + // create a reference container, use for deleting elements and adding elements + ModelDelta dummyDelta = new ModelDelta(null, IModelDelta.NO_CHANGE); + BreakpointContainer refContainer = createRootContainer(dummyDelta, fInput, fOrganizers, breakpoints); + + // delete the removed elements + deleteRemovedElements(fContainer, refContainer, delta); + + // adjust the old organizer with the reference organizer + BreakpointContainer.copyOrganizers(fContainer, refContainer); + + // insert the added elements + IBreakpoint newBreakpoint = insertAddedElements(fContainer, refContainer, delta); + delta.setChildCount(fContainer.getChildren().length); + + // select the new breakpoint + if (newBreakpoint != null) { + appendModelDeltaToElement(delta, newBreakpoint, IModelDelta.SELECT); + } + if (DebugUIPlugin.DEBUG_BREAKPOINT_DELTAS) { + DebugUIPlugin.trace("POST BREAKPOINT DELTA (setOrganizers)\n"); //$NON-NLS-1$ + } + postModelChanged(delta, false); + } + } void sortContainers() { IBreakpoint[] breakpoints = filterBreakpoints(fInput, getSelectionFilter(fInput, getDebugContext()), fBpManager.getBreakpoints()); @@ -309,381 +309,381 @@ public class BreakpointManagerContentProvider extends ElementContentProvider } } - private synchronized IStructuredSelection getDebugContext() { - return fDebugContext; - } + private synchronized IStructuredSelection getDebugContext() { + return fDebugContext; + } - /** - * Handles the property changed events in presentation contexts. - * Sub-classes may override to perform additional handling. - * @param event the event - */ - private void presentationPropertyChanged(PropertyChangeEvent event) { + /** + * Handles the property changed events in presentation contexts. + * Sub-classes may override to perform additional handling. + * @param event the event + */ + private void presentationPropertyChanged(PropertyChangeEvent event) { if (IBreakpointUIConstants.PROP_BREAKPOINTS_ELEMENT_COMPARATOR_SORT.equals(event.getProperty())) { sortContainers(); } else if (IPresentationContext.PROPERTY_DISPOSED.equals(event.getProperty())) { - contextDisposed(fInput.getContext()); - } - if (IBreakpointUIConstants.PROP_BREAKPOINTS_ORGANIZERS.equals(event.getProperty())) { - IBreakpointOrganizer[] organizers = (IBreakpointOrganizer[])event.getNewValue(); - setOrganizers(organizers); - } - else if ( IBreakpointUIConstants.PROP_BREAKPOINTS_FILTER_SELECTION.equals(event.getProperty()) ) - { - IStructuredSelection selection = null; - - if (Boolean.TRUE.equals(event.getNewValue()) ) { - selection = getDebugContext(); - } - setFilterSelection(selection); - } - else if ( IBreakpointUIConstants.PROP_BREAKPOINTS_TRACK_SELECTION.equals(event.getProperty()) ) - { - IStructuredSelection selection = null; - - if (Boolean.TRUE.equals(event.getNewValue()) ) { - selection = getDebugContext(); - } - trackSelection(selection); - } - } - - private void debugContextChanged(DebugContextEvent event) { - IStructuredSelection newContext; - if (event.getContext() instanceof IStructuredSelection) { - newContext = (IStructuredSelection)event.getContext(); - } else { - newContext = StructuredSelection.EMPTY; - } - - synchronized(this) { - fDebugContext = newContext; - } - - if (Boolean.TRUE.equals(fInput.getContext().getProperty(IBreakpointUIConstants.PROP_BREAKPOINTS_FILTER_SELECTION)) ) { - setFilterSelection(newContext); - } - - if (Boolean.TRUE.equals(fInput.getContext().getProperty(IBreakpointUIConstants.PROP_BREAKPOINTS_TRACK_SELECTION)) ) { - trackSelection(newContext); - } - } - - - private void setFilterSelection(IStructuredSelection ss) { - ModelDelta delta = new ModelDelta(fInput, IModelDelta.NO_CHANGE); - boolean changed = false; - - // calculate supported breakpoints outside of the synchronized section. - IBreakpoint[] allBreakpoints = fBpManager.getBreakpoints(); - boolean[] supportedBreakpoints = new boolean[allBreakpoints.length]; - for (int i = 0; i < allBreakpoints.length; ++i) { - supportedBreakpoints[i] = supportsBreakpoint(ss, allBreakpoints[i]); - } - - synchronized(this) { + contextDisposed(fInput.getContext()); + } + if (IBreakpointUIConstants.PROP_BREAKPOINTS_ORGANIZERS.equals(event.getProperty())) { + IBreakpointOrganizer[] organizers = (IBreakpointOrganizer[])event.getNewValue(); + setOrganizers(organizers); + } + else if ( IBreakpointUIConstants.PROP_BREAKPOINTS_FILTER_SELECTION.equals(event.getProperty()) ) + { + IStructuredSelection selection = null; + + if (Boolean.TRUE.equals(event.getNewValue()) ) { + selection = getDebugContext(); + } + setFilterSelection(selection); + } + else if ( IBreakpointUIConstants.PROP_BREAKPOINTS_TRACK_SELECTION.equals(event.getProperty()) ) + { + IStructuredSelection selection = null; + + if (Boolean.TRUE.equals(event.getNewValue()) ) { + selection = getDebugContext(); + } + trackSelection(selection); + } + } + + private void debugContextChanged(DebugContextEvent event) { + IStructuredSelection newContext; + if (event.getContext() instanceof IStructuredSelection) { + newContext = (IStructuredSelection)event.getContext(); + } else { + newContext = StructuredSelection.EMPTY; + } + + synchronized(this) { + fDebugContext = newContext; + } + + if (Boolean.TRUE.equals(fInput.getContext().getProperty(IBreakpointUIConstants.PROP_BREAKPOINTS_FILTER_SELECTION)) ) { + setFilterSelection(newContext); + } + + if (Boolean.TRUE.equals(fInput.getContext().getProperty(IBreakpointUIConstants.PROP_BREAKPOINTS_TRACK_SELECTION)) ) { + trackSelection(newContext); + } + } + + + private void setFilterSelection(IStructuredSelection ss) { + ModelDelta delta = new ModelDelta(fInput, IModelDelta.NO_CHANGE); + boolean changed = false; + + // calculate supported breakpoints outside of the synchronized section. + IBreakpoint[] allBreakpoints = fBpManager.getBreakpoints(); + boolean[] supportedBreakpoints = new boolean[allBreakpoints.length]; + for (int i = 0; i < allBreakpoints.length; ++i) { + supportedBreakpoints[i] = supportsBreakpoint(ss, allBreakpoints[i]); + } + + synchronized(this) { Set<IBreakpoint> existingBreakpoints = new HashSet<>(Arrays.asList(fContainer.getBreakpoints())); - // Bug 310879 - // Process breakpoints in two passes: first remove breakpoints, then add new ones. - // This way the breakpoint counts and indexes will be consistent in the delta. - for (int i = 0; i < allBreakpoints.length; ++i) { - if (!supportedBreakpoints[i] && existingBreakpoints.contains(allBreakpoints[i])) { - fContainer.removeBreakpoint(allBreakpoints[i], delta); - changed = true; - } - } - for (int i = 0; i < allBreakpoints.length; ++i) { - if (supportedBreakpoints[i] && !existingBreakpoints.contains(allBreakpoints[i])) { - fContainer.addBreakpoint(allBreakpoints[i], delta); - changed = true; - } - } - - if (changed) { - if (DebugUIPlugin.DEBUG_BREAKPOINT_DELTAS) { - DebugUIPlugin.trace("POST BREAKPOINT DELTA (setFilterSelection)\n"); //$NON-NLS-1$ - } - postModelChanged(delta, false); - } - } - } - - - private void trackSelection(IStructuredSelection selection) { - if (selection == null || selection.size() != 1) { - return; - } + // Bug 310879 + // Process breakpoints in two passes: first remove breakpoints, then add new ones. + // This way the breakpoint counts and indexes will be consistent in the delta. + for (int i = 0; i < allBreakpoints.length; ++i) { + if (!supportedBreakpoints[i] && existingBreakpoints.contains(allBreakpoints[i])) { + fContainer.removeBreakpoint(allBreakpoints[i], delta); + changed = true; + } + } + for (int i = 0; i < allBreakpoints.length; ++i) { + if (supportedBreakpoints[i] && !existingBreakpoints.contains(allBreakpoints[i])) { + fContainer.addBreakpoint(allBreakpoints[i], delta); + changed = true; + } + } + + if (changed) { + if (DebugUIPlugin.DEBUG_BREAKPOINT_DELTAS) { + DebugUIPlugin.trace("POST BREAKPOINT DELTA (setFilterSelection)\n"); //$NON-NLS-1$ + } + postModelChanged(delta, false); + } + } + } + + + private void trackSelection(IStructuredSelection selection) { + if (selection == null || selection.size() != 1) { + return; + } Iterator<?> iter = selection.iterator(); - Object firstElement = iter.next(); - if (firstElement == null || iter.hasNext()) { - return; - } - IThread thread = null; - if (firstElement instanceof IStackFrame) { - thread = ((IStackFrame) firstElement).getThread(); - } else if (firstElement instanceof IThread) { - thread = (IThread) firstElement; - } else { - return; - } - - IBreakpoint[] breakpoints = thread.getBreakpoints(); + Object firstElement = iter.next(); + if (firstElement == null || iter.hasNext()) { + return; + } + IThread thread = null; + if (firstElement instanceof IStackFrame) { + thread = ((IStackFrame) firstElement).getThread(); + } else if (firstElement instanceof IThread) { + thread = (IThread) firstElement; + } else { + return; + } + + IBreakpoint[] breakpoints = thread.getBreakpoints(); Set<IBreakpoint> bpsSet = new HashSet<>(breakpoints.length * 4 / 3); - for (int i = 0; i< breakpoints.length; i++) { - bpsSet.add(breakpoints[i]); - } - - ModelDelta delta = new ModelDelta(fInput, IModelDelta.NO_CHANGE); - synchronized (this) { - if (buildTrackSelectionDelta(delta, fContainer, bpsSet)) { - if (DebugUIPlugin.DEBUG_BREAKPOINT_DELTAS) { - DebugUIPlugin.trace("POST BREAKPOINT DELTA (trackSelection)\n"); //$NON-NLS-1$ - } - BreakpointManagerProxy[] proxies = getProxies(); - for (int i = 0; i < proxies.length; i++) { - proxies[i].postModelChanged(delta, true); - } - } - } - - } - - /** - * Recursive function to build the model delta to select a breakpoint - * corresponding to the active debug context selection. - * - * @param delta Delta node to build on - * @param container Container element to build delta for. - * @param breakpoints Breakpoint set to be selected. - * @return whether we found a breakpoint to select - */ + for (int i = 0; i< breakpoints.length; i++) { + bpsSet.add(breakpoints[i]); + } + + ModelDelta delta = new ModelDelta(fInput, IModelDelta.NO_CHANGE); + synchronized (this) { + if (buildTrackSelectionDelta(delta, fContainer, bpsSet)) { + if (DebugUIPlugin.DEBUG_BREAKPOINT_DELTAS) { + DebugUIPlugin.trace("POST BREAKPOINT DELTA (trackSelection)\n"); //$NON-NLS-1$ + } + BreakpointManagerProxy[] proxies = getProxies(); + for (int i = 0; i < proxies.length; i++) { + proxies[i].postModelChanged(delta, true); + } + } + } + + } + + /** + * Recursive function to build the model delta to select a breakpoint + * corresponding to the active debug context selection. + * + * @param delta Delta node to build on + * @param container Container element to build delta for. + * @param breakpoints Breakpoint set to be selected. + * @return whether we found a breakpoint to select + */ private boolean buildTrackSelectionDelta(ModelDelta delta, BreakpointContainer container, Set<IBreakpoint> breakpoints) { - Object[] children = container.getChildren(); - delta.setChildCount(children.length); - for (int i = 0; i < children.length; i++) { - ModelDelta childDelta = delta.addNode(children[i], i, IModelDelta.NO_CHANGE); - if (children[i] instanceof BreakpointContainer) { - BreakpointContainer childContainer = (BreakpointContainer)children[i]; - boolean containsBP = false; - IBreakpoint[] containerBPs = childContainer.getBreakpoints(); - for (int j = 0; j < containerBPs.length; j++) { - if (breakpoints.contains(containerBPs[j])) { - containsBP = true; - break; - } - } - if (containsBP && buildTrackSelectionDelta(childDelta, childContainer, breakpoints) ) { - return true; - } - } else if (children[i] instanceof IBreakpoint && - breakpoints.contains(children[i])) - { - childDelta.setFlags(IModelDelta.SELECT | IModelDelta.EXPAND); - return true; - } - } - return false; - } - - /** - * Helper method to add breakpoints to the given input. - * - * @param breakpoints the breakpoints - */ - void breakpointsAdded(IBreakpoint[] breakpoints) { - IBreakpoint[] filteredBreakpoints = filterBreakpoints( - fInput, getSelectionFilter(fInput, getDebugContext()), breakpoints); - - if (filteredBreakpoints.length > 0) { - synchronized (this) { - ModelDelta delta = new ModelDelta(fInput, 0, IModelDelta.NO_CHANGE, -1); - for (int i = 0; i < filteredBreakpoints.length; ++i) { - // Avoid adding breakpoints which were already removed. If breakpoints - // are added and removed very fast, the Breakpoint manager can issue - // breakpoint added events after breakpoint removed events! This means - // that such breakpoints would never be removed from the view. - // (Bug 289526) - if (DebugPlugin.getDefault().getBreakpointManager().getBreakpoint(filteredBreakpoints[i].getMarker()) != null) { - fContainer.addBreakpoint(filteredBreakpoints[i], delta); - } - } - delta.setChildCount(fContainer.getChildren().length); - - // select the breakpoint - if (filteredBreakpoints.length > 0) { - appendModelDeltaToElement(delta, filteredBreakpoints[0], IModelDelta.SELECT); - } - - if (DebugUIPlugin.DEBUG_BREAKPOINT_DELTAS) { - DebugUIPlugin.trace("POST BREAKPOINT DELTA (breakpointsAddedInput)\n"); //$NON-NLS-1$ - } - postModelChanged(delta, false); - } - } - } - - /** - * Helper method to remove breakpoints from a given input. - * - * @param breakpoints the breakpoints - */ - void breakpointsRemoved(IBreakpoint[] breakpoints) { - synchronized (this) { - boolean removed = false; - ModelDelta delta = new ModelDelta(fInput, IModelDelta.NO_CHANGE); - for (int i = 0; i < breakpoints.length; ++i) { - removed = fContainer.removeBreakpoint(breakpoints[i], delta) || removed; - } - - if (removed) { - if (DebugUIPlugin.DEBUG_BREAKPOINT_DELTAS) { - DebugUIPlugin.trace("POST BREAKPOINT DELTA (breakpointsRemovedInput)\n"); //$NON-NLS-1$ - } - postModelChanged(delta, false); - } - } - } - - void breakpointsChanged(IBreakpoint[] breakpoints) { - - - IBreakpoint[] filteredBreakpoints = filterBreakpoints( - fInput, getSelectionFilter(fInput, getDebugContext()), breakpoints); - - synchronized (this) { - ModelDelta delta = new ModelDelta(fInput, IModelDelta.NO_CHANGE); - - // If the change caused a breakpoint to be added (installed) or remove (un-installed) update accordingly. + Object[] children = container.getChildren(); + delta.setChildCount(children.length); + for (int i = 0; i < children.length; i++) { + ModelDelta childDelta = delta.addNode(children[i], i, IModelDelta.NO_CHANGE); + if (children[i] instanceof BreakpointContainer) { + BreakpointContainer childContainer = (BreakpointContainer)children[i]; + boolean containsBP = false; + IBreakpoint[] containerBPs = childContainer.getBreakpoints(); + for (int j = 0; j < containerBPs.length; j++) { + if (breakpoints.contains(containerBPs[j])) { + containsBP = true; + break; + } + } + if (containsBP && buildTrackSelectionDelta(childDelta, childContainer, breakpoints) ) { + return true; + } + } else if (children[i] instanceof IBreakpoint && + breakpoints.contains(children[i])) + { + childDelta.setFlags(IModelDelta.SELECT | IModelDelta.EXPAND); + return true; + } + } + return false; + } + + /** + * Helper method to add breakpoints to the given input. + * + * @param breakpoints the breakpoints + */ + void breakpointsAdded(IBreakpoint[] breakpoints) { + IBreakpoint[] filteredBreakpoints = filterBreakpoints( + fInput, getSelectionFilter(fInput, getDebugContext()), breakpoints); + + if (filteredBreakpoints.length > 0) { + synchronized (this) { + ModelDelta delta = new ModelDelta(fInput, 0, IModelDelta.NO_CHANGE, -1); + for (int i = 0; i < filteredBreakpoints.length; ++i) { + // Avoid adding breakpoints which were already removed. If breakpoints + // are added and removed very fast, the Breakpoint manager can issue + // breakpoint added events after breakpoint removed events! This means + // that such breakpoints would never be removed from the view. + // (Bug 289526) + if (DebugPlugin.getDefault().getBreakpointManager().getBreakpoint(filteredBreakpoints[i].getMarker()) != null) { + fContainer.addBreakpoint(filteredBreakpoints[i], delta); + } + } + delta.setChildCount(fContainer.getChildren().length); + + // select the breakpoint + if (filteredBreakpoints.length > 0) { + appendModelDeltaToElement(delta, filteredBreakpoints[0], IModelDelta.SELECT); + } + + if (DebugUIPlugin.DEBUG_BREAKPOINT_DELTAS) { + DebugUIPlugin.trace("POST BREAKPOINT DELTA (breakpointsAddedInput)\n"); //$NON-NLS-1$ + } + postModelChanged(delta, false); + } + } + } + + /** + * Helper method to remove breakpoints from a given input. + * + * @param breakpoints the breakpoints + */ + void breakpointsRemoved(IBreakpoint[] breakpoints) { + synchronized (this) { + boolean removed = false; + ModelDelta delta = new ModelDelta(fInput, IModelDelta.NO_CHANGE); + for (int i = 0; i < breakpoints.length; ++i) { + removed = fContainer.removeBreakpoint(breakpoints[i], delta) || removed; + } + + if (removed) { + if (DebugUIPlugin.DEBUG_BREAKPOINT_DELTAS) { + DebugUIPlugin.trace("POST BREAKPOINT DELTA (breakpointsRemovedInput)\n"); //$NON-NLS-1$ + } + postModelChanged(delta, false); + } + } + } + + void breakpointsChanged(IBreakpoint[] breakpoints) { + + + IBreakpoint[] filteredBreakpoints = filterBreakpoints( + fInput, getSelectionFilter(fInput, getDebugContext()), breakpoints); + + synchronized (this) { + ModelDelta delta = new ModelDelta(fInput, IModelDelta.NO_CHANGE); + + // If the change caused a breakpoint to be added (installed) or remove (un-installed) update accordingly. List<IBreakpoint> removed = new ArrayList<>(); List<IBreakpoint> added = new ArrayList<>(); List<IBreakpoint> filteredAsList = Arrays.asList(filteredBreakpoints); - for (int i = 0; i < breakpoints.length; i++) { - IBreakpoint bp = breakpoints[i]; - boolean oldContainedBp = fContainer.contains(bp); - boolean newContained = filteredAsList.contains(bp); - if (oldContainedBp && !newContained) { - removed.add(bp); - } else if (!oldContainedBp && newContained) { - added.add(bp); - } - } - if (!added.isEmpty()) { - breakpointsAdded(added.toArray(new IBreakpoint[added.size()])); - } - if (!removed.isEmpty()) { - breakpointsRemoved(removed.toArray(new IBreakpoint[removed.size()])); - } - for (int i = 0; i < filteredBreakpoints.length; ++i) + for (int i = 0; i < breakpoints.length; i++) { + IBreakpoint bp = breakpoints[i]; + boolean oldContainedBp = fContainer.contains(bp); + boolean newContained = filteredAsList.contains(bp); + if (oldContainedBp && !newContained) { + removed.add(bp); + } else if (!oldContainedBp && newContained) { + added.add(bp); + } + } + if (!added.isEmpty()) { + breakpointsAdded(added.toArray(new IBreakpoint[added.size()])); + } + if (!removed.isEmpty()) { + breakpointsRemoved(removed.toArray(new IBreakpoint[removed.size()])); + } + for (int i = 0; i < filteredBreakpoints.length; ++i) { appendModelDelta(fContainer, delta, IModelDelta.STATE | IModelDelta.CONTENT, filteredBreakpoints[i]); // content flag triggers detail refresh } - if (DebugUIPlugin.DEBUG_BREAKPOINT_DELTAS) { - DebugUIPlugin.trace("POST BREAKPOINT DELTA (breakpointsChanged)\n"); //$NON-NLS-1$ - } - postModelChanged(delta, false); - } - } - - - /** - * Recursive function to build the model delta to install breakpoint - * model proxies for all breakpoints and breakpoint containers. - * - * @param delta Delta node to build on - * @param container Container element to build delta for. - */ - private void buildInstallDelta(ModelDelta delta, BreakpointContainer container) { - Object[] children = container.getChildren(); - delta.setChildCount(children.length); - for (int i = 0; i < children.length; i++) { - ModelDelta childDelta = delta.addNode(children[i], i, IModelDelta.NO_CHANGE); - if (children[i] instanceof BreakpointContainer) { - childDelta.setFlags(IModelDelta.INSTALL); - buildInstallDelta(childDelta, (BreakpointContainer)children[i]); - } else if (children[i] instanceof IBreakpoint) { - childDelta.setFlags(IModelDelta.INSTALL); - } - } - } - - - /** - * Insert elements from the reference container to an existing container. - * - * @param container the existing container to insert the new elements. - * @param refContainer the reference container to compare elements that are added. - * @param containerDelta the delta of the existing container. - * @return the breakpoint that was inserted - */ - private IBreakpoint insertAddedElements(BreakpointContainer container, BreakpointContainer refContainer, ModelDelta containerDelta) { - IBreakpoint newBreakpoint = null; - - Object[] children = container.getChildren(); - Object[] refChildren = refContainer.getChildren(); - - - for (int i = 0; i < refChildren.length; ++i) { - Object element = getElement(children, refChildren[i]); - - // if a child of refContainer doesn't exist in container, than insert it to container - // - if the reference child is a container, than copy the reference child container to container - // - otherwise (Breakpoint), add the breakpoint to container - if (element == null) { - if (refChildren[i] instanceof BreakpointContainer) { - BreakpointContainer.addChildContainer(container, (BreakpointContainer) refChildren[i], containerDelta); - } else if(refChildren[i] instanceof IBreakpoint) { - BreakpointContainer.addBreakpoint(container, (IBreakpoint) refChildren[i], containerDelta); - if (newBreakpoint == null) { + if (DebugUIPlugin.DEBUG_BREAKPOINT_DELTAS) { + DebugUIPlugin.trace("POST BREAKPOINT DELTA (breakpointsChanged)\n"); //$NON-NLS-1$ + } + postModelChanged(delta, false); + } + } + + + /** + * Recursive function to build the model delta to install breakpoint + * model proxies for all breakpoints and breakpoint containers. + * + * @param delta Delta node to build on + * @param container Container element to build delta for. + */ + private void buildInstallDelta(ModelDelta delta, BreakpointContainer container) { + Object[] children = container.getChildren(); + delta.setChildCount(children.length); + for (int i = 0; i < children.length; i++) { + ModelDelta childDelta = delta.addNode(children[i], i, IModelDelta.NO_CHANGE); + if (children[i] instanceof BreakpointContainer) { + childDelta.setFlags(IModelDelta.INSTALL); + buildInstallDelta(childDelta, (BreakpointContainer)children[i]); + } else if (children[i] instanceof IBreakpoint) { + childDelta.setFlags(IModelDelta.INSTALL); + } + } + } + + + /** + * Insert elements from the reference container to an existing container. + * + * @param container the existing container to insert the new elements. + * @param refContainer the reference container to compare elements that are added. + * @param containerDelta the delta of the existing container. + * @return the breakpoint that was inserted + */ + private IBreakpoint insertAddedElements(BreakpointContainer container, BreakpointContainer refContainer, ModelDelta containerDelta) { + IBreakpoint newBreakpoint = null; + + Object[] children = container.getChildren(); + Object[] refChildren = refContainer.getChildren(); + + + for (int i = 0; i < refChildren.length; ++i) { + Object element = getElement(children, refChildren[i]); + + // if a child of refContainer doesn't exist in container, than insert it to container + // - if the reference child is a container, than copy the reference child container to container + // - otherwise (Breakpoint), add the breakpoint to container + if (element == null) { + if (refChildren[i] instanceof BreakpointContainer) { + BreakpointContainer.addChildContainer(container, (BreakpointContainer) refChildren[i], containerDelta); + } else if(refChildren[i] instanceof IBreakpoint) { + BreakpointContainer.addBreakpoint(container, (IBreakpoint) refChildren[i], containerDelta); + if (newBreakpoint == null) { newBreakpoint = (IBreakpoint) refChildren[i]; } - } + } - // if a child exist in container, than recursively search into container. And also update the organizer of - // of container to the one in the refContainer's child. - } else if (element instanceof BreakpointContainer) { + // if a child exist in container, than recursively search into container. And also update the organizer of + // of container to the one in the refContainer's child. + } else if (element instanceof BreakpointContainer) { ModelDelta childDelta = containerDelta.addNode(element, container.getChildIndex(element), IModelDelta.INSTALL, -1); - BreakpointContainer.copyOrganizers((BreakpointContainer) element, (BreakpointContainer) refChildren[i]); - newBreakpoint = insertAddedElements((BreakpointContainer) element, (BreakpointContainer) refChildren[i], childDelta); - childDelta.setChildCount(((BreakpointContainer) element).getChildren().length); - } - } - - return newBreakpoint; - } - - - - /** - * Delete elements from existing container that doesn't exist in the reference container. - * - * @param container the existing container to delete the removed elements. - * @param refContainer the reference container to compare elements that are removed. - * @param containerDelta the delta of the existing container. - */ - private void deleteRemovedElements(BreakpointContainer container, BreakpointContainer refContainer, ModelDelta containerDelta) { - Object[] children = container.getChildren(); - Object[] refChildren = refContainer.getChildren(); - - // if a child of container doesn't exist in refContainer, than remove it from container - for (int i = 0; i < children.length; ++i) { - Object element = getElement(refChildren, children[i]); - - if (element == null) { - if (children[i] instanceof BreakpointContainer) { - BreakpointContainer.removeAll((BreakpointContainer) children[i], containerDelta); - } else { - BreakpointContainer.removeBreakpoint(container, (IBreakpoint) children[i], containerDelta); - } - } else if (element instanceof BreakpointContainer){ - - ModelDelta childDelta = containerDelta.addNode(children[i], IModelDelta.STATE); - deleteRemovedElements((BreakpointContainer) children[i], (BreakpointContainer) element, childDelta); - } - } - } + BreakpointContainer.copyOrganizers((BreakpointContainer) element, (BreakpointContainer) refChildren[i]); + newBreakpoint = insertAddedElements((BreakpointContainer) element, (BreakpointContainer) refChildren[i], childDelta); + childDelta.setChildCount(((BreakpointContainer) element).getChildren().length); + } + } + + return newBreakpoint; + } + + + + /** + * Delete elements from existing container that doesn't exist in the reference container. + * + * @param container the existing container to delete the removed elements. + * @param refContainer the reference container to compare elements that are removed. + * @param containerDelta the delta of the existing container. + */ + private void deleteRemovedElements(BreakpointContainer container, BreakpointContainer refContainer, ModelDelta containerDelta) { + Object[] children = container.getChildren(); + Object[] refChildren = refContainer.getChildren(); + + // if a child of container doesn't exist in refContainer, than remove it from container + for (int i = 0; i < children.length; ++i) { + Object element = getElement(refChildren, children[i]); + + if (element == null) { + if (children[i] instanceof BreakpointContainer) { + BreakpointContainer.removeAll((BreakpointContainer) children[i], containerDelta); + } else { + BreakpointContainer.removeBreakpoint(container, (IBreakpoint) children[i], containerDelta); + } + } else if (element instanceof BreakpointContainer){ + + ModelDelta childDelta = containerDelta.addNode(children[i], IModelDelta.STATE); + deleteRemovedElements((BreakpointContainer) children[i], (BreakpointContainer) element, childDelta); + } + } + } private void deleteAllElements(BreakpointContainer container, ModelDelta containerDelta) { Object[] children = container.getChildren(); @@ -700,453 +700,453 @@ public class BreakpointManagerContentProvider extends ElementContentProvider } } - /** - * Get the element that is in the collection. - * - * @param collection the collection of elements. - * @param element the element to search. - * @return if element exist in collection, than it is returned, otherwise <code>null</code> is returned. - * @see #insertAddedElements - * @see #deleteRemovedElements - */ - private Object getElement(Object[] collection, Object element) { - for (int i = 0; i < collection.length; ++i) { + /** + * Get the element that is in the collection. + * + * @param collection the collection of elements. + * @param element the element to search. + * @return if element exist in collection, than it is returned, otherwise <code>null</code> is returned. + * @see #insertAddedElements + * @see #deleteRemovedElements + */ + private Object getElement(Object[] collection, Object element) { + for (int i = 0; i < collection.length; ++i) { if (collection[i] instanceof BreakpointContainer && element instanceof BreakpointContainer) { - if (collection[i].equals(element)) { + if (collection[i].equals(element)) { return collection[i]; } - } else { - if (collection[i].equals(element)) { + } else { + if (collection[i].equals(element)) { return collection[i]; } - } + } } - return null; - } - - /** - * Create a root container. - * - * @param rootDelta the root delta. - * @param input the view input. - * @param organizers the breakpoint organizers. - * @param breakpoints the breakpoints to add to the container - * @return the new root container - */ - private BreakpointContainer createRootContainer( - ModelDelta rootDelta, DefaultBreakpointsViewInput input, - IBreakpointOrganizer[] organizers, IBreakpoint[] breakpoints) - { - - BreakpointContainer container = new BreakpointContainer(organizers, fComparator); - container.initDefaultContainers(rootDelta); - - for (int i = 0; i < breakpoints.length; ++i) { - container.addBreakpoint(breakpoints[i], rootDelta); - } - - return container; - } - - /** - * Fire model change event for the input. - * - * @param delta the model delta. - * @param select if the viewer selection should change - */ - synchronized private void postModelChanged(final IModelDelta delta, boolean select) { - for (int i = 0; fProxies != null && i < fProxies.size(); i++) { - fProxies.get(i).postModelChanged(delta, select); - } - } - - - } + return null; + } + + /** + * Create a root container. + * + * @param rootDelta the root delta. + * @param input the view input. + * @param organizers the breakpoint organizers. + * @param breakpoints the breakpoints to add to the container + * @return the new root container + */ + private BreakpointContainer createRootContainer( + ModelDelta rootDelta, DefaultBreakpointsViewInput input, + IBreakpointOrganizer[] organizers, IBreakpoint[] breakpoints) + { + + BreakpointContainer container = new BreakpointContainer(organizers, fComparator); + container.initDefaultContainers(rootDelta); + + for (int i = 0; i < breakpoints.length; ++i) { + container.addBreakpoint(breakpoints[i], rootDelta); + } + + return container; + } + + /** + * Fire model change event for the input. + * + * @param delta the model delta. + * @param select if the viewer selection should change + */ + synchronized private void postModelChanged(final IModelDelta delta, boolean select) { + for (int i = 0; fProxies != null && i < fProxies.size(); i++) { + fProxies.get(i).postModelChanged(delta, select); + } + } + + + } private class InputDataMap<K, V> extends LinkedHashMap<K, V> { - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; - public InputDataMap() { - super(1, (float)0.75, true); - } + public InputDataMap() { + super(1, (float)0.75, true); + } - @Override + @Override protected boolean removeEldestEntry(java.util.Map.Entry<K, V> arg0) { - InputData data = (InputData)arg0.getValue(); - if (size() > getMaxInputsCache() && data.fProxies.isEmpty()) { - data.dispose(); - return true; - } - return false; - } - } - - /** - * Scheduling rule to make sure that breakpoint manager listener updates - * are process serially. - */ - private ISchedulingRule fBreakpointsListenerSchedulingRule = new ISchedulingRule() { - - @Override + InputData data = (InputData)arg0.getValue(); + if (size() > getMaxInputsCache() && data.fProxies.isEmpty()) { + data.dispose(); + return true; + } + return false; + } + } + + /** + * Scheduling rule to make sure that breakpoint manager listener updates + * are process serially. + */ + private ISchedulingRule fBreakpointsListenerSchedulingRule = new ISchedulingRule() { + + @Override public boolean isConflicting(ISchedulingRule rule) { - return rule == this; - } + return rule == this; + } - @Override + @Override public boolean contains(ISchedulingRule rule) { - return rule == this; - } - }; + return rule == this; + } + }; - /** - * A map of input to info data cache - */ + /** + * A map of input to info data cache + */ final private Map<DefaultBreakpointsViewInput, InputData> fInputToData = Collections.synchronizedMap(new InputDataMap<DefaultBreakpointsViewInput, InputData>()); - /** - * Flag indicating whether the content provider is currently a breakpoints listener. - */ - private boolean fIsBreakpointListener = false; - - /** - * The breakpoint manager. - */ - final private IBreakpointManager fBpManager = DebugPlugin.getDefault().getBreakpointManager(); - - /** - * Sub-classes may override this method to filter the breakpoints. - * - * @param input the breakpoint manager input. - * @param selectionFilter the selection to use as filter - * @param breakpoints the list of breakpoint to filter. - * @return the filtered list of breakpoint based on the input. - */ - protected IBreakpoint[] filterBreakpoints(DefaultBreakpointsViewInput input, IStructuredSelection selectionFilter, IBreakpoint[] breakpoints) { - if (selectionFilter != null && !selectionFilter.isEmpty()) { + /** + * Flag indicating whether the content provider is currently a breakpoints listener. + */ + private boolean fIsBreakpointListener = false; + + /** + * The breakpoint manager. + */ + final private IBreakpointManager fBpManager = DebugPlugin.getDefault().getBreakpointManager(); + + /** + * Sub-classes may override this method to filter the breakpoints. + * + * @param input the breakpoint manager input. + * @param selectionFilter the selection to use as filter + * @param breakpoints the list of breakpoint to filter. + * @return the filtered list of breakpoint based on the input. + */ + protected IBreakpoint[] filterBreakpoints(DefaultBreakpointsViewInput input, IStructuredSelection selectionFilter, IBreakpoint[] breakpoints) { + if (selectionFilter != null && !selectionFilter.isEmpty()) { List<IDebugTarget> targets = getDebugTargets(selectionFilter); ArrayList<IBreakpoint> retVal = new ArrayList<>(); - if (targets != null) { - for (int i = 0; i < breakpoints.length; ++i) { - if (supportsBreakpoint(targets, breakpoints[i])) { + if (targets != null) { + for (int i = 0; i < breakpoints.length; ++i) { + if (supportsBreakpoint(targets, breakpoints[i])) { retVal.add(breakpoints[i]); } - } - } - return retVal.toArray(new IBreakpoint[retVal.size()]); - } else { - return breakpoints; - } - } - - /** - * Sub-classes may override this to determine whether the breakpoint is supported by the selection. - * - * @param ss the selection of the debug elements. - * @param breakpoint the breakpoint. - * @return true if supported. - */ - protected boolean supportsBreakpoint(IStructuredSelection ss, IBreakpoint breakpoint) { - return supportsBreakpoint(getDebugTargets(ss), breakpoint); - } - - /** - * Returns true if the breakpoint contains in one of the targets. - * - * @param targets a list of <code>IDebugTarget</code> objects. - * @param breakpoint the breakpoint. - * @return true if breakpoint contains in the list of targets. - */ + } + } + return retVal.toArray(new IBreakpoint[retVal.size()]); + } else { + return breakpoints; + } + } + + /** + * Sub-classes may override this to determine whether the breakpoint is supported by the selection. + * + * @param ss the selection of the debug elements. + * @param breakpoint the breakpoint. + * @return true if supported. + */ + protected boolean supportsBreakpoint(IStructuredSelection ss, IBreakpoint breakpoint) { + return supportsBreakpoint(getDebugTargets(ss), breakpoint); + } + + /** + * Returns true if the breakpoint contains in one of the targets. + * + * @param targets a list of <code>IDebugTarget</code> objects. + * @param breakpoint the breakpoint. + * @return true if breakpoint contains in the list of targets. + */ protected boolean supportsBreakpoint(List<IDebugTarget> targets, IBreakpoint breakpoint) { - boolean exist = targets.isEmpty() ? true : false; - for (int i = 0; !exist && i < targets.size(); ++i) { - IDebugTarget target = targets.get(i); - exist |= target.supportsBreakpoint(breakpoint); - } - return exist; - } - - /** - * Returns the list of IDebugTarget for the selection. - * - * @param ss the selection. - * @return list of IDebugTarget object. - */ + boolean exist = targets.isEmpty() ? true : false; + for (int i = 0; !exist && i < targets.size(); ++i) { + IDebugTarget target = targets.get(i); + exist |= target.supportsBreakpoint(breakpoint); + } + return exist; + } + + /** + * Returns the list of IDebugTarget for the selection. + * + * @param ss the selection. + * @return list of IDebugTarget object. + */ protected List<IDebugTarget> getDebugTargets(IStructuredSelection ss) { List<IDebugTarget> debugTargets = new ArrayList<>(2); - if (ss != null) { + if (ss != null) { Iterator<?> i = ss.iterator(); - while (i.hasNext()) { - Object next = i.next(); - if (next instanceof IDebugElement) { - debugTargets.add(((IDebugElement)next).getDebugTarget()); - } else if (next instanceof ILaunch) { - IDebugTarget[] targets = ((ILaunch)next).getDebugTargets(); - for (int j = 0; j < targets.length; j++) { - debugTargets.add(targets[j]); - } - } else if (next instanceof IProcess) { - IDebugTarget target = ((IProcess)next).getAdapter(IDebugTarget.class); - if (target != null) { - debugTargets.add(target); - } - } else if (next instanceof IAdaptable) { - // Allow non-standard debug model element return an IDebugTarget - // element that could be used for implementing breakpoint filtering. - // Bug 333517. - IDebugTarget target = ((IAdaptable)next).getAdapter(IDebugTarget.class); - if (target != null) { - debugTargets.add(target); - } - } - } - } - return debugTargets; - } - - /** - * Maximum number of breakpoint manager input objects that this provider - * will cache data for. This method is called once upon class creation - * when setting up the data cache. Sub-classes may override to provide - * a custom setting. - * - * @return Maximum data cache size - */ - protected int getMaxInputsCache() { - return 2; - } - - /** - * Handles the event when a presentation context is disposed. - * Sub-classes may override to perform additional cleanup. - * - * @param context Presentation context that was disposed. - */ - protected void contextDisposed(IPresentationContext context) { + while (i.hasNext()) { + Object next = i.next(); + if (next instanceof IDebugElement) { + debugTargets.add(((IDebugElement)next).getDebugTarget()); + } else if (next instanceof ILaunch) { + IDebugTarget[] targets = ((ILaunch)next).getDebugTargets(); + for (int j = 0; j < targets.length; j++) { + debugTargets.add(targets[j]); + } + } else if (next instanceof IProcess) { + IDebugTarget target = ((IProcess)next).getAdapter(IDebugTarget.class); + if (target != null) { + debugTargets.add(target); + } + } else if (next instanceof IAdaptable) { + // Allow non-standard debug model element return an IDebugTarget + // element that could be used for implementing breakpoint filtering. + // Bug 333517. + IDebugTarget target = ((IAdaptable)next).getAdapter(IDebugTarget.class); + if (target != null) { + debugTargets.add(target); + } + } + } + } + return debugTargets; + } + + /** + * Maximum number of breakpoint manager input objects that this provider + * will cache data for. This method is called once upon class creation + * when setting up the data cache. Sub-classes may override to provide + * a custom setting. + * + * @return Maximum data cache size + */ + protected int getMaxInputsCache() { + return 2; + } + + /** + * Handles the event when a presentation context is disposed. + * Sub-classes may override to perform additional cleanup. + * + * @param context Presentation context that was disposed. + */ + protected void contextDisposed(IPresentationContext context) { List<InputData> removed = new ArrayList<>(1); - synchronized (fInputToData) { + synchronized (fInputToData) { for (Iterator<Entry<DefaultBreakpointsViewInput, InputData>> itr = fInputToData.entrySet().iterator(); itr.hasNext();) { Map.Entry<DefaultBreakpointsViewInput, InputData> entry = itr.next(); - IPresentationContext entryContext = entry.getKey().getContext(); - if (context.equals(entryContext)) { - removed.add(entry.getValue()); - itr.remove(); - } - } - } - - // Dispose the removed input data - for (int i = 0; i < removed.size(); i++) { - removed.get(i).dispose(); - } - } - - /** - * Register the breakpoint manager input with this content provider. - * - * @param input the breakpoint manager input to register. - * @param proxy the model proxy of the input. - */ - public void registerModelProxy(DefaultBreakpointsViewInput input, BreakpointManagerProxy proxy) { - synchronized(this) { - if (!fIsBreakpointListener) { - fBpManager.addBreakpointListener(this); - fIsBreakpointListener = true; - } - } - InputData inputData = getInputData(input); - if (inputData != null) { - inputData.proxyInstalled(proxy); - } - } - - /** - * Unregister the breakpoint manager input with this content provider. - * - * @param input the breakpoint manager input to unregister. - * @param proxy the manager proxy - */ - public void unregisterModelProxy(DefaultBreakpointsViewInput input, BreakpointManagerProxy proxy) { - InputData inputData = fInputToData.get(input); - if (inputData != null) { - inputData.proxyDisposed(proxy); - - if (fInputToData.isEmpty()) { - synchronized(this) { - if (fIsBreakpointListener) { - fBpManager.removeBreakpointListener(this); - fIsBreakpointListener = false; - } - } - } - } - } - - private InputData getInputData(DefaultBreakpointsViewInput input) { - if (Boolean.TRUE.equals(input.getContext().getProperty(IPresentationContext.PROPERTY_DISPOSED)) ) { - return null; - } - - InputData data = null; - synchronized (fInputToData) { - data = fInputToData.get(input); - if (data == null) { - data = new InputData(input); - fInputToData.put(input, data); - } - } - return data; - } - - /** - * Returns the selection filter for the input. - * - * @param input the selection. - * @param debugContext the current context - * @return the filtered selection or <code>null</code> - */ - protected IStructuredSelection getSelectionFilter(Object input, IStructuredSelection debugContext) { - if (input instanceof DefaultBreakpointsViewInput) { - IPresentationContext presentation = ((DefaultBreakpointsViewInput)input).getContext(); - if ( Boolean.TRUE.equals(presentation.getProperty(IBreakpointUIConstants.PROP_BREAKPOINTS_FILTER_SELECTION)) ) { - return debugContext; - } - } - return null; - } - - @Override + IPresentationContext entryContext = entry.getKey().getContext(); + if (context.equals(entryContext)) { + removed.add(entry.getValue()); + itr.remove(); + } + } + } + + // Dispose the removed input data + for (int i = 0; i < removed.size(); i++) { + removed.get(i).dispose(); + } + } + + /** + * Register the breakpoint manager input with this content provider. + * + * @param input the breakpoint manager input to register. + * @param proxy the model proxy of the input. + */ + public void registerModelProxy(DefaultBreakpointsViewInput input, BreakpointManagerProxy proxy) { + synchronized(this) { + if (!fIsBreakpointListener) { + fBpManager.addBreakpointListener(this); + fIsBreakpointListener = true; + } + } + InputData inputData = getInputData(input); + if (inputData != null) { + inputData.proxyInstalled(proxy); + } + } + + /** + * Unregister the breakpoint manager input with this content provider. + * + * @param input the breakpoint manager input to unregister. + * @param proxy the manager proxy + */ + public void unregisterModelProxy(DefaultBreakpointsViewInput input, BreakpointManagerProxy proxy) { + InputData inputData = fInputToData.get(input); + if (inputData != null) { + inputData.proxyDisposed(proxy); + + if (fInputToData.isEmpty()) { + synchronized(this) { + if (fIsBreakpointListener) { + fBpManager.removeBreakpointListener(this); + fIsBreakpointListener = false; + } + } + } + } + } + + private InputData getInputData(DefaultBreakpointsViewInput input) { + if (Boolean.TRUE.equals(input.getContext().getProperty(IPresentationContext.PROPERTY_DISPOSED)) ) { + return null; + } + + InputData data = null; + synchronized (fInputToData) { + data = fInputToData.get(input); + if (data == null) { + data = new InputData(input); + fInputToData.put(input, data); + } + } + return data; + } + + /** + * Returns the selection filter for the input. + * + * @param input the selection. + * @param debugContext the current context + * @return the filtered selection or <code>null</code> + */ + protected IStructuredSelection getSelectionFilter(Object input, IStructuredSelection debugContext) { + if (input instanceof DefaultBreakpointsViewInput) { + IPresentationContext presentation = ((DefaultBreakpointsViewInput)input).getContext(); + if ( Boolean.TRUE.equals(presentation.getProperty(IBreakpointUIConstants.PROP_BREAKPOINTS_FILTER_SELECTION)) ) { + return debugContext; + } + } + return null; + } + + @Override protected boolean supportsContextId(String id) { - return id.equals(IDebugUIConstants.ID_BREAKPOINT_VIEW); - } + return id.equals(IDebugUIConstants.ID_BREAKPOINT_VIEW); + } - @Override + @Override protected int getChildCount(Object element, IPresentationContext context, IViewerUpdate monitor) throws CoreException { - Object input = monitor.getViewerInput(); - if (input instanceof DefaultBreakpointsViewInput) { - DefaultBreakpointsViewInput bpManagerInput = (DefaultBreakpointsViewInput)input; - InputData inputData = getInputData(bpManagerInput); - if (inputData != null) { - return inputData.fContainer.getChildren().length; - } - } - return 0; - } - - @Override + Object input = monitor.getViewerInput(); + if (input instanceof DefaultBreakpointsViewInput) { + DefaultBreakpointsViewInput bpManagerInput = (DefaultBreakpointsViewInput)input; + InputData inputData = getInputData(bpManagerInput); + if (inputData != null) { + return inputData.fContainer.getChildren().length; + } + } + return 0; + } + + @Override protected Object[] getChildren(Object parent, int index, int length, IPresentationContext context, IViewerUpdate monitor) throws CoreException { - Object input = monitor.getViewerInput(); - if (input instanceof DefaultBreakpointsViewInput) { - DefaultBreakpointsViewInput bpManagerInput = (DefaultBreakpointsViewInput)input; - InputData inputData = getInputData(bpManagerInput); - if (inputData != null) { - Object[] children = inputData.fContainer.getChildren(); - return getElements(children, index, length); - } - } - - return EMPTY; - } - - @Override + Object input = monitor.getViewerInput(); + if (input instanceof DefaultBreakpointsViewInput) { + DefaultBreakpointsViewInput bpManagerInput = (DefaultBreakpointsViewInput)input; + InputData inputData = getInputData(bpManagerInput); + if (inputData != null) { + Object[] children = inputData.fContainer.getChildren(); + return getElements(children, index, length); + } + } + + return EMPTY; + } + + @Override public void breakpointsAdded(final IBreakpoint[] breakpoints) { - new Job("Breakpoints View Update Job") { //$NON-NLS-1$ - { - setSystem(true); - setRule(fBreakpointsListenerSchedulingRule); - } + new Job("Breakpoints View Update Job") { //$NON-NLS-1$ + { + setSystem(true); + setRule(fBreakpointsListenerSchedulingRule); + } - @Override + @Override protected IStatus run(IProgressMonitor monitor) { - InputData[] datas = fInputToData.values().toArray(new InputData[0]); - for (int i = 0; i < datas.length; i++) { - datas[i].breakpointsAdded(breakpoints); - } - return Status.OK_STATUS; - } - }.schedule(); - } - - @Override + InputData[] datas = fInputToData.values().toArray(new InputData[0]); + for (int i = 0; i < datas.length; i++) { + datas[i].breakpointsAdded(breakpoints); + } + return Status.OK_STATUS; + } + }.schedule(); + } + + @Override public void breakpointsRemoved(final IBreakpoint[] breakpoints, IMarkerDelta[] deltas) { - new Job("Breakpoints View Update Job") { //$NON-NLS-1$ - { - setSystem(true); - setRule(fBreakpointsListenerSchedulingRule); - } + new Job("Breakpoints View Update Job") { //$NON-NLS-1$ + { + setSystem(true); + setRule(fBreakpointsListenerSchedulingRule); + } - @Override + @Override protected IStatus run(IProgressMonitor monitor) { - InputData[] datas = fInputToData.values().toArray(new InputData[0]); - for (int i = 0; i < datas.length; i++) { - datas[i].breakpointsRemoved(breakpoints); - } - return Status.OK_STATUS; - } - }.schedule(); - } - - @Override + InputData[] datas = fInputToData.values().toArray(new InputData[0]); + for (int i = 0; i < datas.length; i++) { + datas[i].breakpointsRemoved(breakpoints); + } + return Status.OK_STATUS; + } + }.schedule(); + } + + @Override public void breakpointsChanged(final IBreakpoint[] breakpoints, IMarkerDelta[] deltas) { - new Job("Breakpoints View Update Job") { //$NON-NLS-1$ - { - setSystem(true); - setRule(fBreakpointsListenerSchedulingRule); - } + new Job("Breakpoints View Update Job") { //$NON-NLS-1$ + { + setSystem(true); + setRule(fBreakpointsListenerSchedulingRule); + } - @Override + @Override protected IStatus run(IProgressMonitor monitor) { - InputData[] datas = fInputToData.values().toArray(new InputData[0]); - for (int i = 0; i < datas.length; i++) { - datas[i].breakpointsChanged(breakpoints); - } - return Status.OK_STATUS; - } - }.schedule(); - } - /** - * Appends the model delta flags to child containers that contains the breakpoint. - * - * @param parent the parent container. - * @param parentDelta the parent model delta. - * @param flags the model delta flags. - * @param breakpoint the breakpoint to search in the children containers. - */ - private void appendModelDelta(BreakpointContainer parent, ModelDelta parentDelta, int flags, IBreakpoint breakpoint) { - BreakpointContainer[] containers = parent.getContainers(); - - if (parent.contains(breakpoint)) { - if ((containers.length != 0)) { - for (int i = 0; i < containers.length; ++i) { - ModelDelta nodeDelta = parentDelta.addNode(containers[i], IModelDelta.STATE); - appendModelDelta(containers[i], nodeDelta, flags, breakpoint); - } - } else { - parentDelta.addNode(breakpoint, flags); - } - } - } - - /** - * Appends the model delta to the first found element in the model delta tree. - * - * @param parentDelta the parent delta - * @param element the element to search - * @param flags the delta flags - */ - private void appendModelDeltaToElement(IModelDelta parentDelta, Object element, int flags) { - if (element.equals(parentDelta.getElement())) { - ((ModelDelta) parentDelta).setFlags(parentDelta.getFlags() | flags); - return; - } - - IModelDelta[] childDeltas = parentDelta.getChildDeltas(); - for (int i = 0; i < childDeltas.length; ++i) { - if (element.equals(childDeltas[i].getElement())) { - ((ModelDelta) childDeltas[i]).setFlags(childDeltas[i].getFlags() | flags); - return; - } - - appendModelDeltaToElement(childDeltas[i], element, flags); - } - } + InputData[] datas = fInputToData.values().toArray(new InputData[0]); + for (int i = 0; i < datas.length; i++) { + datas[i].breakpointsChanged(breakpoints); + } + return Status.OK_STATUS; + } + }.schedule(); + } + /** + * Appends the model delta flags to child containers that contains the breakpoint. + * + * @param parent the parent container. + * @param parentDelta the parent model delta. + * @param flags the model delta flags. + * @param breakpoint the breakpoint to search in the children containers. + */ + private void appendModelDelta(BreakpointContainer parent, ModelDelta parentDelta, int flags, IBreakpoint breakpoint) { + BreakpointContainer[] containers = parent.getContainers(); + + if (parent.contains(breakpoint)) { + if ((containers.length != 0)) { + for (int i = 0; i < containers.length; ++i) { + ModelDelta nodeDelta = parentDelta.addNode(containers[i], IModelDelta.STATE); + appendModelDelta(containers[i], nodeDelta, flags, breakpoint); + } + } else { + parentDelta.addNode(breakpoint, flags); + } + } + } + + /** + * Appends the model delta to the first found element in the model delta tree. + * + * @param parentDelta the parent delta + * @param element the element to search + * @param flags the delta flags + */ + private void appendModelDeltaToElement(IModelDelta parentDelta, Object element, int flags) { + if (element.equals(parentDelta.getElement())) { + ((ModelDelta) parentDelta).setFlags(parentDelta.getFlags() | flags); + return; + } + + IModelDelta[] childDeltas = parentDelta.getChildDeltas(); + for (int i = 0; i < childDeltas.length; ++i) { + if (element.equals(childDeltas[i].getElement())) { + ((ModelDelta) childDeltas[i]).setFlags(childDeltas[i].getFlags() | flags); + return; + } + + appendModelDeltaToElement(childDeltas[i], element, flags); + } + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/BreakpointMementoProvider.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/BreakpointMementoProvider.java index 98b6ca432..1d2f3d418 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/BreakpointMementoProvider.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/BreakpointMementoProvider.java @@ -41,8 +41,8 @@ public class BreakpointMementoProvider extends ElementMementoProvider { private static final String RESOURCE_PATH = "RESOURCE_PATH"; //$NON-NLS-1$ protected boolean supportsContextId(String id) { - return IDebugUIConstants.ID_BREAKPOINT_VIEW.equals(id); - } + return IDebugUIConstants.ID_BREAKPOINT_VIEW.equals(id); + } @Override protected boolean encodeElement(Object element, IMemento memento, IPresentationContext context) throws CoreException { diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/DebugElementLabelProvider.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/DebugElementLabelProvider.java index e2b1d0f1d..22543b77f 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/DebugElementLabelProvider.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/DebugElementLabelProvider.java @@ -100,13 +100,13 @@ public class DebugElementLabelProvider extends ElementLabelProvider { return null; } - @Override + @Override protected boolean requiresUIJob(ILabelUpdate[] updates) { - if (updates.length > 0) { - ILabelUpdate update = updates[0]; + if (updates.length > 0) { + ILabelUpdate update = updates[0]; IPresentationContext context = update.getPresentationContext(); if (context instanceof DebugModelPresentationContext) { - DebugModelPresentationContext debugContext = (DebugModelPresentationContext) context; + DebugModelPresentationContext debugContext = (DebugModelPresentationContext) context; IDebugModelPresentation presentation = debugContext.getModelPresentation(); if (presentation instanceof IDebugModelPresentationExtension) { IDebugModelPresentationExtension extension = (IDebugModelPresentationExtension) presentation; @@ -117,8 +117,8 @@ public class DebugElementLabelProvider extends ElementLabelProvider { } } } - } + } return false; - } + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/DebugElementMementoProvider.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/DebugElementMementoProvider.java index e570ea6dd..726b8b9e6 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/DebugElementMementoProvider.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/DebugElementMementoProvider.java @@ -48,34 +48,34 @@ public abstract class DebugElementMementoProvider extends ElementMementoProvider return false; } - /** - * Returns whether this adapter supports the given context. - * - * @param context - * @return whether this adapter supports the given context - */ - protected boolean supportsContext(IPresentationContext context) { + /** + * Returns whether this adapter supports the given context. + * + * @param context + * @return whether this adapter supports the given context + */ + protected boolean supportsContext(IPresentationContext context) { return supportsContextId(context.getId()); - } + } - /** - * Returns whether this adapter provides content in the specified context id. - * - * @param id part id - * @return whether this adapter provides content in the specified context id - */ - protected boolean supportsContextId(String id) { - return true; - } + /** + * Returns whether this adapter provides content in the specified context id. + * + * @param id part id + * @return whether this adapter provides content in the specified context id + */ + protected boolean supportsContextId(String id) { + return true; + } - /** - * Returns the name of the given element to use in a memento in the given context, - * or <code>null</code> if unsupported. - * - * @param element model element - * @param context presentation context - * @return element name or <code>null</code> if none - * @throws CoreException - */ - protected abstract String getElementName(Object element, IPresentationContext context) throws CoreException; + /** + * Returns the name of the given element to use in a memento in the given context, + * or <code>null</code> if unsupported. + * + * @param element model element + * @param context presentation context + * @return element name or <code>null</code> if none + * @throws CoreException + */ + protected abstract String getElementName(Object element, IPresentationContext context) throws CoreException; } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/DebugTargetContentProvider.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/DebugTargetContentProvider.java index ff86c59dd..d00ef9e8b 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/DebugTargetContentProvider.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/DebugTargetContentProvider.java @@ -80,15 +80,15 @@ public class DebugTargetContentProvider extends ElementContentProvider { return ((IDebugTarget)parent).getThreads(); } else if (id.equals(IDebugUIConstants.ID_MEMORY_VIEW)) - { + { if (parent instanceof IMemoryBlockRetrieval) { if (((IMemoryBlockRetrieval)parent).supportsStorageRetrieval()) { return DebugPlugin.getDefault().getMemoryBlockManager().getMemoryBlocks((IMemoryBlockRetrieval)parent); } } - } - return EMPTY; + } + return EMPTY; } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/ElementContentProvider.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/ElementContentProvider.java index fcb88ff2a..911adc741 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/ElementContentProvider.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/ElementContentProvider.java @@ -86,12 +86,12 @@ public abstract class ElementContentProvider implements IElementContentProvider job.schedule(); } - /** - * Computes the children for the given parent in the specified context. - * - * @param update update request - */ - protected void retrieveChildren(IChildrenUpdate update) { + /** + * Computes the children for the given parent in the specified context. + * + * @param update update request + */ + protected void retrieveChildren(IChildrenUpdate update) { if (!update.isCanceled()) { IStatus status = Status.OK_STATUS; try { @@ -110,16 +110,16 @@ public abstract class ElementContentProvider implements IElementContentProvider } update.setStatus(status); } - } + } - /** - * Computes whether the given element is a container. - * - * @param parent potential parent - * @param context presentation context - * @param monitor result to report to - */ - protected void retrieveChildCount(IChildrenCountUpdate update) { + /** + * Computes whether the given element is a container. + * + * @param parent potential parent + * @param context presentation context + * @param monitor result to report to + */ + protected void retrieveChildCount(IChildrenCountUpdate update) { if (!update.isCanceled()) { IStatus status = Status.OK_STATUS; try { @@ -137,70 +137,70 @@ public abstract class ElementContentProvider implements IElementContentProvider } update.setStatus(status); } - } + } - /** - * Returns the children for the given parent at the specified index in the specified context - * or <code>null</code> if none. - * - * @param parent element to retrieve children for - * @param index child index - * @param length number of children to retrieve - * @param context context children will be presented in - * @return child or <code>null</code> - * @throws CoreException if an exception occurs retrieving child - */ - protected abstract Object[] getChildren(Object parent, int index, int length, IPresentationContext context, IViewerUpdate monitor) throws CoreException; + /** + * Returns the children for the given parent at the specified index in the specified context + * or <code>null</code> if none. + * + * @param parent element to retrieve children for + * @param index child index + * @param length number of children to retrieve + * @param context context children will be presented in + * @return child or <code>null</code> + * @throws CoreException if an exception occurs retrieving child + */ + protected abstract Object[] getChildren(Object parent, int index, int length, IPresentationContext context, IViewerUpdate monitor) throws CoreException; - /** - * Returns the number of children for the given element. - * - * @param elementPath element that may have children - * @param context context element will be presented in - * @return number of children - * @throws CoreException if an exception occurs determining child count - */ - protected abstract int getChildCount(Object element, IPresentationContext context, IViewerUpdate monitor) throws CoreException; + /** + * Returns the number of children for the given element. + * + * @param elementPath element that may have children + * @param context context element will be presented in + * @return number of children + * @throws CoreException if an exception occurs determining child count + */ + protected abstract int getChildCount(Object element, IPresentationContext context, IViewerUpdate monitor) throws CoreException; - /** - * Returns whether this adapter supports the given context. - * - * @param context - * @return whether this adapter supports the given context - */ - protected boolean supportsContext(IPresentationContext context) { + /** + * Returns whether this adapter supports the given context. + * + * @param context + * @return whether this adapter supports the given context + */ + protected boolean supportsContext(IPresentationContext context) { return supportsContextId(context.getId()); - } + } - /** - * Returns whether this adapter provides content in the specified context id. - * - * @param id part id - * @return whether this adapter provides content in the specified context id - */ - protected abstract boolean supportsContextId(String id); + /** + * Returns whether this adapter provides content in the specified context id. + * + * @param id part id + * @return whether this adapter provides content in the specified context id + */ + protected abstract boolean supportsContextId(String id); - /** - * Returns the range of elements from <code>index</code> to <code>index + length</code> - * or <code>null</code> if the index and range is outside the bounds of the original element array. - * - * @param elements the original element array - * @param index the initial index to start copying from - * @param length the number of elements we want to copy into the returned array - * @return element or <code>null</code> - */ - protected Object[] getElements(Object[] elements, int index, int length) { - int max = elements.length; - if (index < max && ((index + length) > max)) { - length = max - index; - } - if ((index + length) <= elements.length) { - Object[] sub = new Object[length]; - System.arraycopy(elements, index, sub, 0, length); - return sub; - } - return null; - } + /** + * Returns the range of elements from <code>index</code> to <code>index + length</code> + * or <code>null</code> if the index and range is outside the bounds of the original element array. + * + * @param elements the original element array + * @param index the initial index to start copying from + * @param length the number of elements we want to copy into the returned array + * @return element or <code>null</code> + */ + protected Object[] getElements(Object[] elements, int index, int length) { + int max = elements.length; + if (index < max && ((index + length) > max)) { + length = max - index; + } + if ((index + length) <= elements.length) { + Object[] sub = new Object[length]; + System.arraycopy(elements, index, sub, 0, length); + return sub; + } + return null; + } @Override public void update(final IHasChildrenUpdate[] updates) { diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/ElementLabelProvider.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/ElementLabelProvider.java index f2a85ac35..ad2232401 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/ElementLabelProvider.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/ElementLabelProvider.java @@ -203,10 +203,10 @@ public abstract class ElementLabelProvider implements IElementLabelProvider { update.setForeground(getForeground(elementPath, presentationContext, columnId), i); update.setFontData(getFontData(elementPath, presentationContext, columnId), i); if (update instanceof ICheckUpdate && - Boolean.TRUE.equals(presentationContext.getProperty(ICheckUpdate.PROP_CHECK))) + Boolean.TRUE.equals(presentationContext.getProperty(ICheckUpdate.PROP_CHECK))) { ((ICheckUpdate) update).setChecked( - getChecked(elementPath, presentationContext), getGrayed(elementPath, presentationContext)); + getChecked(elementPath, presentationContext), getGrayed(elementPath, presentationContext)); } } } @@ -300,11 +300,11 @@ public abstract class ElementLabelProvider implements IElementLabelProvider { /** * Returns the checked state for the given path. * - * @param path Path of the element to retrieve the grayed state for. - * @param presentationContext Presentation context where the element is - * displayed. - * @return <code>true<code> if the element check box should be checked - * @throws CoreException + * @param path Path of the element to retrieve the grayed state for. + * @param presentationContext Presentation context where the element is + * displayed. + * @return <code>true<code> if the element check box should be checked + * @throws CoreException * * @since 3.6 */ @@ -316,18 +316,18 @@ public abstract class ElementLabelProvider implements IElementLabelProvider { * Returns the grayed state for the given path. * * @param path Path of the element to retrieve the grayed state for. - * @param presentationContext Presentation context where the element is - * displayed. + * @param presentationContext Presentation context where the element is + * displayed. * @return <code>true<code> if the element check box should be grayed * @throws CoreException - * - * @since 3.6 + * + * @since 3.6 */ protected boolean getGrayed(TreePath path, IPresentationContext presentationContext) throws CoreException { return false; } - @Override + @Override public synchronized void update(ILabelUpdate[] updates) { if (fLabelJob == null) { fLabelJob = newLabelJob(updates); @@ -340,39 +340,39 @@ public abstract class ElementLabelProvider implements IElementLabelProvider { fLabelJob.schedule(); } - /** - * Returns a new <code>Job</code> to update the specified labels. This method - * is used to determine if a UI job is needed or not, in the event the request for an update - * job has come from a non-UI thread. - * @param updates an array of pending label updates - * @return a new <code>Job</code> to update labels with. - */ - private Job newLabelJob(ILabelUpdate[] updates) { - if (requiresUIJob(updates)) { + /** + * Returns a new <code>Job</code> to update the specified labels. This method + * is used to determine if a UI job is needed or not, in the event the request for an update + * job has come from a non-UI thread. + * @param updates an array of pending label updates + * @return a new <code>Job</code> to update labels with. + */ + private Job newLabelJob(ILabelUpdate[] updates) { + if (requiresUIJob(updates)) { return new UILabelJob(); } else { return new LabelJob(); } - } - - /** - * Returns whether a UI job should be used for updates versus a non-UI job. - * @param updates - * @return true if the array of updates requires a UI job to update the labels, false otherwise - */ - protected boolean requiresUIJob(ILabelUpdate[] updates) { - return false; - } - - /** - * Returns the scheduling rule for the given update or <code>null</code> - * it none. - * - * @param update label update - * @return associated scheduling rule, or <code>null</code> - */ - protected ISchedulingRule getRule(ILabelUpdate update) { - return null; - } + } + + /** + * Returns whether a UI job should be used for updates versus a non-UI job. + * @param updates + * @return true if the array of updates requires a UI job to update the labels, false otherwise + */ + protected boolean requiresUIJob(ILabelUpdate[] updates) { + return false; + } + + /** + * Returns the scheduling rule for the given update or <code>null</code> + * it none. + * + * @param update label update + * @return associated scheduling rule, or <code>null</code> + */ + protected ISchedulingRule getRule(ILabelUpdate update) { + return null; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/ExpressionContentProvider.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/ExpressionContentProvider.java index 503587a70..2d3ea7646 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/ExpressionContentProvider.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/ExpressionContentProvider.java @@ -45,46 +45,46 @@ import org.eclipse.swt.graphics.FontData; */ public class ExpressionContentProvider extends VariableContentProvider { - /** - * @since 3.6 - * Element object used to wrap the expression error message. It displays - * the error message only in the first column if columns are visible. - */ - private static class ErrorMessageElement implements IElementLabelProvider { + /** + * @since 3.6 + * Element object used to wrap the expression error message. It displays + * the error message only in the first column if columns are visible. + */ + private static class ErrorMessageElement implements IElementLabelProvider { - public ErrorMessageElement(String message) { - fMessage = message; - } + public ErrorMessageElement(String message) { + fMessage = message; + } - private final String fMessage; + private final String fMessage; - @Override + @Override public void update(ILabelUpdate[] updates) { - for (int i = 0; i < updates.length; i++) { - String[] columnIds = updates[i].getColumnIds(); - if (columnIds == null) { - updateLabel(updates[i], 0); - } else { - for (int j = 0; j < columnIds.length; j++) { - if (IDebugUIConstants.COLUMN_ID_VARIABLE_NAME.equals(columnIds[j])) { - updateLabel(updates[i], j); - } else { - updates[i].setLabel(IInternalDebugCoreConstants.EMPTY_STRING, j); - } - } - } - - updates[i].done(); - } - } - - private void updateLabel(ILabelUpdate update, int columnIndex) { - update.setLabel(fMessage, columnIndex); - FontData fontData = JFaceResources.getFontDescriptor(IDebugUIConstants.PREF_VARIABLE_TEXT_FONT).getFontData()[0]; - fontData.setStyle(SWT.ITALIC); - - } - } + for (int i = 0; i < updates.length; i++) { + String[] columnIds = updates[i].getColumnIds(); + if (columnIds == null) { + updateLabel(updates[i], 0); + } else { + for (int j = 0; j < columnIds.length; j++) { + if (IDebugUIConstants.COLUMN_ID_VARIABLE_NAME.equals(columnIds[j])) { + updateLabel(updates[i], j); + } else { + updates[i].setLabel(IInternalDebugCoreConstants.EMPTY_STRING, j); + } + } + } + + updates[i].done(); + } + } + + private void updateLabel(ILabelUpdate update, int columnIndex) { + update.setLabel(fMessage, columnIndex); + FontData fontData = JFaceResources.getFontDescriptor(IDebugUIConstants.PREF_VARIABLE_TEXT_FONT).getFontData()[0]; + fontData.setStyle(SWT.ITALIC); + + } + } @Override public void update(IChildrenCountUpdate[] updates) { @@ -169,25 +169,25 @@ public class ExpressionContentProvider extends VariableContentProvider { @Override protected Object[] getAllChildren(Object parent, IPresentationContext context) throws CoreException { - if (parent instanceof IErrorReportingExpression) { - IErrorReportingExpression expression = (IErrorReportingExpression) parent; - if (expression.hasErrors()) { - String[] messages = expression.getErrorMessages(); + if (parent instanceof IErrorReportingExpression) { + IErrorReportingExpression expression = (IErrorReportingExpression) parent; + if (expression.hasErrors()) { + String[] messages = expression.getErrorMessages(); LinkedHashSet<ErrorMessageElement> set = new LinkedHashSet<>(messages.length); - for (int i = 0; i < messages.length; i++) { + for (int i = 0; i < messages.length; i++) { set.add(new ErrorMessageElement(messages[i])); } - return set.toArray(); - } - } - if (parent instanceof IExpression) { - IExpression expression = (IExpression) parent; - IValue value = expression.getValue(); - if (value != null) { - return getValueChildren(expression, value, context); - } - } - return EMPTY; + return set.toArray(); + } + } + if (parent instanceof IExpression) { + IExpression expression = (IExpression) parent; + IValue value = expression.getValue(); + if (value != null) { + return getValueChildren(expression, value, context); + } + } + return EMPTY; } @Override diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/ExpressionLabelProvider.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/ExpressionLabelProvider.java index f0457c5db..371689c8d 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/ExpressionLabelProvider.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/ExpressionLabelProvider.java @@ -34,135 +34,135 @@ public class ExpressionLabelProvider extends VariableLabelProvider { @Override protected RGB getForeground(TreePath elementPath, IPresentationContext presentationContext, String columnId) throws CoreException { Object element = elementPath.getLastSegment(); - if (element instanceof IErrorReportingExpression) { - IErrorReportingExpression expression = (IErrorReportingExpression) element; - if (expression.hasErrors()) { - if (columnId == null || columnId.equals(IDebugUIConstants.COLUMN_ID_VARIABLE_VALUE)) { - return new RGB(255, 0, 0); - } - } - } + if (element instanceof IErrorReportingExpression) { + IErrorReportingExpression expression = (IErrorReportingExpression) element; + if (expression.hasErrors()) { + if (columnId == null || columnId.equals(IDebugUIConstants.COLUMN_ID_VARIABLE_VALUE)) { + return new RGB(255, 0, 0); + } + } + } return super.getForeground(elementPath, presentationContext, columnId); } - @Override + @Override protected String getLabel(TreePath elementPath, IPresentationContext context, String columnId) throws CoreException { - if (columnId == null) { - return super.getLabel(elementPath, context, columnId); - } else { - IExpression expression = (IExpression) elementPath.getLastSegment(); - IValue value = expression.getValue(); - return getColumnText(expression, value, context, columnId); - } - } + if (columnId == null) { + return super.getLabel(elementPath, context, columnId); + } else { + IExpression expression = (IExpression) elementPath.getLastSegment(); + IValue value = expression.getValue(); + return getColumnText(expression, value, context, columnId); + } + } - /** - * Returns text for a specific columns for the expression/value. - * - * @param expression expression to retrieve text for - * @param value the value associated with the variable - * @param context presentation context specifying how to display the text - * @param columnId the column to get the text for - * @return the label text - * @throws CoreException Error while retrieving data from model. - * - * @since 3.6 - */ - private String getColumnText(IExpression expression, IValue value, IPresentationContext context, String columnId) throws CoreException { - if (IDebugUIConstants.COLUMN_ID_VARIABLE_NAME.equals(columnId)) { - return getExpressionName(expression, context); - } else if (IDebugUIConstants.COLUMN_ID_VARIABLE_VALUE.equals(columnId)) { - return getExpressionValueText(expression, value, context); - } else if (IDebugUIConstants.COLUMN_ID_VARIABLE_TYPE.equals(columnId) || - IDebugUIConstants.COLUMN_ID_VARIABLE_VALUE_TYPE.equals(columnId)) - { - if (value != null) { - return getValueTypeName(null, value, context); - } - } - return null; - } + /** + * Returns text for a specific columns for the expression/value. + * + * @param expression expression to retrieve text for + * @param value the value associated with the variable + * @param context presentation context specifying how to display the text + * @param columnId the column to get the text for + * @return the label text + * @throws CoreException Error while retrieving data from model. + * + * @since 3.6 + */ + private String getColumnText(IExpression expression, IValue value, IPresentationContext context, String columnId) throws CoreException { + if (IDebugUIConstants.COLUMN_ID_VARIABLE_NAME.equals(columnId)) { + return getExpressionName(expression, context); + } else if (IDebugUIConstants.COLUMN_ID_VARIABLE_VALUE.equals(columnId)) { + return getExpressionValueText(expression, value, context); + } else if (IDebugUIConstants.COLUMN_ID_VARIABLE_TYPE.equals(columnId) || + IDebugUIConstants.COLUMN_ID_VARIABLE_VALUE_TYPE.equals(columnId)) + { + if (value != null) { + return getValueTypeName(null, value, context); + } + } + return null; + } - /** - * Returns the expression's text to show in the view's name column. - * - * @param expression expression to retrieve text for - * @param context presentation context specifying how to display the text - * @return Returns the expression's text to show in the view's name column. - * @exception CoreException in an error occurs - * @since 3.6 - */ - protected String getExpressionName(IExpression expression, IPresentationContext context) throws CoreException { - if (expression instanceof IWatchExpression) { - return getWatchExpressionName((IWatchExpression) expression, context); - } - return expression.getExpressionText(); - } + /** + * Returns the expression's text to show in the view's name column. + * + * @param expression expression to retrieve text for + * @param context presentation context specifying how to display the text + * @return Returns the expression's text to show in the view's name column. + * @exception CoreException in an error occurs + * @since 3.6 + */ + protected String getExpressionName(IExpression expression, IPresentationContext context) throws CoreException { + if (expression instanceof IWatchExpression) { + return getWatchExpressionName((IWatchExpression) expression, context); + } + return expression.getExpressionText(); + } - /** - * Returns the watch expression's text to show in the view's name column. - * - * @param expression the expression - * @param context associated presentation context - * @return Returns the watch expression's text to show in the view's name column. - * @since 3.6 - */ - private String getWatchExpressionName(IWatchExpression expression, IPresentationContext context) { - StringBuilder result= new StringBuilder(); + /** + * Returns the watch expression's text to show in the view's name column. + * + * @param expression the expression + * @param context associated presentation context + * @return Returns the watch expression's text to show in the view's name column. + * @since 3.6 + */ + private String getWatchExpressionName(IWatchExpression expression, IPresentationContext context) { + StringBuilder result= new StringBuilder(); - String snippet = expression.getExpressionText().trim(); - StringBuilder snippetBuffer = new StringBuilder(); + String snippet = expression.getExpressionText().trim(); + StringBuilder snippetBuffer = new StringBuilder(); if (snippet.length() > 254) { snippetBuffer.append(snippet.substring(0, 127)); - snippetBuffer.append(DebugUIMessages.DefaultLabelProvider_0); + snippetBuffer.append(DebugUIMessages.DefaultLabelProvider_0); snippetBuffer.append(snippet.substring(snippet.length() - 127)); - } else { - snippetBuffer.append(snippet); - } - snippet = snippetBuffer.toString().replaceAll("[\n\r\t]+", " "); //$NON-NLS-1$//$NON-NLS-2$ + } else { + snippetBuffer.append(snippet); + } + snippet = snippetBuffer.toString().replaceAll("[\n\r\t]+", " "); //$NON-NLS-1$//$NON-NLS-2$ - result.append('"'); - result.append(snippet); - result.append('"'); + result.append('"'); + result.append(snippet); + result.append('"'); - return result.toString(); - } + return result.toString(); + } - /** - * Returns the expression's value, or a message to show in the value column, - * if the value is not available. - * - * @param expression expression to retrieve text for - * @param value the value associated with the variable - * @param context presentation context specifying how to display the text - * @return string representing the expression's value - * @throws CoreException Error while retrieving data from model. - * - * @since 3.6 - */ - protected String getExpressionValueText(IExpression expression, IValue value, IPresentationContext context) throws CoreException { - if (expression instanceof IWatchExpression) { - IWatchExpression watchExpression = (IWatchExpression)expression; - StringBuilder result = new StringBuilder(); + /** + * Returns the expression's value, or a message to show in the value column, + * if the value is not available. + * + * @param expression expression to retrieve text for + * @param value the value associated with the variable + * @param context presentation context specifying how to display the text + * @return string representing the expression's value + * @throws CoreException Error while retrieving data from model. + * + * @since 3.6 + */ + protected String getExpressionValueText(IExpression expression, IValue value, IPresentationContext context) throws CoreException { + if (expression instanceof IWatchExpression) { + IWatchExpression watchExpression = (IWatchExpression)expression; + StringBuilder result = new StringBuilder(); if (watchExpression.isPending() && value == null) { - result.append(DebugUIMessages.DefaultLabelProvider_12); - } else if (watchExpression.hasErrors()) { - result.append(DebugUIMessages.DefaultLabelProvider_13); - } else if (value != null) { - result.append( getValueText(null, value, context) ); - } - if (!watchExpression.isEnabled()) { - result.append(DebugUIMessages.DefaultLabelProvider_15); - } + result.append(DebugUIMessages.DefaultLabelProvider_12); + } else if (watchExpression.hasErrors()) { + result.append(DebugUIMessages.DefaultLabelProvider_13); + } else if (value != null) { + result.append( getValueText(null, value, context) ); + } + if (!watchExpression.isEnabled()) { + result.append(DebugUIMessages.DefaultLabelProvider_15); + } - return result.toString(); - } + return result.toString(); + } - if (value != null) { - return getValueText(null, value, context); - } - return null; - } + if (value != null) { + return getValueText(null, value, context); + } + return null; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/ExpressionManagerContentProvider.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/ExpressionManagerContentProvider.java index 096df5360..a6b124150 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/ExpressionManagerContentProvider.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/ExpressionManagerContentProvider.java @@ -45,110 +45,110 @@ import org.eclipse.swt.widgets.Composite; */ public class ExpressionManagerContentProvider extends ElementContentProvider { - /** - * An element representing the "Add new expression" entry in the - * expressions view. - * - * @since 3.6 - */ - private static class AddNewExpressionElement implements IElementLabelProvider, IElementEditor, ICellModifier { - - @Override + /** + * An element representing the "Add new expression" entry in the + * expressions view. + * + * @since 3.6 + */ + private static class AddNewExpressionElement implements IElementLabelProvider, IElementEditor, ICellModifier { + + @Override public void update(ILabelUpdate[] updates) { - for (int i = 0; i < updates.length; i++) { - String[] columnIds = updates[i].getColumnIds(); - if (columnIds == null) { - updateLabel(updates[i], 0); - } else { - for (int j = 0; j < columnIds.length; j++) { - if (IDebugUIConstants.COLUMN_ID_VARIABLE_NAME.equals(columnIds[j])) { - updateLabel(updates[i], j); - } else { - updates[i].setLabel(IInternalDebugCoreConstants.EMPTY_STRING, j); - } - } - } - - updates[i].done(); - } - } + for (int i = 0; i < updates.length; i++) { + String[] columnIds = updates[i].getColumnIds(); + if (columnIds == null) { + updateLabel(updates[i], 0); + } else { + for (int j = 0; j < columnIds.length; j++) { + if (IDebugUIConstants.COLUMN_ID_VARIABLE_NAME.equals(columnIds[j])) { + updateLabel(updates[i], j); + } else { + updates[i].setLabel(IInternalDebugCoreConstants.EMPTY_STRING, j); + } + } + } + + updates[i].done(); + } + } @SuppressWarnings("deprecation") private void updateLabel(ILabelUpdate update, int columnIndex) { - update.setLabel(DebugUIMessages.ExpressionManagerContentProvider_1, columnIndex); - update.setImageDescriptor(DebugUITools.getImageDescriptor(IInternalDebugUIConstants.IMG_LCL_MONITOR_EXPRESSION), columnIndex); + update.setLabel(DebugUIMessages.ExpressionManagerContentProvider_1, columnIndex); + update.setImageDescriptor(DebugUITools.getImageDescriptor(IInternalDebugUIConstants.IMG_LCL_MONITOR_EXPRESSION), columnIndex); - // Display the "Add new expression" element in italic to - // distinguish it from user elements in view. - FontData fontData = JFaceResources.getFontDescriptor(IDebugUIConstants.PREF_VARIABLE_TEXT_FONT).getFontData()[0]; - fontData.setStyle(SWT.ITALIC); - update.setFontData(fontData, columnIndex); - } + // Display the "Add new expression" element in italic to + // distinguish it from user elements in view. + FontData fontData = JFaceResources.getFontDescriptor(IDebugUIConstants.PREF_VARIABLE_TEXT_FONT).getFontData()[0]; + fontData.setStyle(SWT.ITALIC); + update.setFontData(fontData, columnIndex); + } - @Override + @Override public CellEditor getCellEditor(IPresentationContext context, String columnId, Object element, Composite parent) { - return new TextCellEditor(parent); - } + return new TextCellEditor(parent); + } - @Override + @Override public ICellModifier getCellModifier(IPresentationContext context, Object element) { - return this; - } + return this; + } - @Override + @Override public boolean canModify(Object element, String property) { - return (IDebugUIConstants.COLUMN_ID_VARIABLE_NAME.equals(property)); - } + return (IDebugUIConstants.COLUMN_ID_VARIABLE_NAME.equals(property)); + } - @Override + @Override public Object getValue(Object element, String property) { - return IInternalDebugCoreConstants.EMPTY_STRING; - } + return IInternalDebugCoreConstants.EMPTY_STRING; + } - @Override + @Override public void modify(Object element, String property, Object value) { - // If an expression is entered, add a new watch expression to the - // manager. - if (value instanceof String && - !IInternalDebugCoreConstants.EMPTY_STRING.equals( ((String)value).trim()) ) - { - String expressionText = DefaultLabelProvider.encodeEsacpedChars((String)value); - IWatchExpression newExpression= - DebugPlugin.getDefault().getExpressionManager().newWatchExpression(expressionText); - DebugPlugin.getDefault().getExpressionManager().addExpression(newExpression); - newExpression.setExpressionContext(getContext()); - } - } - - private IDebugElement getContext() { - IAdaptable object = DebugUITools.getDebugContext(); - IDebugElement context = null; - if (object instanceof IDebugElement) { - context = (IDebugElement) object; - } else if (object instanceof ILaunch) { - context = ((ILaunch) object).getDebugTarget(); - } - return context; - } - - } - - private static final AddNewExpressionElement ADD_NEW_EXPRESSION_ELEMENT = new AddNewExpressionElement(); + // If an expression is entered, add a new watch expression to the + // manager. + if (value instanceof String && + !IInternalDebugCoreConstants.EMPTY_STRING.equals( ((String)value).trim()) ) + { + String expressionText = DefaultLabelProvider.encodeEsacpedChars((String)value); + IWatchExpression newExpression= + DebugPlugin.getDefault().getExpressionManager().newWatchExpression(expressionText); + DebugPlugin.getDefault().getExpressionManager().addExpression(newExpression); + newExpression.setExpressionContext(getContext()); + } + } + + private IDebugElement getContext() { + IAdaptable object = DebugUITools.getDebugContext(); + IDebugElement context = null; + if (object instanceof IDebugElement) { + context = (IDebugElement) object; + } else if (object instanceof ILaunch) { + context = ((ILaunch) object).getDebugTarget(); + } + return context; + } + + } + + private static final AddNewExpressionElement ADD_NEW_EXPRESSION_ELEMENT = new AddNewExpressionElement(); @Override protected int getChildCount(Object element, IPresentationContext context, IViewerUpdate monitor) throws CoreException { - // Add the "Add new expression" element only if columns are displayed. + // Add the "Add new expression" element only if columns are displayed. return ((IExpressionManager) element).getExpressions().length + - (context.getColumns() != null ? 1 : 0); + (context.getColumns() != null ? 1 : 0); } @Override protected Object[] getChildren(Object parent, int index, int length, IPresentationContext context, IViewerUpdate monitor) throws CoreException { - if (context.getColumns() != null) { - return getElements(((IExpressionManager) parent).getExpressions(), ADD_NEW_EXPRESSION_ELEMENT, index, length); - } else { - return getElements(((IExpressionManager) parent).getExpressions(), index, length); - } + if (context.getColumns() != null) { + return getElements(((IExpressionManager) parent).getExpressions(), ADD_NEW_EXPRESSION_ELEMENT, index, length); + } else { + return getElements(((IExpressionManager) parent).getExpressions(), index, length); + } } /** @@ -158,22 +158,22 @@ public class ExpressionManagerContentProvider extends ElementContentProvider { * * @since 3.6 */ - private Object[] getElements(Object[] elements, Object lastElement, int index, int length) { - - int max = elements.length + 1; - if (index < max && ((index + length) > max)) { - length = max - index; - } - if ((index + length) <= max) { - Object[] sub = new Object[length]; - System.arraycopy(elements, index, sub, 0, Math.min(elements.length - index, length)); - if (index + length > elements.length) { - sub[length - 1] = lastElement; - } - return sub; - } - return null; - } + private Object[] getElements(Object[] elements, Object lastElement, int index, int length) { + + int max = elements.length + 1; + if (index < max && ((index + length) > max)) { + length = max - index; + } + if ((index + length) <= max) { + Object[] sub = new Object[length]; + System.arraycopy(elements, index, sub, 0, Math.min(elements.length - index, length)); + if (index + length > elements.length) { + sub[length - 1] = lastElement; + } + return sub; + } + return null; + } @Override protected boolean supportsContextId(String id) { @@ -182,7 +182,7 @@ public class ExpressionManagerContentProvider extends ElementContentProvider { @Override protected boolean hasChildren(Object element, IPresentationContext context, IViewerUpdate monitor) throws CoreException { - return true; + return true; } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/MemoryRetrievalContentProvider.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/MemoryRetrievalContentProvider.java index c6c90eaa5..3147c1e13 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/MemoryRetrievalContentProvider.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/MemoryRetrievalContentProvider.java @@ -48,14 +48,14 @@ public class MemoryRetrievalContentProvider extends ElementContentProvider { protected Object[] getAllChildren(Object parent, IPresentationContext context, IViewerUpdate monitor) { String id = context.getId(); if (id.equals(IDebugUIConstants.ID_MEMORY_VIEW)) - { + { if (parent instanceof IMemoryBlockRetrieval) { if (((IMemoryBlockRetrieval)parent).supportsStorageRetrieval()) - return DebugPlugin.getDefault().getMemoryBlockManager().getMemoryBlocks((IMemoryBlockRetrieval)parent); + return DebugPlugin.getDefault().getMemoryBlockManager().getMemoryBlocks((IMemoryBlockRetrieval)parent); } - } - return EMPTY; + } + return EMPTY; } @Override diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/StackFrameContentProvider.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/StackFrameContentProvider.java index 74b251fc1..4ebbf85c3 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/StackFrameContentProvider.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/StackFrameContentProvider.java @@ -44,17 +44,17 @@ public class StackFrameContentProvider extends ElementContentProvider { */ protected Object[] getAllChildren(Object parent, IPresentationContext context, IViewerUpdate monitor) throws CoreException { if (parent instanceof IStackFrame) { - String id = context.getId(); - IStackFrame frame = (IStackFrame) parent; - if (id.equals(IDebugUIConstants.ID_VARIABLE_VIEW)) { - return frame.getVariables(); - } else if (id.equals(IDebugUIConstants.ID_REGISTER_VIEW)) { - return frame.getRegisterGroups(); - } + String id = context.getId(); + IStackFrame frame = (IStackFrame) parent; + if (id.equals(IDebugUIConstants.ID_VARIABLE_VIEW)) { + return frame.getVariables(); + } else if (id.equals(IDebugUIConstants.ID_REGISTER_VIEW)) { + return frame.getRegisterGroups(); + } } else { monitor.cancel(); } - return EMPTY; + return EMPTY; } @Override @@ -65,13 +65,13 @@ public class StackFrameContentProvider extends ElementContentProvider { @Override protected boolean hasChildren(Object element, IPresentationContext context, IViewerUpdate monitor) throws CoreException { String id = context.getId(); - IStackFrame frame = (IStackFrame) element; - if (id.equals(IDebugUIConstants.ID_VARIABLE_VIEW)) { - return frame.hasVariables(); - } else if (id.equals(IDebugUIConstants.ID_REGISTER_VIEW)) { - return frame.hasRegisterGroups(); - } - return false; + IStackFrame frame = (IStackFrame) element; + if (id.equals(IDebugUIConstants.ID_VARIABLE_VIEW)) { + return frame.hasVariables(); + } else if (id.equals(IDebugUIConstants.ID_REGISTER_VIEW)) { + return frame.hasRegisterGroups(); + } + return false; } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/VariableContentProvider.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/VariableContentProvider.java index 1d2be2c0d..cf873622b 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/VariableContentProvider.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/VariableContentProvider.java @@ -72,168 +72,168 @@ public class VariableContentProvider extends ElementContentProvider { * @throws CoreException */ protected Object[] getAllChildren(Object parent, IPresentationContext context) throws CoreException { - IVariable variable = (IVariable) parent; - IValue value = variable.getValue(); - if (value != null) { - return getValueChildren(variable, value, context); - } - return EMPTY; + IVariable variable = (IVariable) parent; + IValue value = variable.getValue(); + if (value != null) { + return getValueChildren(variable, value, context); + } + return EMPTY; } - /** - * Return whether to show compute a logical structure or a raw structure - * in the specified context - * - * @return whether to show compute a logical structure or a raw structure - * in the specified context - */ - protected boolean isShowLogicalStructure(IPresentationContext context) { - Boolean show = (Boolean) context.getProperty(VariablesView.PRESENTATION_SHOW_LOGICAL_STRUCTURES); - return show != null && show.booleanValue(); - } + /** + * Return whether to show compute a logical structure or a raw structure + * in the specified context + * + * @return whether to show compute a logical structure or a raw structure + * in the specified context + */ + protected boolean isShowLogicalStructure(IPresentationContext context) { + Boolean show = (Boolean) context.getProperty(VariablesView.PRESENTATION_SHOW_LOGICAL_STRUCTURES); + return show != null && show.booleanValue(); + } - /** - * Returns the number of entries that should be displayed in each partition - * of an indexed collection. - * - * @return the number of entries that should be displayed in each partition - * of an indexed collection - */ - protected int getArrayPartitionSize() { - // TODO: should fix this with a user preference - return 100; - } + /** + * Returns the number of entries that should be displayed in each partition + * of an indexed collection. + * + * @return the number of entries that should be displayed in each partition + * of an indexed collection + */ + protected int getArrayPartitionSize() { + // TODO: should fix this with a user preference + return 100; + } - /** - * Returns any logical value for the raw value in the specified context - * - * @param value - * @param context - * @return logical value for the raw value - */ - protected IValue getLogicalValue(IValue value, IPresentationContext context) throws CoreException { + /** + * Returns any logical value for the raw value in the specified context + * + * @param value + * @param context + * @return logical value for the raw value + */ + protected IValue getLogicalValue(IValue value, IPresentationContext context) throws CoreException { return getLogicalValue(value, new ArrayList<String>(), context); - } + } - /** - * Returns children for the given value, creating array partitions if - * required - * - * @param parent expression or variable containing the given value - * @param value the value to retrieve children for - * @param context the context in which children have been requested - * @return children for the given value, creating array partitions if - * required - * @throws CoreException - */ - protected Object[] getValueChildren(IDebugElement parent, IValue value, IPresentationContext context) throws CoreException { - if (value == null) { - return EMPTY; - } - IValue logicalValue = getLogicalValue(value, context); - if (logicalValue instanceof IIndexedValue) { - IIndexedValue indexedValue = (IIndexedValue) logicalValue; - int partitionSize = computeParitionSize(indexedValue); - if (partitionSize > 1) { - int offset = indexedValue.getInitialOffset(); - int length = indexedValue.getSize(); - int numPartitions = length / partitionSize; - int remainder = length % partitionSize; - if (remainder > 0) { - numPartitions++; - } - IVariable[] partitions = new IVariable[numPartitions]; - for (int i = 0; i < (numPartitions - 1); i++) { - partitions[i] = new IndexedVariablePartition(parent, indexedValue, offset, partitionSize); - offset = offset + partitionSize; - } - if (remainder == 0) { - remainder = partitionSize; - } - partitions[numPartitions - 1] = new IndexedVariablePartition(parent, indexedValue, offset, remainder); - return partitions; - } - } - if (logicalValue == null) { - // safeguard against an structure type returning null - logicalValue = value; - } - return logicalValue.getVariables(); - } + /** + * Returns children for the given value, creating array partitions if + * required + * + * @param parent expression or variable containing the given value + * @param value the value to retrieve children for + * @param context the context in which children have been requested + * @return children for the given value, creating array partitions if + * required + * @throws CoreException + */ + protected Object[] getValueChildren(IDebugElement parent, IValue value, IPresentationContext context) throws CoreException { + if (value == null) { + return EMPTY; + } + IValue logicalValue = getLogicalValue(value, context); + if (logicalValue instanceof IIndexedValue) { + IIndexedValue indexedValue = (IIndexedValue) logicalValue; + int partitionSize = computeParitionSize(indexedValue); + if (partitionSize > 1) { + int offset = indexedValue.getInitialOffset(); + int length = indexedValue.getSize(); + int numPartitions = length / partitionSize; + int remainder = length % partitionSize; + if (remainder > 0) { + numPartitions++; + } + IVariable[] partitions = new IVariable[numPartitions]; + for (int i = 0; i < (numPartitions - 1); i++) { + partitions[i] = new IndexedVariablePartition(parent, indexedValue, offset, partitionSize); + offset = offset + partitionSize; + } + if (remainder == 0) { + remainder = partitionSize; + } + partitions[numPartitions - 1] = new IndexedVariablePartition(parent, indexedValue, offset, remainder); + return partitions; + } + } + if (logicalValue == null) { + // safeguard against an structure type returning null + logicalValue = value; + } + return logicalValue.getVariables(); + } - /** - * Returns the partition size to use for the given indexed value. The - * partition size is computed by determining the number of levels that an - * indexed collection must be nested in order to partition the collection - * sub-collections of the preferred partition size. - * - * @param value - * indexed value - * @return size of partitions the value should be subdivided into - */ - protected int computeParitionSize(IIndexedValue value) { - int partitionSize = 1; - try { - int length = value.getSize(); - int partitionDepth = 0; - int preferredSize = getArrayPartitionSize(); - int remainder = length % preferredSize; - length = length / preferredSize; - while (length > 0) { - if (remainder == 0 && length == 1) { - break; - } - partitionDepth++; - remainder = length % preferredSize; - length = length / preferredSize; - } - for (int i = 0; i < partitionDepth; i++) { - partitionSize = partitionSize * preferredSize; - } - } catch (DebugException e) { - } - return partitionSize; - } + /** + * Returns the partition size to use for the given indexed value. The + * partition size is computed by determining the number of levels that an + * indexed collection must be nested in order to partition the collection + * sub-collections of the preferred partition size. + * + * @param value + * indexed value + * @return size of partitions the value should be subdivided into + */ + protected int computeParitionSize(IIndexedValue value) { + int partitionSize = 1; + try { + int length = value.getSize(); + int partitionDepth = 0; + int preferredSize = getArrayPartitionSize(); + int remainder = length % preferredSize; + length = length / preferredSize; + while (length > 0) { + if (remainder == 0 && length == 1) { + break; + } + partitionDepth++; + remainder = length % preferredSize; + length = length / preferredSize; + } + for (int i = 0; i < partitionDepth; i++) { + partitionSize = partitionSize * preferredSize; + } + } catch (DebugException e) { + } + return partitionSize; + } - /** - * Returns any logical value for the raw value. This method will recurse - * over the returned value until the same structure is encountered again (to - * avoid infinite recursion). - * - * @param value raw value to possibly be replaced by a logical value - * @param previousStructureIds - * the list of logical structures that have already been applied - * to the returned value during the recursion of this method. - * Callers should always pass in a new, empty list. - * @return logical value if one is calculated, otherwise the raw value is returned - */ + /** + * Returns any logical value for the raw value. This method will recurse + * over the returned value until the same structure is encountered again (to + * avoid infinite recursion). + * + * @param value raw value to possibly be replaced by a logical value + * @param previousStructureIds + * the list of logical structures that have already been applied + * to the returned value during the recursion of this method. + * Callers should always pass in a new, empty list. + * @return logical value if one is calculated, otherwise the raw value is returned + */ protected IValue getLogicalValue(IValue value, List<String> previousStructureIds, IPresentationContext context) throws CoreException { - if (isShowLogicalStructure(context)) { - ILogicalStructureType[] types = DebugPlugin.getLogicalStructureTypes(value); - if (types.length > 0) { - ILogicalStructureType type = DebugPlugin.getDefaultStructureType(types); - if (type != null && !previousStructureIds.contains(type.getId())) { - IValue logicalValue = getLogicalStructureCache().getLogicalStructure(type, value); - previousStructureIds.add(type.getId()); - return getLogicalValue(logicalValue, previousStructureIds, context); - } - } - } - return value; - } + if (isShowLogicalStructure(context)) { + ILogicalStructureType[] types = DebugPlugin.getLogicalStructureTypes(value); + if (types.length > 0) { + ILogicalStructureType type = DebugPlugin.getDefaultStructureType(types); + if (type != null && !previousStructureIds.contains(type.getId())) { + IValue logicalValue = getLogicalStructureCache().getLogicalStructure(type, value); + previousStructureIds.add(type.getId()); + return getLogicalValue(logicalValue, previousStructureIds, context); + } + } + } + return value; + } - /** - * Returns the logical structure cache to use to store calculated structures. If the cache does not - * exist yet, one is created and a debug event listener is added to clear the cache on RESUME and - * TERMINATE events. - * - * @return the logical structure cache to use - */ - protected synchronized LogicalStructureCache getLogicalStructureCache(){ - if (fgLogicalCache == null){ - fgLogicalCache = new LogicalStructureCache(); - // Add a listener to clear the cache when resuming, terminating, or suspending - DebugPlugin.getDefault().addDebugEventListener(new IDebugEventSetListener(){ + /** + * Returns the logical structure cache to use to store calculated structures. If the cache does not + * exist yet, one is created and a debug event listener is added to clear the cache on RESUME and + * TERMINATE events. + * + * @return the logical structure cache to use + */ + protected synchronized LogicalStructureCache getLogicalStructureCache(){ + if (fgLogicalCache == null){ + fgLogicalCache = new LogicalStructureCache(); + // Add a listener to clear the cache when resuming, terminating, or suspending + DebugPlugin.getDefault().addDebugEventListener(new IDebugEventSetListener(){ @Override public void handleDebugEvents(DebugEvent[] events) { for (int i = 0; i < events.length; i++) { @@ -252,9 +252,9 @@ public class VariableContentProvider extends ElementContentProvider { } } } - }); - } - return fgLogicalCache; - } + }); + } + return fgLogicalCache; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/VariableLabelProvider.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/VariableLabelProvider.java index 4968eeb14..576996b64 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/VariableLabelProvider.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/VariableLabelProvider.java @@ -37,12 +37,12 @@ public class VariableLabelProvider extends DebugElementLabelProvider { protected RGB getBackground(TreePath elementPath, IPresentationContext presentationContext, String columnId) throws CoreException { Object element = elementPath.getLastSegment(); if (columnId != null) { - if (element instanceof IVariable) { - IVariable variable = (IVariable) element; + if (element instanceof IVariable) { + IVariable variable = (IVariable) element; if (variable.hasValueChanged()) { return DebugUIPlugin.getPreferenceColor(IDebugUIConstants.PREF_CHANGED_VALUE_BACKGROUND).getRGB(); } - } + } } return super.getBackground(elementPath, presentationContext, columnId); } @@ -51,14 +51,14 @@ public class VariableLabelProvider extends DebugElementLabelProvider { protected RGB getForeground(TreePath elementPath, IPresentationContext presentationContext, String columnId) throws CoreException { Object element = elementPath.getLastSegment(); if (columnId == null) { - if (element instanceof IVariable) { - IVariable variable = (IVariable) element; + if (element instanceof IVariable) { + IVariable variable = (IVariable) element; if (variable.hasValueChanged()) { return DebugUIPlugin.getPreferenceColor(IDebugUIConstants.PREF_CHANGED_DEBUG_ELEMENT_COLOR).getRGB(); } - } + } } - return super.getForeground(elementPath, presentationContext, columnId); + return super.getForeground(elementPath, presentationContext, columnId); } @Override diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/ViewerInputProvider.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/ViewerInputProvider.java index 8a1db1735..711940b92 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/ViewerInputProvider.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/ViewerInputProvider.java @@ -50,12 +50,12 @@ public abstract class ViewerInputProvider implements IViewerInputProvider { job.schedule(); } - /** - * Computes the viewer input for the specified context. - * - * @param update update request - */ - protected void retrieveInput(IViewerInputUpdate update) { + /** + * Computes the viewer input for the specified context. + * + * @param update update request + */ + protected void retrieveInput(IViewerInputUpdate update) { if (!update.isCanceled()) { IStatus status = Status.OK_STATUS; try { @@ -70,38 +70,38 @@ public abstract class ViewerInputProvider implements IViewerInputProvider { } update.setStatus(status); } - } + } - /** - * Returns the viewer input derived from the given source object in the specified - * context, possibly <code>null</code>. - * - * @param source element to derive a viewer input from - * @param context context for which an input is requested - * @param update viewer update request - * @throws CoreException if an exception occurs retrieving child - */ - protected abstract Object getViewerInput(Object source, IPresentationContext context, IViewerUpdate update) throws CoreException; + /** + * Returns the viewer input derived from the given source object in the specified + * context, possibly <code>null</code>. + * + * @param source element to derive a viewer input from + * @param context context for which an input is requested + * @param update viewer update request + * @throws CoreException if an exception occurs retrieving child + */ + protected abstract Object getViewerInput(Object source, IPresentationContext context, IViewerUpdate update) throws CoreException; - /** - * Returns whether this adapter supports the given context. - * - * @param context - * @return whether this adapter supports the given context - */ - protected boolean supportsContext(IPresentationContext context) { + /** + * Returns whether this adapter supports the given context. + * + * @param context + * @return whether this adapter supports the given context + */ + protected boolean supportsContext(IPresentationContext context) { return supportsContextId(context.getId()); - } + } - /** - * Returns whether this adapter provides content in the specified context id. - * - * @param id part id - * @return whether this adapter provides content in the specified context id - */ - protected abstract boolean supportsContextId(String id); + /** + * Returns whether this adapter provides content in the specified context id. + * + * @param id part id + * @return whether this adapter provides content in the specified context id + */ + protected abstract boolean supportsContextId(String id); /** * Returns a scheduling rule to use when performing the given updates or diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/preferences/IDebugPreferenceConstants.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/preferences/IDebugPreferenceConstants.java index c0ead1d23..93d9c16ac 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/preferences/IDebugPreferenceConstants.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/preferences/IDebugPreferenceConstants.java @@ -68,12 +68,12 @@ public interface IDebugPreferenceConstants { /** * (boolean) Whether or not the console view is shown * when there is program output. - */ + */ String CONSOLE_OPEN_ON_OUT= "DEBUG.consoleOpenOnOut"; //$NON-NLS-1$ /** * (boolean) Whether or not the console view is shown * when there is program error. - */ + */ String CONSOLE_OPEN_ON_ERR= "DEBUG.consoleOpenOnErr"; //$NON-NLS-1$ /** @@ -99,8 +99,8 @@ public interface IDebugPreferenceConstants { String VARIABLES_DETAIL_PANE_ORIENTATION = "Variables.detail.orientation"; //$NON-NLS-1$ String EXPRESSIONS_DETAIL_PANE_ORIENTATION = "Expressions.detail.orientation"; //$NON-NLS-1$ String REGISTERS_DETAIL_PANE_ORIENTATION = "Registers.detail.orientation"; //$NON-NLS-1$ - String MODULES_DETAIL_PANE_ORIENTATION = "Modules.detail.orientation"; //$NON-NLS-1$ - String BREAKPOINTS_DETAIL_PANE_ORIENTATION = "Breakpoints.detail.orientation"; //$NON-NLS-1$ + String MODULES_DETAIL_PANE_ORIENTATION = "Modules.detail.orientation"; //$NON-NLS-1$ + String BREAKPOINTS_DETAIL_PANE_ORIENTATION = "Breakpoints.detail.orientation"; //$NON-NLS-1$ String VARIABLES_DETAIL_PANE_RIGHT = "Variables.detail.orientation.right"; //$NON-NLS-1$ String VARIABLES_DETAIL_PANE_UNDERNEATH = "Variables.detail.orientation.underneath"; //$NON-NLS-1$ String VARIABLES_DETAIL_PANE_HIDDEN = "Variables.detail.orientation.hidden"; //$NON-NLS-1$ @@ -295,29 +295,29 @@ public interface IDebugPreferenceConstants { */ String PREF_TABLE_RENDERING_POST_BUFFER_SIZE = "org.eclispe.debug.ui.memory.postBufferSize"; //$NON-NLS-1$ - /** - * The layout mode in Debug view. - * - * @since 3.5 - */ - String DEBUG_VIEW_MODE = "org.eclispe.debug.ui.Debug_view.mode"; //$NON-NLS-1$ - String DEBUG_VIEW_MODE_AUTO = "Debug_view.mode.auto"; //$NON-NLS-1$ - String DEBUG_VIEW_MODE_COMPACT = "Debug_view.mode.compact"; //$NON-NLS-1$ - String DEBUG_VIEW_MODE_FULL = "Debug_view.mode.full"; //$NON-NLS-1$ - - /** - * Preference whether to auto-expand in the breadcrumb drop-down viewers. - * - * @since 3.5 - */ - String DEBUG_VIEW_BREADCRUMB_AUTO_EXPAND_DROP_DOWN = "org.eclispe.debug.ui.Debug_view.Breadcrumb.dropDownAutoexpand"; //$NON-NLS-1$ - - /** - * Perspectives in which the debug toolbar is hidden. - * - * @since 3.8 - */ - String DEBUG_VIEW_TOOLBAR_HIDDEN_PERSPECTIVES = "org.eclispe.debug.ui.Debug_view.debug_toolbar_hidden_perspectives"; //$NON-NLS-1$ + /** + * The layout mode in Debug view. + * + * @since 3.5 + */ + String DEBUG_VIEW_MODE = "org.eclispe.debug.ui.Debug_view.mode"; //$NON-NLS-1$ + String DEBUG_VIEW_MODE_AUTO = "Debug_view.mode.auto"; //$NON-NLS-1$ + String DEBUG_VIEW_MODE_COMPACT = "Debug_view.mode.compact"; //$NON-NLS-1$ + String DEBUG_VIEW_MODE_FULL = "Debug_view.mode.full"; //$NON-NLS-1$ + + /** + * Preference whether to auto-expand in the breadcrumb drop-down viewers. + * + * @since 3.5 + */ + String DEBUG_VIEW_BREADCRUMB_AUTO_EXPAND_DROP_DOWN = "org.eclispe.debug.ui.Debug_view.Breadcrumb.dropDownAutoexpand"; //$NON-NLS-1$ + + /** + * Perspectives in which the debug toolbar is hidden. + * + * @since 3.8 + */ + String DEBUG_VIEW_TOOLBAR_HIDDEN_PERSPECTIVES = "org.eclispe.debug.ui.Debug_view.debug_toolbar_hidden_perspectives"; //$NON-NLS-1$ } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/preferences/StringVariablePreferencePage.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/preferences/StringVariablePreferencePage.java index 9814eea8d..d0acf296e 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/preferences/StringVariablePreferencePage.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/preferences/StringVariablePreferencePage.java @@ -468,7 +468,7 @@ public class StringVariablePreferencePage extends PreferencePage implements IWor } catch (NumberFormatException e){ DebugUIPlugin.log(new Throwable("Problem loading persisted column sizes for StringVariablePreferencesPage",e)); //$NON-NLS-1$ } - } + } return true; } @@ -697,12 +697,12 @@ public class StringVariablePreferencePage extends PreferencePage implements IWor case 3: String contribution = IInternalDebugCoreConstants.EMPTY_STRING; if (variable.isContributed()) { - String pluginId = getVariableManager().getContributingPluginId(variable.getUnderlyingVariable()); - if (pluginId != null) { - contribution = pluginId; - } else { - contribution = DebugPreferencesMessages.SimpleLaunchVariablePreferencePage_23; - } + String pluginId = getVariableManager().getContributingPluginId(variable.getUnderlyingVariable()); + if (pluginId != null) { + contribution = pluginId; + } else { + contribution = DebugPreferencesMessages.SimpleLaunchVariablePreferencePage_23; + } } return contribution; default: diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/preferences/ViewManagementPreferencePage.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/preferences/ViewManagementPreferencePage.java index 51d69d6d5..eba619326 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/preferences/ViewManagementPreferencePage.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/preferences/ViewManagementPreferencePage.java @@ -59,22 +59,22 @@ public class ViewManagementPreferencePage extends PreferencePage implements IWor private CheckboxTableViewer fPerspectiveViewer; private Button fTrackViewsButton; private Button fResetViewsButton; - // This flag indicates whether or not the user has pressed the reset button + // This flag indicates whether or not the user has pressed the reset button private boolean fResetPressed= false; private PerspectiveLabelProvider fLabelProvider= null; - private SelectionListener fSelectionListener= new SelectionAdapter() { + private SelectionListener fSelectionListener= new SelectionAdapter() { - @Override + @Override public void widgetSelected(SelectionEvent e) { - Object source = e.getSource(); - if (source == fResetViewsButton) { - handleResetPressed(); - } else if (source == fTrackViewsButton) { - handleTrackViewsToggled(); - } - } + Object source = e.getSource(); + if (source == fResetViewsButton) { + handleResetPressed(); + } else if (source == fTrackViewsButton) { + handleTrackViewsToggled(); + } + } - }; + }; public ViewManagementPreferencePage() { super(); @@ -83,7 +83,7 @@ public class ViewManagementPreferencePage extends PreferencePage implements IWor setPreferenceStore(DebugUITools.getPreferenceStore()); } - @Override + @Override public void createControl(Composite parent) { super.createControl(parent); PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(), IDebugHelpContextIds.VIEW_MANAGEMENT_PREFERENCE_PAGE); @@ -113,7 +113,7 @@ public class ViewManagementPreferencePage extends PreferencePage implements IWor fTrackViewsButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); fTrackViewsButton.setText(DebugPreferencesMessages.ViewManagementPreferencePage_3); fTrackViewsButton.setSelection(DebugUITools.getPreferenceStore().getBoolean(IInternalDebugUIConstants.PREF_TRACK_VIEWS)); - fTrackViewsButton.addSelectionListener(fSelectionListener); + fTrackViewsButton.addSelectionListener(fSelectionListener); Label label= new Label(composite, SWT.WRAP); label.setText(DebugPreferencesMessages.ViewManagementPreferencePage_4); @@ -125,20 +125,20 @@ public class ViewManagementPreferencePage extends PreferencePage implements IWor updateResetButton(); } - private void handleResetPressed() { - fResetPressed= true; - fResetViewsButton.setEnabled(false); - } - - protected void handleTrackViewsToggled() { - if (fTrackViewsButton.getSelection()) { - // When toggled on, possibly re-enable the reset button - updateResetButton(); - } else { - // When toggled off, disable the reset button - fResetViewsButton.setEnabled(false); - } - } + private void handleResetPressed() { + fResetPressed= true; + fResetViewsButton.setEnabled(false); + } + + protected void handleTrackViewsToggled() { + if (fTrackViewsButton.getSelection()) { + // When toggled on, possibly re-enable the reset button + updateResetButton(); + } else { + // When toggled off, disable the reset button + fResetViewsButton.setEnabled(false); + } + } /** * @param parent @@ -162,12 +162,12 @@ public class ViewManagementPreferencePage extends PreferencePage implements IWor Set<String> perspectives; String preference = DebugUIPlugin.getDefault().getPreferenceStore().getString( - IDebugUIConstants.PREF_MANAGE_VIEW_PERSPECTIVES); - if (IDebugUIConstants.PREF_MANAGE_VIEW_PERSPECTIVES_DEFAULT.equals(preference)) { - perspectives = ViewContextService.getDefaultEnabledPerspectives(); - } else { - perspectives = ViewContextService.parseList(preference); - } + IDebugUIConstants.PREF_MANAGE_VIEW_PERSPECTIVES); + if (IDebugUIConstants.PREF_MANAGE_VIEW_PERSPECTIVES_DEFAULT.equals(preference)) { + perspectives = ViewContextService.getDefaultEnabledPerspectives(); + } else { + perspectives = ViewContextService.parseList(preference); + } checkPerspectives(perspectives); } @@ -176,9 +176,9 @@ public class ViewManagementPreferencePage extends PreferencePage implements IWor IPerspectiveRegistry registry= PlatformUI.getWorkbench().getPerspectiveRegistry(); for (String id : perspectives) { IPerspectiveDescriptor descriptor = registry.findPerspectiveWithId(id); - if (descriptor != null) { - fPerspectiveViewer.setChecked(descriptor, true); - } + if (descriptor != null) { + fPerspectiveViewer.setChecked(descriptor, true); + } } } @@ -187,23 +187,23 @@ public class ViewManagementPreferencePage extends PreferencePage implements IWor Object[] descriptors = fPerspectiveViewer.getCheckedElements(); Set<String> perspectives = new HashSet<>(); for (int i = 0; i < descriptors.length; i++) { - perspectives.add( ((IPerspectiveDescriptor)descriptors[i]).getId() ); + perspectives.add( ((IPerspectiveDescriptor)descriptors[i]).getId() ); } if (perspectives.equals(ViewContextService.getDefaultEnabledPerspectives())) { - getPreferenceStore().setValue(IDebugUIConstants.PREF_MANAGE_VIEW_PERSPECTIVES, - IDebugUIConstants.PREF_MANAGE_VIEW_PERSPECTIVES_DEFAULT); + getPreferenceStore().setValue(IDebugUIConstants.PREF_MANAGE_VIEW_PERSPECTIVES, + IDebugUIConstants.PREF_MANAGE_VIEW_PERSPECTIVES_DEFAULT); } else { - StringBuilder buffer= new StringBuilder(); + StringBuilder buffer= new StringBuilder(); for (Iterator<String> itr = perspectives.iterator(); itr.hasNext();) { - buffer.append(itr.next()).append(','); - } - getPreferenceStore().setValue(IDebugUIConstants.PREF_MANAGE_VIEW_PERSPECTIVES, buffer.toString()); + buffer.append(itr.next()).append(','); + } + getPreferenceStore().setValue(IDebugUIConstants.PREF_MANAGE_VIEW_PERSPECTIVES, buffer.toString()); } boolean trackViews = fTrackViewsButton.getSelection(); - getPreferenceStore().setValue(IInternalDebugUIConstants.PREF_TRACK_VIEWS, trackViews); + getPreferenceStore().setValue(IInternalDebugUIConstants.PREF_TRACK_VIEWS, trackViews); if (fResetPressed || !trackViews) { - // Reset if the user has pressed reset or chosen to no longer track views + // Reset if the user has pressed reset or chosen to no longer track views getPreferenceStore().setValue(IInternalDebugUIConstants.PREF_USER_VIEW_BINDINGS, IInternalDebugCoreConstants.EMPTY_STRING); } return super.performOk(); @@ -211,7 +211,7 @@ public class ViewManagementPreferencePage extends PreferencePage implements IWor @Override protected void performDefaults() { - checkPerspectives( ViewContextService.getDefaultEnabledPerspectives() ); + checkPerspectives( ViewContextService.getDefaultEnabledPerspectives() ); fTrackViewsButton.setSelection(getPreferenceStore().getDefaultBoolean(IInternalDebugUIConstants.PREF_TRACK_VIEWS)); fResetPressed= false; updateResetButton(); @@ -225,12 +225,12 @@ public class ViewManagementPreferencePage extends PreferencePage implements IWor /** * Updates enablement of the reset button. * Enable if either persisted view collection is not empty. - * Always disable if "track views" is turned off. + * Always disable if "track views" is turned off. */ private void updateResetButton() { boolean enableReset= !IInternalDebugCoreConstants.EMPTY_STRING.equals(getPreferenceStore().getString(IInternalDebugUIConstants.PREF_USER_VIEW_BINDINGS)); - // Only enable the button if there are views to clear, the user hasn't pressed the reset - // button, and the option to "track views" is turned on. + // Only enable the button if there are views to clear, the user hasn't pressed the reset + // button, and the option to "track views" is turned on. fResetViewsButton.setEnabled(enableReset && !fResetPressed && fTrackViewsButton.getSelection()); } @@ -245,21 +245,21 @@ public class ViewManagementPreferencePage extends PreferencePage implements IWor public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { } - @Override + @Override public void dispose() { - } + } } private static class PerspectiveComparator extends ViewerComparator { - @Override + @Override public int compare(Viewer viewer, Object e1, Object e2) { - if (e1 instanceof IPerspectiveDescriptor && e2 instanceof IPerspectiveDescriptor) { - return ((IPerspectiveDescriptor) e1).getLabel().compareToIgnoreCase(((IPerspectiveDescriptor) e2).getLabel()); - } - return super.compare(viewer, e1, e2); - } + if (e1 instanceof IPerspectiveDescriptor && e2 instanceof IPerspectiveDescriptor) { + return ((IPerspectiveDescriptor) e1).getLabel().compareToIgnoreCase(((IPerspectiveDescriptor) e2).getLabel()); + } + return super.compare(viewer, e1, e2); + } } @Override diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/AddSourceContainerDialog.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/AddSourceContainerDialog.java index 9c059e4fe..3cec78f55 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/AddSourceContainerDialog.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/AddSourceContainerDialog.java @@ -138,18 +138,18 @@ public class AddSourceContainerDialog extends TitleAreaDialog { protected void okPressed() { ISourceContainerType type = (ISourceContainerType) fViewer.getStructuredSelection().getFirstElement(); if (type != null) { - ISourceContainerBrowser browser = DebugUITools.getSourceContainerBrowser(type.getId()); - if (browser != null) { - ISourceContainer[] results = browser.addSourceContainers(getShell(), fDirector); - if (results != null && results.length > 0) { - fSourceContainerViewer.addEntries(results); - super.okPressed(); - } - else { - return; - } - } - } + ISourceContainerBrowser browser = DebugUITools.getSourceContainerBrowser(type.getId()); + if (browser != null) { + ISourceContainer[] results = browser.addSourceContainers(getShell(), fDirector); + if (results != null && results.length > 0) { + fSourceContainerViewer.addEntries(results); + super.okPressed(); + } + else { + return; + } + } + } super.okPressed(); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/SourceContainerViewer.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/SourceContainerViewer.java index 6de0082d7..b69e76c96 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/SourceContainerViewer.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/SourceContainerViewer.java @@ -136,11 +136,11 @@ public class SourceContainerViewer extends TreeViewer { * @param entries additions */ public void addEntries(ISourceContainer[] entries) { - int index = 0; + int index = 0; IStructuredSelection sel = getStructuredSelection(); if (!sel.isEmpty()) { - index = fEntries.indexOf(sel.getFirstElement()); - } + index = fEntries.indexOf(sel.getFirstElement()); + } for (int i = 0; i < entries.length; i++) { if (!fEntries.contains(entries[i])) { fEntries.add(index, entries[i]); diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/SourceLookupFacility.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/SourceLookupFacility.java index 657781a50..28d0f4558 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/SourceLookupFacility.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/SourceLookupFacility.java @@ -374,15 +374,15 @@ public class SourceLookupFacility implements IPageListener, IPartListener2, IPro } } return result; - } - - /** - * Returns the model presentation for the given debug model, or <code>null</code> - * if none. - * - * @param id debug model id - * @return presentation for the model, or <code>null</code> if none. - */ + } + + /** + * Returns the model presentation for the given debug model, or <code>null</code> + * if none. + * + * @param id debug model id + * @return presentation for the model, or <code>null</code> if none. + */ protected IDebugModelPresentation getPresentation(String id) { return ((DelegatingModelPresentation)DebugUIPlugin.getModelPresentation()).getPresentation(id); } @@ -393,32 +393,32 @@ public class SourceLookupFacility implements IPageListener, IPartListener2, IPro * @return an editor presentation */ protected IDebugEditorPresentation getEditorPresentation() { - return (DelegatingModelPresentation)DebugUIPlugin.getModelPresentation(); - } - - /** - * Opens an editor in the given workbench page for the given source lookup - * result. Has no effect if the result has an unknown editor id or editor input. - * The editor is opened, positioned, and annotated. - * <p> - * Honor's the user preference of whether to re-use editors when displaying source. - * </p> - * @param result source lookup result to display - * @param page the page to display the result in - */ - public void display(ISourceLookupResult result, IWorkbenchPage page) { + return (DelegatingModelPresentation)DebugUIPlugin.getModelPresentation(); + } + + /** + * Opens an editor in the given workbench page for the given source lookup + * result. Has no effect if the result has an unknown editor id or editor input. + * The editor is opened, positioned, and annotated. + * <p> + * Honor's the user preference of whether to re-use editors when displaying source. + * </p> + * @param result source lookup result to display + * @param page the page to display the result in + */ + public void display(ISourceLookupResult result, IWorkbenchPage page) { IEditorPart editor= openEditor(result, page); if (editor == null) { return; } IStackFrame frame = null; - if (result.getArtifact() instanceof IStackFrame) { - frame = (IStackFrame) result.getArtifact(); - } + if (result.getArtifact() instanceof IStackFrame) { + frame = (IStackFrame) result.getArtifact(); + } // position and annotate editor for stack frame - if (frame != null) { + if (frame != null) { IDebugEditorPresentation editorPresentation = getEditorPresentation(); - if (editorPresentation.addAnnotations(editor, frame)) { + if (editorPresentation.addAnnotations(editor, frame)) { Decoration decoration = new StandardDecoration(editorPresentation, editor, frame.getThread()); DecorationManager.addDecoration(decoration); } else { @@ -439,7 +439,7 @@ public class SourceLookupFacility implements IPageListener, IPartListener2, IPro } } } - } + } /** * Opens the editor used to display the source for an element selected in @@ -463,20 +463,20 @@ public class SourceLookupFacility implements IPageListener, IPartListener2, IPro page.bringToTop(editor); } if (editor == null) { - IEditorPart editorForPage = getEditor(page); + IEditorPart editorForPage = getEditor(page); if (editorForPage == null || editorForPage.isDirty() || page.isEditorPinned(editorForPage)) { - // open a new editor + // open a new editor editor = openEditor(page, input, id); editorForPage = editor; } else if (editorForPage instanceof IReusableEditor && editorForPage.getSite().getId().equals(id)) { - // re-use editor + // re-use editor page.reuseEditor((IReusableEditor)editorForPage, input); editor = editorForPage; - if(!page.isPartVisible(editor)) { - page.bringToTop(editor); - } + if(!page.isPartVisible(editor)) { + page.bringToTop(editor); + } } else { - // close editor, open a new one + // close editor, open a new one editor = openEditor(page, input, id); page.closeEditor(editorForPage, false); editorForPage = editor; @@ -569,108 +569,108 @@ public class SourceLookupFacility implements IPageListener, IPartListener2, IPro return false; } - @Override + @Override public void pageActivated(IWorkbenchPage page) { - } + } - @Override + @Override public void pageClosed(IWorkbenchPage page) { - fEditorsByPage.remove(page); - page.removePartListener(this); - } + fEditorsByPage.remove(page); + page.removePartListener(this); + } - @Override + @Override public void pageOpened(IWorkbenchPage page) { - page.addPartListener(this); - } + page.addPartListener(this); + } - @Override + @Override public void partActivated(IWorkbenchPartReference partRef) { - } + } - @Override + @Override public void partBroughtToTop(IWorkbenchPartReference partRef) { - } + } - @Override + @Override public void partClosed(IWorkbenchPartReference partRef) { - // clear the cached editor for the page if it has been closed - IWorkbenchPage page = partRef.getPage(); - IEditorPart editor = getEditor(page); - IWorkbenchPart part = partRef.getPart(false); + // clear the cached editor for the page if it has been closed + IWorkbenchPage page = partRef.getPage(); + IEditorPart editor = getEditor(page); + IWorkbenchPart part = partRef.getPart(false); if (part != null && part.equals(editor)) { fEditorsByPage.remove(page); } - } + } - @Override + @Override public void partDeactivated(IWorkbenchPartReference partRef) { - } + } - @Override + @Override public void partOpened(IWorkbenchPartReference partRef) { - } + } - @Override + @Override public void partHidden(IWorkbenchPartReference partRef) { - } + } - @Override + @Override public void partVisible(IWorkbenchPartReference partRef) { - } + } - @Override + @Override public void partInputChanged(IWorkbenchPartReference partRef) { - } + } - @Override + @Override public void propertyChange(PropertyChangeEvent event) { - String property = event.getProperty(); + String property = event.getProperty(); if (property.equals(IDebugUIConstants.PREF_REUSE_EDITOR)) { fReuseEditor = DebugUIPlugin.getDefault().getPreferenceStore().getBoolean(IDebugUIConstants.PREF_REUSE_EDITOR); } - } - - /** - * Returns the editor to use to display source in the given page, or - * <code>null</code> if a new editor should be opened. - * - * @param page workbench page - * @return the editor to use to display source in the given page, or - * <code>null</code> if a new editor should be opened - */ - protected IEditorPart getEditor(IWorkbenchPage page) { - return fEditorsByPage.get(page); - } - - /** - * Sets the editor to use to display source in the given page, or - * <code>null</code> if a new editor should be opened. - * - * @param page workbench page - * @return the editor to use to display source in the given page, or - * <code>null</code> if a new editor should be opened - */ - protected void setEditor(IWorkbenchPage page, IEditorPart editorPart) { - if (editorPart == null) { - fEditorsByPage.remove(page); - } else { - fEditorsByPage.put(page, editorPart); - } - page.addPartListener(this); - page.getWorkbenchWindow().addPageListener(this); - } - - /** - * Performs cleanup. - */ - protected void dispose() { - DebugUIPlugin.getDefault().getPreferenceStore().removePropertyChangeListener(this); + } + + /** + * Returns the editor to use to display source in the given page, or + * <code>null</code> if a new editor should be opened. + * + * @param page workbench page + * @return the editor to use to display source in the given page, or + * <code>null</code> if a new editor should be opened + */ + protected IEditorPart getEditor(IWorkbenchPage page) { + return fEditorsByPage.get(page); + } + + /** + * Sets the editor to use to display source in the given page, or + * <code>null</code> if a new editor should be opened. + * + * @param page workbench page + * @return the editor to use to display source in the given page, or + * <code>null</code> if a new editor should be opened + */ + protected void setEditor(IWorkbenchPage page, IEditorPart editorPart) { + if (editorPart == null) { + fEditorsByPage.remove(page); + } else { + fEditorsByPage.put(page, editorPart); + } + page.addPartListener(this); + page.getWorkbenchWindow().addPageListener(this); + } + + /** + * Performs cleanup. + */ + protected void dispose() { + DebugUIPlugin.getDefault().getPreferenceStore().removePropertyChangeListener(this); DebugPlugin.getDefault().removeDebugEventListener(this); - fEditorsByPage.clear(); - fPresentation.dispose(); + fEditorsByPage.clear(); + fPresentation.dispose(); fLookupResults.clear(); - } + } /** * A job to perform source lookup on the currently selected stack frame. diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/SourceLookupResult.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/SourceLookupResult.java index c490b0ea5..c524b8cff 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/SourceLookupResult.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/SourceLookupResult.java @@ -24,89 +24,89 @@ import org.eclipse.ui.IEditorInput; */ public class SourceLookupResult implements ISourceLookupResult { - /** - * Element that source was resolved for. - */ - private Object fArtifact; - /** - * Corresponding source element, or <code>null</code> - * if unknown. - */ - private Object fSourceElement; - /** - * Associated editor id, used to display the source element, - * or <code>null</code> if unknown. - */ - private String fEditorId; - /** - * Associated editor input, used to display the source element, - * or <code>null</code> if unknown. - */ - private IEditorInput fEditorInput; + /** + * Element that source was resolved for. + */ + private Object fArtifact; + /** + * Corresponding source element, or <code>null</code> + * if unknown. + */ + private Object fSourceElement; + /** + * Associated editor id, used to display the source element, + * or <code>null</code> if unknown. + */ + private String fEditorId; + /** + * Associated editor input, used to display the source element, + * or <code>null</code> if unknown. + */ + private IEditorInput fEditorInput; - /** - * Creates a source lookup result on the given artifact, source element, - * editor id, and editor input. - */ - public SourceLookupResult(Object artifact, Object sourceElement, String editorId, IEditorInput editorInput) { - fArtifact = artifact; - setSourceElement(sourceElement); - setEditorId(editorId); - setEditorInput(editorInput); - } + /** + * Creates a source lookup result on the given artifact, source element, + * editor id, and editor input. + */ + public SourceLookupResult(Object artifact, Object sourceElement, String editorId, IEditorInput editorInput) { + fArtifact = artifact; + setSourceElement(sourceElement); + setEditorId(editorId); + setEditorInput(editorInput); + } - @Override + @Override public Object getArtifact() { - return fArtifact; - } + return fArtifact; + } - @Override + @Override public Object getSourceElement() { - return fSourceElement; - } + return fSourceElement; + } - /** - * Sets the source element resolved for the artifact that source - * lookup was performed for, or <code>null</code> if a source element - * was not resolved. - * - * @param element resolved source element or <code>null</code> if unknown - */ - protected void setSourceElement(Object element) { - fSourceElement = element; - } + /** + * Sets the source element resolved for the artifact that source + * lookup was performed for, or <code>null</code> if a source element + * was not resolved. + * + * @param element resolved source element or <code>null</code> if unknown + */ + protected void setSourceElement(Object element) { + fSourceElement = element; + } - @Override + @Override public String getEditorId() { - return fEditorId; - } + return fEditorId; + } - /** - * Sets the identifier of the editor used to display this source - * lookup result's source element, or <code>null</code> if unknown. - * - * @param id the identifier of the editor used to display this source - * lookup result's source element, or <code>null</code> if unknown - */ - protected void setEditorId(String id) { - fEditorId = id; - } + /** + * Sets the identifier of the editor used to display this source + * lookup result's source element, or <code>null</code> if unknown. + * + * @param id the identifier of the editor used to display this source + * lookup result's source element, or <code>null</code> if unknown + */ + protected void setEditorId(String id) { + fEditorId = id; + } - @Override + @Override public IEditorInput getEditorInput() { - return fEditorInput; - } + return fEditorInput; + } - /** - * Sets the editor input used to display this source lookup - * result's source element, or <code>null</code> if unknown. - * - * @param input the editor input used to display this source lookup - * result's source element, or <code>null</code> if unknown - */ - protected void setEditorInput(IEditorInput input) { - fEditorInput = input; - } + /** + * Sets the editor input used to display this source lookup + * result's source element, or <code>null</code> if unknown. + * + * @param input the editor input used to display this source lookup + * result's source element, or <code>null</code> if unknown + */ + protected void setEditorInput(IEditorInput input) { + fEditorInput = input; + } /** * Updates the artifact to refer to the given artifact diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/SourceLookupService.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/SourceLookupService.java index e5dcf37d0..a19871086 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/SourceLookupService.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/SourceLookupService.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2005, 2015 IBM Corporation and others. + * Copyright (c) 2005, 2015 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -131,10 +131,10 @@ public class SourceLookupService implements IDebugContextListener, ISourceDispla IAdaptable adaptable = (IAdaptable) context; ISourceDisplay adapter = adaptable.getAdapter(ISourceDisplay.class); if (adapter == null && !(context instanceof PlatformObject)) { - // for objects that don't properly subclass PlatformObject to inherit default - // adapters, just delegate to the adapter factory - adapter = new DebugElementAdapterFactory().getAdapter(context, ISourceDisplay.class); - } + // for objects that don't properly subclass PlatformObject to inherit default + // adapters, just delegate to the adapter factory + adapter = new DebugElementAdapterFactory().getAdapter(context, ISourceDisplay.class); + } if (adapter != null) { adapter.displaySource(context, page, forceSourceLookup); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/browsers/DirectorySourceContainerDialog.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/browsers/DirectorySourceContainerDialog.java index e45518885..24b6e283c 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/browsers/DirectorySourceContainerDialog.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/browsers/DirectorySourceContainerDialog.java @@ -124,50 +124,50 @@ public class DirectorySourceContainerDialog extends TitleAreaDialog { composite.setLayoutData(new GridData(GridData.FILL_BOTH)); composite.setFont(font); - Composite dirComposite = new Composite(composite, SWT.NONE); - layout = new GridLayout(2, false); + Composite dirComposite = new Composite(composite, SWT.NONE); + layout = new GridLayout(2, false); dirComposite.setLayout(layout); dirComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); dirComposite.setFont(font); - Label label = new Label(dirComposite, SWT.NONE); - label.setText(SourceLookupUIMessages.DirectorySourceContainerDialog_4); - GridData data = new GridData(GridData.FILL_HORIZONTAL); - data.horizontalSpan = 2; - label.setLayoutData(data); - label.setFont(font); - - fDirText = new Text(dirComposite, SWT.BORDER); - data = new GridData(GridData.FILL_HORIZONTAL); - data.horizontalSpan = 1; - fDirText.setLayoutData(data); - fDirText.setFont(font); - fDirText.addModifyListener(new ModifyListener() { + Label label = new Label(dirComposite, SWT.NONE); + label.setText(SourceLookupUIMessages.DirectorySourceContainerDialog_4); + GridData data = new GridData(GridData.FILL_HORIZONTAL); + data.horizontalSpan = 2; + label.setLayoutData(data); + label.setFont(font); + + fDirText = new Text(dirComposite, SWT.BORDER); + data = new GridData(GridData.FILL_HORIZONTAL); + data.horizontalSpan = 1; + fDirText.setLayoutData(data); + fDirText.setFont(font); + fDirText.addModifyListener(new ModifyListener() { @Override public void modifyText( ModifyEvent e ) { validate(); } - }); - - Button button = new Button(dirComposite, SWT.PUSH); - button.setText(SourceLookupUIMessages.DirectorySourceContainerDialog_5); - data = new GridData(); - int widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH); - Point minSize = button.computeSize(SWT.DEFAULT, SWT.DEFAULT, true); - data.widthHint = Math.max(widthHint, minSize.x); - button.setLayoutData(data); - button.setFont(JFaceResources.getDialogFont()); - button.addSelectionListener(new SelectionAdapter() { - @Override + }); + + Button button = new Button(dirComposite, SWT.PUSH); + button.setText(SourceLookupUIMessages.DirectorySourceContainerDialog_5); + data = new GridData(); + int widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH); + Point minSize = button.computeSize(SWT.DEFAULT, SWT.DEFAULT, true); + data.widthHint = Math.max(widthHint, minSize.x); + button.setLayoutData(data); + button.setFont(JFaceResources.getDialogFont()); + button.addSelectionListener(new SelectionAdapter() { + @Override public void widgetSelected(SelectionEvent event) { - browse(); - } - }); + browse(); + } + }); - fSubfoldersButton = new Button(composite, SWT.CHECK); - fSubfoldersButton.setText(SourceLookupUIMessages.DirectorySourceContainerDialog_6); + fSubfoldersButton = new Button(composite, SWT.CHECK); + fSubfoldersButton.setText(SourceLookupUIMessages.DirectorySourceContainerDialog_6); - return parentComposite; + return parentComposite; } @Override diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/browsers/FolderSourceContainerDialog.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/browsers/FolderSourceContainerDialog.java index 2cf2b3c1a..fedf26804 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/browsers/FolderSourceContainerDialog.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/browsers/FolderSourceContainerDialog.java @@ -73,8 +73,8 @@ public class FolderSourceContainerDialog extends ElementTreeSelectionDialog { protected Control createDialogArea(Composite parent) { Composite parentc = (Composite)super.createDialogArea(parent); fSubfoldersButton = new Button(parentc, SWT.CHECK); - fSubfoldersButton.setText(SourceLookupUIMessages.DirectorySourceContainerDialog_6); - fSubfoldersButton.setSelection(fSearchSubfolders); + fSubfoldersButton.setText(SourceLookupUIMessages.DirectorySourceContainerDialog_6); + fSubfoldersButton.setSelection(fSearchSubfolders); return parentc; } @@ -88,7 +88,7 @@ public class FolderSourceContainerDialog extends ElementTreeSelectionDialog { super(parent, labelProvider, contentProvider); setTitle(SourceLookupUIMessages.folderSelection_title); // setInput(ResourcesPlugin.getWorkspace().getRoot()); - setComparator(new ResourceComparator(ResourceComparator.NAME)); + setComparator(new ResourceComparator(ResourceComparator.NAME)); ISelectionStatusValidator validator= new ISelectionStatusValidator() { @Override public IStatus validate(Object[] selection) { diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/stringsubstitution/PasswordPrompt.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/stringsubstitution/PasswordPrompt.java index 84ae28714..be146152f 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/stringsubstitution/PasswordPrompt.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/stringsubstitution/PasswordPrompt.java @@ -41,43 +41,43 @@ public class PasswordPrompt extends PromptingResolver { @Override protected Control createDialogArea(Composite parent) { // create composite - Composite composite = (Composite) super.createDialogArea(parent); - // create message - if (dialogMessage != null) { - Label label = new Label(composite, SWT.WRAP); - label.setText(dialogMessage); - GridData data = new GridData(GridData.GRAB_HORIZONTAL - | GridData.GRAB_VERTICAL | GridData.HORIZONTAL_ALIGN_FILL - | GridData.VERTICAL_ALIGN_CENTER); - data.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH); - label.setLayoutData(data); - label.setFont(parent.getFont()); - } - text = new Text(composite, SWT.SINGLE | SWT.BORDER | SWT.PASSWORD); - text.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL - | GridData.HORIZONTAL_ALIGN_FILL)); - String value = defaultValue == null ? lastValue : defaultValue; - if (value != null){ - text.setText(value); - } - applyDialogFont(composite); - return composite; + Composite composite = (Composite) super.createDialogArea(parent); + // create message + if (dialogMessage != null) { + Label label = new Label(composite, SWT.WRAP); + label.setText(dialogMessage); + GridData data = new GridData(GridData.GRAB_HORIZONTAL + | GridData.GRAB_VERTICAL | GridData.HORIZONTAL_ALIGN_FILL + | GridData.VERTICAL_ALIGN_CENTER); + data.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH); + label.setLayoutData(data); + label.setFont(parent.getFont()); + } + text = new Text(composite, SWT.SINGLE | SWT.BORDER | SWT.PASSWORD); + text.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL + | GridData.HORIZONTAL_ALIGN_FILL)); + String value = defaultValue == null ? lastValue : defaultValue; + if (value != null){ + text.setText(value); + } + applyDialogFont(composite); + return composite; } @Override protected void buttonPressed(int buttonId) { if (buttonId == IDialogConstants.OK_ID) { returnValue = text.getText(); - } else { - returnValue = null; - } - super.buttonPressed(buttonId); + } else { + returnValue = null; + } + super.buttonPressed(buttonId); } @Override protected void configureShell(Shell newShell) { - super.configureShell(newShell); - newShell.setText(StringSubstitutionMessages.StringPromptExpander_0); + super.configureShell(newShell); + newShell.setText(StringSubstitutionMessages.StringPromptExpander_0); } }; diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/AsynchronousModel.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/AsynchronousModel.java index 49978b4f5..77668b3e8 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/AsynchronousModel.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/AsynchronousModel.java @@ -64,7 +64,7 @@ public abstract class AsynchronousModel { // by // element private AsynchronousViewer fViewer; // viewer this model works for - private boolean fDisposed = false; // whether disposed + private boolean fDisposed = false; // whether disposed class EmptyContentAdapter extends AsynchronousContentAdapter { @@ -143,8 +143,8 @@ public abstract class AsynchronousModel { buffer.append(")"); //$NON-NLS-1$ DebugUIPlugin.trace(buffer.toString()); } - fDisposed = true; - cancelPendingUpdates(); + fDisposed = true; + cancelPendingUpdates(); disposeAllModelProxies(); ModelNode rootNode = getRootNode(); if (rootNode != null) { @@ -153,26 +153,26 @@ public abstract class AsynchronousModel { fElementToNodes.clear(); } - /** - * Returns whether this model has been disposed - * @return <code>true</code> if the model is disposed <code>false</code> otherwise - */ - public synchronized boolean isDisposed() { - return fDisposed; - } - - /** - * Cancels all pending update requests. - */ - protected synchronized void cancelPendingUpdates() { + /** + * Returns whether this model has been disposed + * @return <code>true</code> if the model is disposed <code>false</code> otherwise + */ + public synchronized boolean isDisposed() { + return fDisposed; + } + + /** + * Cancels all pending update requests. + */ + protected synchronized void cancelPendingUpdates() { Iterator<IStatusMonitor> updates = fPendingUpdates.iterator(); - while (updates.hasNext()) { - IStatusMonitor update = updates.next(); - updates.remove(); - update.setCanceled(true); - } - fPendingUpdates.clear(); - } + while (updates.hasNext()) { + IStatusMonitor update = updates.next(); + updates.remove(); + update.setCanceled(true); + } + fPendingUpdates.clear(); + } /** * Installs the model proxy for the given element into this viewer @@ -222,13 +222,13 @@ public abstract class AsynchronousModel { * Unintalls all model proxies installed for this model */ private void disposeAllModelProxies() { - synchronized(fModelProxies) { + synchronized(fModelProxies) { for (IModelProxy proxy : fModelProxies.values()) { - getViewer().modelProxyRemoved(proxy); - proxy.dispose(); - } - fModelProxies.clear(); - } + getViewer().modelProxyRemoved(proxy); + proxy.dispose(); + } + fModelProxies.clear(); + } } /** @@ -265,7 +265,7 @@ public abstract class AsynchronousModel { */ protected synchronized void mapElement(Object element, ModelNode node) { ModelNode[] nodes = getNodes(element); - node.remap(element); + node.remap(element); if (nodes == null) { fElementToNodes.put(element, new ModelNode[] { node}); } else { @@ -280,41 +280,41 @@ public abstract class AsynchronousModel { newNodes[old.length] = node; fElementToNodes.put(element, newNodes); } - installModelProxy(element); + installModelProxy(element); } - /** - * Unmaps the given node from its element and widget. - * - * @param node the model node - */ - protected synchronized void unmapNode(ModelNode node) { - Object element = node.getElement(); - ModelNode[] nodes = fElementToNodes.get(element); - if (nodes == null) { - return; - } - if (nodes.length == 1) { - fElementToNodes.remove(element); - disposeModelProxy(element); - } else { - for (int i = 0; i < nodes.length; i++) { - ModelNode node2 = nodes[i]; - if (node2 == node) { - ModelNode[] newNodes= new ModelNode[nodes.length - 1]; - System.arraycopy(nodes, 0, newNodes, 0, i); - if (i < newNodes.length) { - System.arraycopy(nodes, i + 1, newNodes, i, newNodes.length - i); - } - fElementToNodes.put(element, newNodes); - } - } - } - } + /** + * Unmaps the given node from its element and widget. + * + * @param node the model node + */ + protected synchronized void unmapNode(ModelNode node) { + Object element = node.getElement(); + ModelNode[] nodes = fElementToNodes.get(element); + if (nodes == null) { + return; + } + if (nodes.length == 1) { + fElementToNodes.remove(element); + disposeModelProxy(element); + } else { + for (int i = 0; i < nodes.length; i++) { + ModelNode node2 = nodes[i]; + if (node2 == node) { + ModelNode[] newNodes= new ModelNode[nodes.length - 1]; + System.arraycopy(nodes, 0, newNodes, 0, i); + if (i < newNodes.length) { + System.arraycopy(nodes, i + 1, newNodes, i, newNodes.length - i); + } + fElementToNodes.put(element, newNodes); + } + } + } + } /** * Returns the nodes in this model for the given element or - * <code>null</code> if none. + * <code>null</code> if none. * * @param element model element * @return associated nodes or <code>null</code> @@ -441,43 +441,43 @@ public abstract class AsynchronousModel { return adapter; } - /** - * Returns the tree element adapter for the given element or - * <code>null</code> if none. - * - * @param element - * element to retrieve adapter for - * @return presentation adapter or <code>null</code> - */ - protected IAsynchronousContentAdapter getContentAdapter(Object element) { - IAsynchronousContentAdapter adapter = null; - if (element instanceof IAsynchronousContentAdapter) { - adapter = (IAsynchronousContentAdapter) element; - } else if (element instanceof IAdaptable) { - IAdaptable adaptable = (IAdaptable) element; - adapter = adaptable.getAdapter(IAsynchronousContentAdapter.class); - } - return adapter; - } - - /** - * Updates the children of the given node. - * - * @param parent - * node of which to update children - */ - public void updateChildren(ModelNode parent) { - Object element = parent.getElement(); - IAsynchronousContentAdapter adapter = getContentAdapter(element); - if (adapter == null) { - adapter = fEmptyContentAdapter; - } - if (adapter != null) { - IChildrenRequestMonitor update = new ChildrenRequestMonitor(parent, this); - requestScheduled(update); - adapter.retrieveChildren(element, getPresentationContext(), update); - } - } + /** + * Returns the tree element adapter for the given element or + * <code>null</code> if none. + * + * @param element + * element to retrieve adapter for + * @return presentation adapter or <code>null</code> + */ + protected IAsynchronousContentAdapter getContentAdapter(Object element) { + IAsynchronousContentAdapter adapter = null; + if (element instanceof IAsynchronousContentAdapter) { + adapter = (IAsynchronousContentAdapter) element; + } else if (element instanceof IAdaptable) { + IAdaptable adaptable = (IAdaptable) element; + adapter = adaptable.getAdapter(IAsynchronousContentAdapter.class); + } + return adapter; + } + + /** + * Updates the children of the given node. + * + * @param parent + * node of which to update children + */ + public void updateChildren(ModelNode parent) { + Object element = parent.getElement(); + IAsynchronousContentAdapter adapter = getContentAdapter(element); + if (adapter == null) { + adapter = fEmptyContentAdapter; + } + if (adapter != null) { + IChildrenRequestMonitor update = new ChildrenRequestMonitor(parent, this); + requestScheduled(update); + adapter.retrieveChildren(element, getPresentationContext(), update); + } + } /** * Update this model's viewer preserving its selection. @@ -523,12 +523,12 @@ public abstract class AsynchronousModel { } } - /** - * Asynchronous update for add/set children request. - * - * @param parent the parent model node - * @param element the element context - */ + /** + * Asynchronous update for add/set children request. + * + * @param parent the parent model node + * @param element the element context + */ protected abstract void add(ModelNode parent, Object element); /** @@ -538,37 +538,37 @@ public abstract class AsynchronousModel { * @param kids list of model elements */ protected void setChildren(final ModelNode parentNode, List<Object> kids) { - final Object[] children = filter(parentNode.getElement(), kids.toArray()); - final AsynchronousViewer viewer = getViewer(); + final Object[] children = filter(parentNode.getElement(), kids.toArray()); + final AsynchronousViewer viewer = getViewer(); ViewerComparator comparator = viewer.getComparator(); - if (comparator != null) { - comparator.sort(viewer, children); - } - - ModelNode[] prevKids = null; - ModelNode[] newChildren = null; - ModelNode[] unmap = null; - - synchronized (this) { - if (isDisposed()) { - return; - } - prevKids = parentNode.getChildrenNodes(); - if (prevKids == null) { - newChildren = new ModelNode[children.length]; - for (int i = 0; i < children.length; i++) { - ModelNode node = new ModelNode(parentNode, children[i]); - mapElement(children[i], node); - newChildren[i] = node; - } - parentNode.setChildren(newChildren); - } else { - newChildren = new ModelNode[children.length]; - unmap = new ModelNode[prevKids.length]; - for (int i = 0; i < prevKids.length; i++) { + if (comparator != null) { + comparator.sort(viewer, children); + } + + ModelNode[] prevKids = null; + ModelNode[] newChildren = null; + ModelNode[] unmap = null; + + synchronized (this) { + if (isDisposed()) { + return; + } + prevKids = parentNode.getChildrenNodes(); + if (prevKids == null) { + newChildren = new ModelNode[children.length]; + for (int i = 0; i < children.length; i++) { + ModelNode node = new ModelNode(parentNode, children[i]); + mapElement(children[i], node); + newChildren[i] = node; + } + parentNode.setChildren(newChildren); + } else { + newChildren = new ModelNode[children.length]; + unmap = new ModelNode[prevKids.length]; + for (int i = 0; i < prevKids.length; i++) { unmap[i] = prevKids[i]; } - for (int i = 0; i < children.length; i++) { + for (int i = 0; i < children.length; i++) { Object child = children[i]; boolean found = false; for (int j = 0; j < prevKids.length; j++) { @@ -585,23 +585,23 @@ public abstract class AsynchronousModel { mapElement(child, newChildren[i]); } } - for (int i = 0; i < prevKids.length; i++) { - ModelNode kid = prevKids[i]; - if (kid != null) { - kid.dispose(); - unmapNode(kid); - } - } - parentNode.setChildren(newChildren); - } - if (DebugUIPlugin.DEBUG_MODEL) { - DebugUIPlugin.trace("CHILDREN CHANGED: " + parentNode); //$NON-NLS-1$ - DebugUIPlugin.trace(toString()); - } - } - - //update viewer outside the lock - final ModelNode[] finalUnmap = unmap; + for (int i = 0; i < prevKids.length; i++) { + ModelNode kid = prevKids[i]; + if (kid != null) { + kid.dispose(); + unmapNode(kid); + } + } + parentNode.setChildren(newChildren); + } + if (DebugUIPlugin.DEBUG_MODEL) { + DebugUIPlugin.trace("CHILDREN CHANGED: " + parentNode); //$NON-NLS-1$ + DebugUIPlugin.trace(toString()); + } + } + + //update viewer outside the lock + final ModelNode[] finalUnmap = unmap; preservingSelection(() -> { if (finalUnmap != null) { for (int i = 0; i < finalUnmap.length; i++) { diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/AsynchronousRequestMonitor.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/AsynchronousRequestMonitor.java index fde0aef0c..f18dc2e7c 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/AsynchronousRequestMonitor.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/AsynchronousRequestMonitor.java @@ -33,148 +33,148 @@ public abstract class AsynchronousRequestMonitor extends AbstractRequestMonitor /** * Model node the update is rooted at */ - private ModelNode fNode; + private ModelNode fNode; - /** - * Model the update is being performed for - */ - private AsynchronousModel fModel; + /** + * Model the update is being performed for + */ + private AsynchronousModel fModel; - /** - * Whether this request's 'done' method has been called. - */ - private boolean fDone = false; + /** + * Whether this request's 'done' method has been called. + */ + private boolean fDone = false; - protected WorkbenchJob fViewerUpdateJob = new WorkbenchJob("Asynchronous viewer update") { //$NON-NLS-1$ - @Override + protected WorkbenchJob fViewerUpdateJob = new WorkbenchJob("Asynchronous viewer update") { //$NON-NLS-1$ + @Override public IStatus runInUIThread(IProgressMonitor monitor) { - // necessary to check if widget is disposed. The item may - // have been removed from the tree when another children update - // occurred. - getModel().viewerUpdateScheduled(AsynchronousRequestMonitor.this); - if (fDone) { - getModel().requestComplete(AsynchronousRequestMonitor.this); - } - if (!isCanceled() && !getNode().isDisposed()) { - IStatus status = getStatus(); - if (status != null && !status.isOK()) { - getModel().getViewer().handlePresentationFailure(AsynchronousRequestMonitor.this, status); - } else { - performUpdate(); - } - } - getModel().viewerUpdateComplete(AsynchronousRequestMonitor.this); - return Status.OK_STATUS; - } - }; - - /** - * Constructs an update rooted at the given item. - * - * @param node model node - * @param model model the node is in - */ - public AsynchronousRequestMonitor(ModelNode node, AsynchronousModel model) { - fNode = node; - fModel = model; - // serialize updates per viewer - fViewerUpdateJob.setRule(getUpdateSchedulingRule()); - fViewerUpdateJob.setSystem(true); - } - - /** - * Returns the scheduling rule for viewer update job. - * - * @return rule or <code>null</code> - */ - protected ISchedulingRule getUpdateSchedulingRule() { - return AsynchronousSchedulingRuleFactory.getDefault().newSerialPerObjectRule(getModel().getViewer()); - } - - /** - * Returns the model this update is being performed for - * - * @return the model this update is being performed for - */ - protected AsynchronousModel getModel() { - return fModel; - } - - /** - * Returns the model node this update is rooted at - * - * @return the model node this update is rooted at - */ - protected ModelNode getNode() { - return fNode; - } - - /** - * Returns whether this update contains the given node. - * That is, whether this update is for the same node or a child of - * the given node. - * - * @param node node to test containment on - * @return whether this update contains the given node - */ - protected boolean contains(ModelNode node) { - if (node == getNode()) { - return true; - } - ModelNode parentNode = getNode().getParentNode(); - while (parentNode != null) { - if (parentNode.equals(getNode())) { - return true; - } - parentNode = parentNode.getParentNode(); - } - return false; - } - - @Override + // necessary to check if widget is disposed. The item may + // have been removed from the tree when another children update + // occurred. + getModel().viewerUpdateScheduled(AsynchronousRequestMonitor.this); + if (fDone) { + getModel().requestComplete(AsynchronousRequestMonitor.this); + } + if (!isCanceled() && !getNode().isDisposed()) { + IStatus status = getStatus(); + if (status != null && !status.isOK()) { + getModel().getViewer().handlePresentationFailure(AsynchronousRequestMonitor.this, status); + } else { + performUpdate(); + } + } + getModel().viewerUpdateComplete(AsynchronousRequestMonitor.this); + return Status.OK_STATUS; + } + }; + + /** + * Constructs an update rooted at the given item. + * + * @param node model node + * @param model model the node is in + */ + public AsynchronousRequestMonitor(ModelNode node, AsynchronousModel model) { + fNode = node; + fModel = model; + // serialize updates per viewer + fViewerUpdateJob.setRule(getUpdateSchedulingRule()); + fViewerUpdateJob.setSystem(true); + } + + /** + * Returns the scheduling rule for viewer update job. + * + * @return rule or <code>null</code> + */ + protected ISchedulingRule getUpdateSchedulingRule() { + return AsynchronousSchedulingRuleFactory.getDefault().newSerialPerObjectRule(getModel().getViewer()); + } + + /** + * Returns the model this update is being performed for + * + * @return the model this update is being performed for + */ + protected AsynchronousModel getModel() { + return fModel; + } + + /** + * Returns the model node this update is rooted at + * + * @return the model node this update is rooted at + */ + protected ModelNode getNode() { + return fNode; + } + + /** + * Returns whether this update contains the given node. + * That is, whether this update is for the same node or a child of + * the given node. + * + * @param node node to test containment on + * @return whether this update contains the given node + */ + protected boolean contains(ModelNode node) { + if (node == getNode()) { + return true; + } + ModelNode parentNode = getNode().getParentNode(); + while (parentNode != null) { + if (parentNode.equals(getNode())) { + return true; + } + parentNode = parentNode.getParentNode(); + } + return false; + } + + @Override public void setCanceled(boolean value) { - super.setCanceled(value); - if (value) { - getModel().requestCanceled(this); - } - } + super.setCanceled(value); + if (value) { + getModel().requestCanceled(this); + } + } - @Override + @Override public final void done() { - synchronized (this) { - fDone = true; + synchronized (this) { + fDone = true; } scheduleViewerUpdate(0L); } - /** - * Returns whether this request is done yet. - * - * @return if the request is done - */ - protected synchronized boolean isDone() { - return fDone; - } - - protected void scheduleViewerUpdate(long ms) { - if(!isCanceled()) { + /** + * Returns whether this request is done yet. + * + * @return if the request is done + */ + protected synchronized boolean isDone() { + return fDone; + } + + protected void scheduleViewerUpdate(long ms) { + if(!isCanceled()) { fViewerUpdateJob.schedule(ms); } - } + } - /** + /** * Notification this update has been completed and should now be applied to * this update's viewer. This method is called in the UI thread. */ - protected abstract void performUpdate(); - - /** - * Returns whether this update effectively contains the given update. - * That is, whether this update will also perform the given update. - * - * @param update update to compare to - * @return whether this update will also perform the given update - */ - protected abstract boolean contains(AsynchronousRequestMonitor update); + protected abstract void performUpdate(); + + /** + * Returns whether this update effectively contains the given update. + * That is, whether this update will also perform the given update. + * + * @param update update to compare to + * @return whether this update will also perform the given update + */ + protected abstract boolean contains(AsynchronousRequestMonitor update); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/AsynchronousSchedulingRuleFactory.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/AsynchronousSchedulingRuleFactory.java index 50d7014bd..a9f1a0c4b 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/AsynchronousSchedulingRuleFactory.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/AsynchronousSchedulingRuleFactory.java @@ -43,13 +43,13 @@ public class AsynchronousSchedulingRuleFactory { } } - class SerialPerObjectRule implements ISchedulingRule { + class SerialPerObjectRule implements ISchedulingRule { - private Object fObject = null; + private Object fObject = null; - public SerialPerObjectRule(Object lock) { - fObject = lock; - } + public SerialPerObjectRule(Object lock) { + fObject = lock; + } @Override public boolean contains(ISchedulingRule rule) { @@ -65,7 +65,7 @@ public class AsynchronousSchedulingRuleFactory { return false; } - } + } private AsynchronousSchedulingRuleFactory() {} diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/AsynchronousTableModel.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/AsynchronousTableModel.java index 4cfba8d89..92247cf22 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/AsynchronousTableModel.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/AsynchronousTableModel.java @@ -54,26 +54,26 @@ public class AsynchronousTableModel extends AsynchronousModel { protected void added(Object[] elements) { List<Object> kids = null; boolean changed = false; - synchronized (this) { - ModelNode[] childrenNodes = getRootNode().getChildrenNodes(); - if (childrenNodes == null) { + synchronized (this) { + ModelNode[] childrenNodes = getRootNode().getChildrenNodes(); + if (childrenNodes == null) { kids = new ArrayList<>(elements.length); - } else { + } else { kids = new ArrayList<>(elements.length + childrenNodes.length); - for (int i = 0; i < childrenNodes.length; i++) { + for (int i = 0; i < childrenNodes.length; i++) { kids.add(childrenNodes[i].getElement()); } - } - for (int i = 0; i < elements.length; i++) { - if (!kids.contains(elements[i])) { - kids.add(elements[i]); - changed = true; - } } + for (int i = 0; i < elements.length; i++) { + if (!kids.contains(elements[i])) { + kids.add(elements[i]); + changed = true; + } + } + } + if (changed) { + setChildren(getRootNode(), kids); } - if (changed) { - setChildren(getRootNode(), kids); - } } /** @@ -97,27 +97,27 @@ public class AsynchronousTableModel extends AsynchronousModel { protected void inserted(Object[] elements, int index) { List<Object> kids = null; boolean changed = false; - synchronized (this) { - ModelNode[] childrenNodes = getRootNode().getChildrenNodes(); - if (childrenNodes == null) { + synchronized (this) { + ModelNode[] childrenNodes = getRootNode().getChildrenNodes(); + if (childrenNodes == null) { kids = new ArrayList<>(elements.length); - } else { + } else { kids = new ArrayList<>(elements.length + childrenNodes.length); - for (int i = 0; i < childrenNodes.length; i++) { + for (int i = 0; i < childrenNodes.length; i++) { kids.add(childrenNodes[i].getElement()); } - } - for (int i = 0; i < elements.length; i++) { - if (!kids.contains(elements[i])) { - kids.add(index, elements[i]); - index++; - changed = true; - } } + for (int i = 0; i < elements.length; i++) { + if (!kids.contains(elements[i])) { + kids.add(index, elements[i]); + index++; + changed = true; + } + } + } + if (changed) { + setChildren(getRootNode(), kids); } - if (changed) { - setChildren(getRootNode(), kids); - } } /** @@ -139,23 +139,23 @@ public class AsynchronousTableModel extends AsynchronousModel { protected void removed(Object[] elements) { List<Object> kids = null; boolean changed = false; - synchronized (this) { - ModelNode[] childrenNodes = getRootNode().getChildrenNodes(); - if (childrenNodes != null) { + synchronized (this) { + ModelNode[] childrenNodes = getRootNode().getChildrenNodes(); + if (childrenNodes != null) { kids = new ArrayList<>(childrenNodes.length); - for (int i = 0; i < childrenNodes.length; i++) { + for (int i = 0; i < childrenNodes.length; i++) { kids.add(childrenNodes[i].getElement()); } - for (int i = 0; i < elements.length; i++) { - if (kids.remove(elements[i])) { - changed = true; - } - } - } + for (int i = 0; i < elements.length; i++) { + if (kids.remove(elements[i])) { + changed = true; + } + } + } + } + if (changed) { + setChildren(getRootNode(), kids); } - if (changed) { - setChildren(getRootNode(), kids); - } } /** @@ -175,24 +175,24 @@ public class AsynchronousTableModel extends AsynchronousModel { * @param replacement the element that replaced the old element */ protected void replaced(Object element, Object replacement) { - Object[] filtered = filter(getRootNode().getElement(), new Object[] { replacement }); - if (filtered.length == 0) { - remove(new Object[]{element}); - return; - } + Object[] filtered = filter(getRootNode().getElement(), new Object[] { replacement }); + if (filtered.length == 0) { + remove(new Object[]{element}); + return; + } List<ModelNode> list = new ArrayList<>(); - synchronized (this) { - ModelNode[] nodes = getNodes(element); - for (int i = 0; i < nodes.length; i++) { + synchronized (this) { + ModelNode[] nodes = getNodes(element); + for (int i = 0; i < nodes.length; i++) { ModelNode node = nodes[i]; node.remap(replacement); list.add(node); } } - if (!list.isEmpty()) { + if (!list.isEmpty()) { for (ModelNode node : list) { - getViewer().nodeChanged(node); - } - } + getViewer().nodeChanged(node); + } + } } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/AsynchronousTableViewer.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/AsynchronousTableViewer.java index 8f0d2168c..a4715aa7f 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/AsynchronousTableViewer.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/AsynchronousTableViewer.java @@ -55,135 +55,135 @@ import org.eclipse.ui.progress.WorkbenchJob; */ public class AsynchronousTableViewer extends AsynchronousViewer implements Listener { - private Table fTable; - - private TableEditor fTableEditor; - - private TableEditorImpl fTableEditorImpl; - - public AsynchronousTableViewer(Composite parent) { - this(parent, SWT.VIRTUAL); - } - - public AsynchronousTableViewer(Composite parent, int style) { - this(new Table(parent, style)); - } - - /** - * Table must be SWT.VIRTUAL. This is intentional. Labels will never be - * retrieved for non-visible items. - * - * @see SWT#VIRTUAL - * @param table the backing table widget - */ - public AsynchronousTableViewer(Table table) { - Assert.isTrue((table.getStyle() & SWT.VIRTUAL) != 0); - fTable = table; - hookControl(fTable); - fTableEditor = new TableEditor(fTable); - fTableEditorImpl = createTableEditorImpl(); - } - - @Override + private Table fTable; + + private TableEditor fTableEditor; + + private TableEditorImpl fTableEditorImpl; + + public AsynchronousTableViewer(Composite parent) { + this(parent, SWT.VIRTUAL); + } + + public AsynchronousTableViewer(Composite parent, int style) { + this(new Table(parent, style)); + } + + /** + * Table must be SWT.VIRTUAL. This is intentional. Labels will never be + * retrieved for non-visible items. + * + * @see SWT#VIRTUAL + * @param table the backing table widget + */ + public AsynchronousTableViewer(Table table) { + Assert.isTrue((table.getStyle() & SWT.VIRTUAL) != 0); + fTable = table; + hookControl(fTable); + fTableEditor = new TableEditor(fTable); + fTableEditorImpl = createTableEditorImpl(); + } + + @Override protected void hookControl(Control control) { - super.hookControl(control); - control.addMouseListener(new MouseAdapter() { - @Override + super.hookControl(control); + control.addMouseListener(new MouseAdapter() { + @Override public void mouseDown(MouseEvent e) { - fTableEditorImpl.handleMouseDown(e); - } - }); - } + fTableEditorImpl.handleMouseDown(e); + } + }); + } - @Override + @Override public synchronized void dispose() { - fTableEditor.dispose(); - fTable.dispose(); - super.dispose(); - } + fTableEditor.dispose(); + fTable.dispose(); + super.dispose(); + } - @Override + @Override protected ISelection doAttemptSelectionToWidget(ISelection selection, boolean reveal) { - if (acceptsSelection(selection)) { + if (acceptsSelection(selection)) { List<?> list = ((IStructuredSelection) selection).toList(); - if (list == null) { - fTable.deselectAll(); - return StructuredSelection.EMPTY; - } - - int[] indices = new int[list.size()]; - ModelNode[] nodes = getModel().getRootNode().getChildrenNodes(); - if (nodes != null) { - int index = 0; - - // I'm not sure if it would be faster to check TableItems first... - for (int i = 0; i < nodes.length; i++) { - Object element = nodes[i].getElement(); - if (list.contains(element)) { - indices[index] = i; - index++; - } - } - - fTable.setSelection(indices); - if (reveal && indices.length > 0) { - TableItem item = fTable.getItem(indices[0]); - fTable.showItem(item); - } - } - } - return StructuredSelection.EMPTY; - } - - @Override + if (list == null) { + fTable.deselectAll(); + return StructuredSelection.EMPTY; + } + + int[] indices = new int[list.size()]; + ModelNode[] nodes = getModel().getRootNode().getChildrenNodes(); + if (nodes != null) { + int index = 0; + + // I'm not sure if it would be faster to check TableItems first... + for (int i = 0; i < nodes.length; i++) { + Object element = nodes[i].getElement(); + if (list.contains(element)) { + indices[index] = i; + index++; + } + } + + fTable.setSelection(indices); + if (reveal && indices.length > 0) { + TableItem item = fTable.getItem(indices[0]); + fTable.showItem(item); + } + } + } + return StructuredSelection.EMPTY; + } + + @Override protected boolean acceptsSelection(ISelection selection) { - return selection instanceof IStructuredSelection; - } + return selection instanceof IStructuredSelection; + } - @Override + @Override protected ISelection getEmptySelection() { - return StructuredSelection.EMPTY; - } + return StructuredSelection.EMPTY; + } - protected Widget getParent(Widget widget) { - if (widget instanceof TableItem) { - return fTable; - } - return null; - } + protected Widget getParent(Widget widget) { + if (widget instanceof TableItem) { + return fTable; + } + return null; + } - @Override + @Override protected List getSelectionFromWidget() { - TableItem[] selection = fTable.getSelection(); + TableItem[] selection = fTable.getSelection(); List<Object> datas = new ArrayList<>(selection.length); - for (int i = 0; i < selection.length; i++) { - datas.add(selection[i].getData()); - } - return datas; - } + for (int i = 0; i < selection.length; i++) { + datas.add(selection[i].getData()); + } + return datas; + } - @Override + @Override public Control getControl() { - return fTable; - } + return fTable; + } - public Table getTable() { - return (Table) getControl(); - } + public Table getTable() { + return (Table) getControl(); + } - @Override + @Override protected void internalRefresh(ModelNode node) { - super.internalRefresh(node); - if (node.getElement().equals(getInput())) { - updateChildren(node); - } - } + super.internalRefresh(node); + if (node.getElement().equals(getInput())) { + updateChildren(node); + } + } - @Override + @Override protected void restoreLabels(Item item) { - TableItem tableItem = (TableItem) item; - String[] values = (String[]) tableItem.getData(OLD_LABEL); - Image[] images = (Image[]) tableItem.getData(OLD_IMAGE); + TableItem tableItem = (TableItem) item; + String[] values = (String[]) tableItem.getData(OLD_LABEL); + Image[] images = (Image[]) tableItem.getData(OLD_IMAGE); if (values != null) { tableItem.setText(values); tableItem.setImage(images); @@ -192,289 +192,289 @@ public class AsynchronousTableViewer extends AsynchronousViewer implements Liste @Override public void setLabels(Widget widget, String[] labels, ImageDescriptor[] imageDescriptors) { - TableItem item = (TableItem) widget; - item.setText(labels); - item.setData(OLD_LABEL, labels); - Image[] images = new Image[labels.length]; - item.setData(OLD_IMAGE, images); - if (imageDescriptors != null) { - for (int i = 0; i < images.length; i++) { - if (i < imageDescriptors.length) { + TableItem item = (TableItem) widget; + item.setText(labels); + item.setData(OLD_LABEL, labels); + Image[] images = new Image[labels.length]; + item.setData(OLD_IMAGE, images); + if (imageDescriptors != null) { + for (int i = 0; i < images.length; i++) { + if (i < imageDescriptors.length) { images[i] = getImage(imageDescriptors[i]); } - } - } - item.setImage(images); - } + } + } + item.setImage(images); + } - @Override + @Override public void setColors(Widget widget, RGB[] foregrounds, RGB[] backgrounds) { - TableItem item = (TableItem) widget; - if (foregrounds == null) { - foregrounds = new RGB[fTable.getColumnCount()]; - } - if (backgrounds == null) { - backgrounds = new RGB[fTable.getColumnCount()]; - } - - for (int i = 0; i < foregrounds.length; i++) { - Color fg = getColor(foregrounds[i]); - item.setForeground(i, fg); - } - for (int i = 0; i < backgrounds.length; i++) { - Color bg = getColor(backgrounds[i]); - item.setBackground(i, bg); - } - } - - @Override + TableItem item = (TableItem) widget; + if (foregrounds == null) { + foregrounds = new RGB[fTable.getColumnCount()]; + } + if (backgrounds == null) { + backgrounds = new RGB[fTable.getColumnCount()]; + } + + for (int i = 0; i < foregrounds.length; i++) { + Color fg = getColor(foregrounds[i]); + item.setForeground(i, fg); + } + for (int i = 0; i < backgrounds.length; i++) { + Color bg = getColor(backgrounds[i]); + item.setBackground(i, bg); + } + } + + @Override public void setFonts(Widget widget, FontData[] fontDatas) { - TableItem item = (TableItem) widget; - if (fontDatas != null) { - for (int i = 0; i < fontDatas.length; i++) { - Font font = getFont(fontDatas[i]); - item.setFont(i, font); - } - } - } - - public void setColumnHeaders(final String[] headers) { - fTableEditorImpl.setColumnProperties(headers); - } - - public Object[] getColumnProperties() { - return fTableEditorImpl.getColumnProperties(); - } - - public void showColumnHeader(final boolean showHeaders) { - WorkbenchJob job = new WorkbenchJob("Set Header Visibility") { //$NON-NLS-1$ - @Override + TableItem item = (TableItem) widget; + if (fontDatas != null) { + for (int i = 0; i < fontDatas.length; i++) { + Font font = getFont(fontDatas[i]); + item.setFont(i, font); + } + } + } + + public void setColumnHeaders(final String[] headers) { + fTableEditorImpl.setColumnProperties(headers); + } + + public Object[] getColumnProperties() { + return fTableEditorImpl.getColumnProperties(); + } + + public void showColumnHeader(final boolean showHeaders) { + WorkbenchJob job = new WorkbenchJob("Set Header Visibility") { //$NON-NLS-1$ + @Override public IStatus runInUIThread(IProgressMonitor monitor) { - if (!fTable.isDisposed()) - { - fTable.setHeaderVisible(showHeaders); - } - return Status.OK_STATUS; - } - }; - job.setPriority(Job.INTERACTIVE); - job.setSystem(true); - job.schedule(); - } - - @Override + if (!fTable.isDisposed()) + { + fTable.setHeaderVisible(showHeaders); + } + return Status.OK_STATUS; + } + }; + job.setPriority(Job.INTERACTIVE); + job.setSystem(true); + job.schedule(); + } + + @Override public void reveal(Object element) { - Assert.isNotNull(element); - Widget w = findItem(element); - if (w instanceof TableItem) { + Assert.isNotNull(element); + Widget w = findItem(element); + if (w instanceof TableItem) { getTable().showItem((TableItem) w); } - } - - /** - * Sets the cell editors of this table viewer. - * - * @param editors - * the list of cell editors - */ - public void setCellEditors(CellEditor[] editors) { - fTableEditorImpl.setCellEditors(editors); - } - - /** - * Sets the cell modifier of this table viewer. - * - * @param modifier - * the cell modifier - */ - public void setCellModifier(ICellModifier modifier) { - fTableEditorImpl.setCellModifier(modifier); - } - - protected TableEditorImpl createTableEditorImpl() { - return new TableEditorImpl(this) { - @Override + } + + /** + * Sets the cell editors of this table viewer. + * + * @param editors + * the list of cell editors + */ + public void setCellEditors(CellEditor[] editors) { + fTableEditorImpl.setCellEditors(editors); + } + + /** + * Sets the cell modifier of this table viewer. + * + * @param modifier + * the cell modifier + */ + public void setCellModifier(ICellModifier modifier) { + fTableEditorImpl.setCellModifier(modifier); + } + + protected TableEditorImpl createTableEditorImpl() { + return new TableEditorImpl(this) { + @Override Rectangle getBounds(Item item, int columnNumber) { - return ((TableItem) item).getBounds(columnNumber); - } + return ((TableItem) item).getBounds(columnNumber); + } - @Override + @Override int getColumnCount() { - return getTable().getColumnCount(); - } + return getTable().getColumnCount(); + } - @Override + @Override Item[] getSelection() { - return getTable().getSelection(); - } + return getTable().getSelection(); + } - @Override + @Override void setEditor(Control w, Item item, int columnNumber) { - fTableEditor.setEditor(w, (TableItem) item, columnNumber); - } + fTableEditor.setEditor(w, (TableItem) item, columnNumber); + } - @Override + @Override void setSelection(StructuredSelection selection, boolean b) { - AsynchronousTableViewer.this.setSelection(selection, b); - } + AsynchronousTableViewer.this.setSelection(selection, b); + } - @Override + @Override void showSelection() { - getTable().showSelection(); - } + getTable().showSelection(); + } - @Override + @Override void setLayoutData(CellEditor.LayoutData layoutData) { - fTableEditor.grabHorizontal = layoutData.grabHorizontal; - fTableEditor.horizontalAlignment = layoutData.horizontalAlignment; - fTableEditor.minimumWidth = layoutData.minimumWidth; - } + fTableEditor.grabHorizontal = layoutData.grabHorizontal; + fTableEditor.horizontalAlignment = layoutData.horizontalAlignment; + fTableEditor.minimumWidth = layoutData.minimumWidth; + } - @Override + @Override void handleDoubleClickEvent() { - Viewer viewer = getViewer(); - fireDoubleClick(new DoubleClickEvent(viewer, viewer.getSelection())); - fireOpen(new OpenEvent(viewer, viewer.getSelection())); - } - }; - } - - @Override + Viewer viewer = getViewer(); + fireDoubleClick(new DoubleClickEvent(viewer, viewer.getSelection())); + fireOpen(new OpenEvent(viewer, viewer.getSelection())); + } + }; + } + + @Override protected ISelection newSelectionFromWidget() { - Control control = getControl(); - if (control == null || control.isDisposed()) { - return StructuredSelection.EMPTY; - } + Control control = getControl(); + if (control == null || control.isDisposed()) { + return StructuredSelection.EMPTY; + } List<?> list = getSelectionFromWidget(); - return new StructuredSelection(list); - } - - public CellEditor[] getCellEditors() { - return fTableEditorImpl.getCellEditors(); - } - - public ICellModifier getCellModifier() { - return fTableEditorImpl.getCellModifier(); - } - - public boolean isCellEditorActive() { - return fTableEditorImpl.isCellEditorActive(); - } - - /** - * This is not asynchronous. This method must be called in the UI Thread. - */ - public void cancelEditing() { - fTableEditorImpl.cancelEditing(); - } - - /** - * This is not asynchronous. This method must be called in the UI Thread. - * - * @param element - * The element to edit. Each element maps to a row in the Table. - * @param column - * The column to edit - */ - public void editElement(Object element, int column) { - fTableEditorImpl.editElement(element, column); - } - - protected int indexForElement(Object element) { + return new StructuredSelection(list); + } + + public CellEditor[] getCellEditors() { + return fTableEditorImpl.getCellEditors(); + } + + public ICellModifier getCellModifier() { + return fTableEditorImpl.getCellModifier(); + } + + public boolean isCellEditorActive() { + return fTableEditorImpl.isCellEditorActive(); + } + + /** + * This is not asynchronous. This method must be called in the UI Thread. + */ + public void cancelEditing() { + fTableEditorImpl.cancelEditing(); + } + + /** + * This is not asynchronous. This method must be called in the UI Thread. + * + * @param element + * The element to edit. Each element maps to a row in the Table. + * @param column + * The column to edit + */ + public void editElement(Object element, int column) { + fTableEditorImpl.editElement(element, column); + } + + protected int indexForElement(Object element) { ViewerComparator comparator = getComparator(); - if (comparator == null) { + if (comparator == null) { return fTable.getItemCount(); } - int count = fTable.getItemCount(); - int min = 0, max = count - 1; - while (min <= max) { - int mid = (min + max) / 2; - Object data = fTable.getItem(mid).getData(); - int compare = comparator.compare(this, data, element); - if (compare == 0) { - // find first item > element - while (compare == 0) { - ++mid; - if (mid >= count) { - break; - } - data = fTable.getItem(mid).getData(); - compare = comparator.compare(this, data, element); - } - return mid; - } - if (compare < 0) { + int count = fTable.getItemCount(); + int min = 0, max = count - 1; + while (min <= max) { + int mid = (min + max) / 2; + Object data = fTable.getItem(mid).getData(); + int compare = comparator.compare(this, data, element); + if (compare == 0) { + // find first item > element + while (compare == 0) { + ++mid; + if (mid >= count) { + break; + } + data = fTable.getItem(mid).getData(); + compare = comparator.compare(this, data, element); + } + return mid; + } + if (compare < 0) { min = mid + 1; } else { max = mid - 1; } - } - return min; - } + } + return min; + } - public void add(Object element) { - if (element != null) { + public void add(Object element) { + if (element != null) { add(new Object[] { element }); } - } + } - public void add(Object[] elements) { - if (elements == null || elements.length == 0) + public void add(Object[] elements) { + if (elements == null || elements.length == 0) { return; // done } - ((AsynchronousTableModel)getModel()).add(elements); - } + ((AsynchronousTableModel)getModel()).add(elements); + } - public void remove(Object element) { - if (element != null) { + public void remove(Object element) { + if (element != null) { remove(new Object[] { element }); } - } + } - public void remove(final Object[] elements) { - if (elements == null || elements.length == 0) + public void remove(final Object[] elements) { + if (elements == null || elements.length == 0) { return; // done } - ((AsynchronousTableModel)getModel()).remove(elements); - } + ((AsynchronousTableModel)getModel()).remove(elements); + } - public void insert(Object element, int position) { - if (element != null) { + public void insert(Object element, int position) { + if (element != null) { insert(new Object[] { element }, position); } - } + } - public void insert(Object[] elements, int position) { - if (elements == null || elements.length == 0) { + public void insert(Object[] elements, int position) { + if (elements == null || elements.length == 0) { return; } - ((AsynchronousTableModel)getModel()).insert(elements, position); - } + ((AsynchronousTableModel)getModel()).insert(elements, position); + } - public void replace(Object element, Object replacement) { - if (element == null || replacement == null) + public void replace(Object element, Object replacement) { + if (element == null || replacement == null) { throw new IllegalArgumentException("unexpected null parameter"); //$NON-NLS-1$ } - ((AsynchronousTableModel)getModel()).replace(element, replacement); - } + ((AsynchronousTableModel)getModel()).replace(element, replacement); + } @Override protected AsynchronousModel createModel() { return new AsynchronousTableModel(this); } - @Override + @Override protected void setItemCount(Widget parent, int itemCount) { fTable.setItemCount(itemCount); } protected int getVisibleItemCount(int top) { - int itemCount = fTable.getItemCount(); - return Math.min((fTable.getBounds().height / fTable.getItemHeight()) + 2, itemCount - top); - } + int itemCount = fTable.getItemCount(); + return Math.min((fTable.getBounds().height / fTable.getItemHeight()) + 2, itemCount - top); + } @Override public AbstractUpdatePolicy createUpdatePolicy() { diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/AsynchronousViewer.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/AsynchronousViewer.java index 55659efab..54511edf7 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/AsynchronousViewer.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/AsynchronousViewer.java @@ -237,7 +237,7 @@ public abstract class AsynchronousViewer extends StructuredViewer implements Lis } if (fUpdatePolicy == null) { fUpdatePolicy = createUpdatePolicy(); - fUpdatePolicy.init(this); + fUpdatePolicy.init(this); } if (fModel != null) { fModel.dispose(); @@ -251,7 +251,7 @@ public abstract class AsynchronousViewer extends StructuredViewer implements Lis unmapAllElements(); getControl().setData(null); } - refresh(); + refresh(); } /** @@ -269,14 +269,14 @@ public abstract class AsynchronousViewer extends StructuredViewer implements Lis public abstract AbstractUpdatePolicy createUpdatePolicy(); Image[] getImages(ImageDescriptor[] descriptors) { - if (descriptors == null || descriptors.length == 0) { - String[] columns = getPresentationContext().getColumns(); - if (columns == null) { - return new Image[1]; - } else { - return new Image[columns.length]; - } - } + if (descriptors == null || descriptors.length == 0) { + String[] columns = getPresentationContext().getColumns(); + if (columns == null) { + return new Image[1]; + } else { + return new Image[columns.length]; + } + } Image[] images = new Image[descriptors.length]; for (int i = 0; i < images.length; i++) { images[i] = getImage(descriptors[i]); @@ -306,12 +306,12 @@ public abstract class AsynchronousViewer extends StructuredViewer implements Lis protected Font[] getFonts(FontData[] fontDatas) { if (fontDatas == null || fontDatas.length == 0) { - String[] columns = getPresentationContext().getColumns(); - if (columns == null) { - return new Font[1]; - } else { - return new Font[columns.length]; - } + String[] columns = getPresentationContext().getColumns(); + if (columns == null) { + return new Font[1]; + } else { + return new Font[columns.length]; + } } Font[] fonts = new Font[fontDatas.length]; @@ -341,14 +341,14 @@ public abstract class AsynchronousViewer extends StructuredViewer implements Lis } protected Color[] getColors(RGB[] rgb) { - if (rgb == null || rgb.length == 0) { - String[] columns = getPresentationContext().getColumns(); - if (columns == null) { - return new Color[1]; - } else { - return new Color[columns.length]; - } - } + if (rgb == null || rgb.length == 0) { + String[] columns = getPresentationContext().getColumns(); + if (columns == null) { + return new Color[1]; + } else { + return new Color[columns.length]; + } + } Color[] colors = new Color[rgb.length]; for (int i = 0; i < colors.length; i++) { colors[i] = getColor(rgb[i]); @@ -399,16 +399,16 @@ public abstract class AsynchronousViewer extends StructuredViewer implements Lis return null; } - @Override + @Override protected Widget doFindInputItem(Object element) { - if (element instanceof ModelNode) { + if (element instanceof ModelNode) { ModelNode node = (ModelNode) element; if (node.getElement().equals(getInput())) { return getControl(); } } - return null; - } + return null; + } @Override protected void doUpdateItem(Widget item, Object element, boolean fullMap) { @@ -693,19 +693,19 @@ public abstract class AsynchronousViewer extends StructuredViewer implements Lis @Override public IStatus runInUIThread(IProgressMonitor monitor) { synchronized (AsynchronousViewer.this) { - if (!getControl().isDisposed()) { - if (fPendingSelection == null || fPendingSelection.isEmpty()) { - ISelection tempSelection = fCurrentSelection; - if (tempSelection == null) { - tempSelection = new StructuredSelection(); - } - if (!tempSelection.equals(newSelectionFromWidget())) { - restoreSelection(tempSelection); - } - } - } + if (!getControl().isDisposed()) { + if (fPendingSelection == null || fPendingSelection.isEmpty()) { + ISelection tempSelection = fCurrentSelection; + if (tempSelection == null) { + tempSelection = new StructuredSelection(); + } + if (!tempSelection.equals(newSelectionFromWidget())) { + restoreSelection(tempSelection); + } + } + } } - return Status.OK_STATUS; + return Status.OK_STATUS; } }; @@ -843,7 +843,7 @@ public abstract class AsynchronousViewer extends StructuredViewer implements Lis * @return if there are any more pending updates in the viewer */ public synchronized boolean hasPendingUpdates() { - return getModel().hasPendingUpdates(); + return getModel().hasPendingUpdates(); } /** @@ -860,22 +860,22 @@ public abstract class AsynchronousViewer extends StructuredViewer implements Lis * * @param item the widget */ - protected abstract void clear(Widget item); - - /** - * Clears the children of the widget. - * - * @param item the widget to clear children from - */ - protected abstract void clearChildren(Widget item); - - /** - * Clears the child at the given index. - * - * @param parent the parent widget - * @param childIndex the index of the child widget to clear - */ - protected abstract void clearChild(Widget parent, int childIndex); + protected abstract void clear(Widget item); + + /** + * Clears the children of the widget. + * + * @param item the widget to clear children from + */ + protected abstract void clearChildren(Widget item); + + /** + * Clears the child at the given index. + * + * @param parent the parent widget + * @param childIndex the index of the child widget to clear + */ + protected abstract void clearChild(Widget parent, int childIndex); /** * Returns the child widget at the given index for the given parent or @@ -895,12 +895,12 @@ public abstract class AsynchronousViewer extends StructuredViewer implements Lis */ protected abstract void setItemCount(Widget parent, int itemCount); - /** - * Attempt pending updates. Subclasses may override but should call super. - */ - protected void attemptPendingUpdates() { - attemptSelection(false); - } + /** + * Attempt pending updates. Subclasses may override but should call super. + */ + protected void attemptPendingUpdates() { + attemptSelection(false); + } /** * Notification a node's children have changed. @@ -975,33 +975,33 @@ public abstract class AsynchronousViewer extends StructuredViewer implements Lis } } - /** - * Returns the node corresponding to the given widget or <code>null</code> - * @param widget widget for which a node is requested - * @return node or <code>null</code> - */ - protected ModelNode findNode(Widget widget) { - ModelNode[] nodes = getModel().getNodes(widget.getData()); - if (nodes != null) { - for (int i = 0; i < nodes.length; i++) { + /** + * Returns the node corresponding to the given widget or <code>null</code> + * @param widget widget for which a node is requested + * @return node or <code>null</code> + */ + protected ModelNode findNode(Widget widget) { + ModelNode[] nodes = getModel().getNodes(widget.getData()); + if (nodes != null) { + for (int i = 0; i < nodes.length; i++) { ModelNode node = nodes[i]; Widget item = findItem(node); if (widget == item) { return node; } } - } - return null; - } - - /** - * Returns the item for the node or <code>null</code> - * @param node the model node - * @return the widget or <code>null</code> - */ - protected Widget findItem(ModelNode node) { - return findItem((Object)node); - } + } + return null; + } + + /** + * Returns the item for the node or <code>null</code> + * @param node the model node + * @return the widget or <code>null</code> + */ + protected Widget findItem(ModelNode node) { + return findItem((Object)node); + } /* * A virtual item has been exposed in the control, map its data. @@ -1009,7 +1009,7 @@ public abstract class AsynchronousViewer extends StructuredViewer implements Lis @Override public void handleEvent(final Event event) { update((Item)event.item, event.index); - } + } /** * Update the given item. @@ -1035,10 +1035,10 @@ public abstract class AsynchronousViewer extends StructuredViewer implements Lis ModelNode parentNode = nodes[i]; Widget parentWidget = findItem(parentNode); if (parentWidget == parentItem) { - ModelNode[] childrenNodes = parentNode.getChildrenNodes(); - if (childrenNodes != null && index < childrenNodes.length) { - node = childrenNodes[index]; - } + ModelNode[] childrenNodes = parentNode.getChildrenNodes(); + if (childrenNodes != null && index < childrenNodes.length) { + node = childrenNodes[index]; + } } } } @@ -1089,11 +1089,11 @@ public abstract class AsynchronousViewer extends StructuredViewer implements Lis // map the node to the element and refresh it if (node != null) { mapElement(node, item); - item.setData(node.getElement()); - if (DebugUIPlugin.DEBUG_VIEWER) { + item.setData(node.getElement()); + if (DebugUIPlugin.DEBUG_VIEWER) { DebugUIPlugin.trace("\titem mapped: " + node); //$NON-NLS-1$ - } - internalRefresh(node); + } + internalRefresh(node); } else { if (DebugUIPlugin.DEBUG_VIEWER) { DebugUIPlugin.trace("\tFAILED - unable to find corresponding node"); //$NON-NLS-1$ diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/ChildrenRequestMonitor.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/ChildrenRequestMonitor.java index 6405632f6..b47f2125e 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/ChildrenRequestMonitor.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/ChildrenRequestMonitor.java @@ -30,63 +30,63 @@ import org.eclipse.debug.internal.ui.viewers.provisional.IChildrenRequestMonitor */ class ChildrenRequestMonitor extends AsynchronousRequestMonitor implements IChildrenRequestMonitor { - private boolean fFirstUpdate = true; + private boolean fFirstUpdate = true; /** * Collection of children retrieved */ private List<Object> fChildren = new ArrayList<>(); - /** - * Constucts a monitor to retrieve and update the children of the given - * node. - * - * @param parent parent to retrieve children for - * @param model model being updated - */ - ChildrenRequestMonitor(ModelNode parent, AsynchronousModel model) { - super(parent, model); - } + /** + * Constucts a monitor to retrieve and update the children of the given + * node. + * + * @param parent parent to retrieve children for + * @param model model being updated + */ + ChildrenRequestMonitor(ModelNode parent, AsynchronousModel model) { + super(parent, model); + } - @Override + @Override public void addChild(Object child) { - synchronized (fChildren) { - fChildren.add(child); - } + synchronized (fChildren) { + fChildren.add(child); + } - scheduleViewerUpdate(250); - } + scheduleViewerUpdate(250); + } - @Override + @Override public void addChildren(Object[] children) { - synchronized (fChildren) { - for (int i = 0; i < children.length; i++) { - fChildren.add(children[i]); - } - } + synchronized (fChildren) { + for (int i = 0; i < children.length; i++) { + fChildren.add(children[i]); + } + } - scheduleViewerUpdate(0); - } + scheduleViewerUpdate(0); + } - @Override + @Override protected boolean contains(AsynchronousRequestMonitor update) { - return (update instanceof ChildrenRequestMonitor) && contains(update.getNode()); - } + return (update instanceof ChildrenRequestMonitor) && contains(update.getNode()); + } - @Override + @Override protected void performUpdate() { - synchronized (fChildren) { - if (fFirstUpdate) { - getModel().setChildren(getNode(), fChildren); - fFirstUpdate = false; - } else { + synchronized (fChildren) { + if (fFirstUpdate) { + getModel().setChildren(getNode(), fChildren); + fFirstUpdate = false; + } else { for (Iterator<Object> iter = fChildren.iterator(); iter.hasNext();) { - Object child = iter.next(); - getModel().add(getNode(), child); - } - } - fChildren.clear(); - } - } + Object child = iter.next(); + getModel().add(getNode(), child); + } + } + fChildren.clear(); + } + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/LabelRequestMonitor.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/LabelRequestMonitor.java index a80c019a5..c079d5748 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/LabelRequestMonitor.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/LabelRequestMonitor.java @@ -68,10 +68,10 @@ class LabelRequestMonitor extends AsynchronousRequestMonitor implements ILabelRe AsynchronousViewer viewer = getModel().getViewer(); Widget widget = viewer.findItem(getNode()); if (widget != null && !widget.isDisposed()) { - viewer.setLabels(widget, fLabels, fImageDescriptors); - viewer.setColors(widget, fForegrounds, fBackgrounds); - viewer.setFonts(widget, fFontDatas); - } + viewer.setLabels(widget, fLabels, fImageDescriptors); + viewer.setColors(widget, fForegrounds, fBackgrounds); + viewer.setFonts(widget, fFontDatas); + } } @Override diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/ModelNode.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/ModelNode.java index 4bca52a57..5888a294b 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/ModelNode.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/ModelNode.java @@ -40,9 +40,9 @@ public class ModelNode { return fElement; } - public synchronized void remap(Object element) { - fElement = element; - } + public synchronized void remap(Object element) { + fElement = element; + } public ModelNode getParentNode() { return fParent; @@ -62,12 +62,12 @@ public class ModelNode { public synchronized void dispose() { fDisposed = true; - ModelNode[] childrenNodes = getChildrenNodes(); - if (childrenNodes != null) { - for (int i = 0; i < childrenNodes.length; i++) { - childrenNodes[i].dispose(); - } - } + ModelNode[] childrenNodes = getChildrenNodes(); + if (childrenNodes != null) { + for (int i = 0; i < childrenNodes.length; i++) { + childrenNodes[i].dispose(); + } + } } /** @@ -121,27 +121,27 @@ public class ModelNode { } } - /** - * Removes the given child from this node. - * - * @param child - */ - public synchronized void removeChild(ModelNode child) { - if (fChildren != null) { - for (int i = 0; i < fChildren.length; i++) { - ModelNode kid = fChildren[i]; - if (child == kid) { - ModelNode[] newNodes= new ModelNode[fChildren.length - 1]; - System.arraycopy(fChildren, 0, newNodes, 0, i); - if (i < newNodes.length) { - System.arraycopy(fChildren, i + 1, newNodes, i, newNodes.length - i); - } - fChildren = newNodes; - return; - } - } - } - } + /** + * Removes the given child from this node. + * + * @param child + */ + public synchronized void removeChild(ModelNode child) { + if (fChildren != null) { + for (int i = 0; i < fChildren.length; i++) { + ModelNode kid = fChildren[i]; + if (child == kid) { + ModelNode[] newNodes= new ModelNode[fChildren.length - 1]; + System.arraycopy(fChildren, 0, newNodes, 0, i); + if (i < newNodes.length) { + System.arraycopy(fChildren, i + 1, newNodes, i, newNodes.length - i); + } + fChildren = newNodes; + return; + } + } + } + } /** * Sets the children for this node @@ -164,50 +164,50 @@ public class ModelNode { */ public synchronized int getChildCount() { if (fChildren == null) { - if (isContainer()) { - return 1; - } + if (isContainer()) { + return 1; + } return 0; } return fChildren.length; } - /** - * Returns the index of the given child in this parent, or -1 - * - * @param child - */ - public synchronized int getChildIndex(ModelNode child) { - if (fChildren != null) { - for (int i = 0; i < fChildren.length; i++) { - if (child == fChildren[i]) { - return i; - } - } - } - return -1; - } - - /** - * Sets whether this node has children. - * - * @param container - */ - public synchronized void setIsContainer(boolean container) { - fIsContainer = container; - } - - @Override + /** + * Returns the index of the given child in this parent, or -1 + * + * @param child + */ + public synchronized int getChildIndex(ModelNode child) { + if (fChildren != null) { + for (int i = 0; i < fChildren.length; i++) { + if (child == fChildren[i]) { + return i; + } + } + } + return -1; + } + + /** + * Sets whether this node has children. + * + * @param container + */ + public synchronized void setIsContainer(boolean container) { + fIsContainer = container; + } + + @Override public String toString() { - StringBuilder buf = new StringBuilder(); - if (isDisposed()) { - buf.append("[DISPOSED] "); //$NON-NLS-1$ - } - if (isContainer()) { - buf.append("[+] "); //$NON-NLS-1$ - } - buf.append(getElement()); - return buf.toString(); - } + StringBuilder buf = new StringBuilder(); + if (isDisposed()) { + buf.append("[DISPOSED] "); //$NON-NLS-1$ + } + if (isContainer()) { + buf.append("[+] "); //$NON-NLS-1$ + } + buf.append(getElement()); + return buf.toString(); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/PartPresentationContext.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/PartPresentationContext.java index 2c350af9b..1e2f148f2 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/PartPresentationContext.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/PartPresentationContext.java @@ -36,7 +36,7 @@ public class PartPresentationContext extends PresentationContext { @Override public IWorkbenchPart getPart() { - return super.getPart(); + return super.getPart(); } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/TableUpdatePolicy.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/TableUpdatePolicy.java index 7c8ff41de..83c471574 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/TableUpdatePolicy.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/TableUpdatePolicy.java @@ -25,88 +25,88 @@ import org.eclipse.jface.viewers.StructuredSelection; */ public class TableUpdatePolicy extends org.eclipse.debug.internal.ui.viewers.AbstractUpdatePolicy implements IModelChangedListener { - @Override + @Override public void modelChanged(IModelDelta delta, IModelProxy proxy) { - updateNodes(new IModelDelta[] {delta}); - } + updateNodes(new IModelDelta[] {delta}); + } - private void handleState(IModelDelta node) { - AsynchronousViewer viewer = getViewer(); - if (viewer != null) { - Object element = node.getElement(); + private void handleState(IModelDelta node) { + AsynchronousViewer viewer = getViewer(); + if (viewer != null) { + Object element = node.getElement(); viewer.update(element); - updateSelection(element, node.getFlags()); - } - } - private void handleContent(IModelDelta node) { - AsynchronousViewer viewer = getViewer(); - if (viewer != null) { - Object element = node.getElement(); + updateSelection(element, node.getFlags()); + } + } + private void handleContent(IModelDelta node) { + AsynchronousViewer viewer = getViewer(); + if (viewer != null) { + Object element = node.getElement(); viewer.refresh(element); - updateSelection(element, node.getFlags()); - } - } + updateSelection(element, node.getFlags()); + } + } - private void updateSelection(Object element, int flags) { - AsynchronousViewer viewer = getViewer(); - if (viewer != null) { - if ((flags & IModelDelta.SELECT) != 0) { - getViewer().setSelection(new StructuredSelection(element)); - } - } - } + private void updateSelection(Object element, int flags) { + AsynchronousViewer viewer = getViewer(); + if (viewer != null) { + if ((flags & IModelDelta.SELECT) != 0) { + getViewer().setSelection(new StructuredSelection(element)); + } + } + } - protected void updateNodes(IModelDelta[] nodes) { - for (int i = 0; i < nodes.length; i++) { - IModelDelta node = nodes[i]; - int flags = node.getFlags(); + protected void updateNodes(IModelDelta[] nodes) { + for (int i = 0; i < nodes.length; i++) { + IModelDelta node = nodes[i]; + int flags = node.getFlags(); - if ((flags & IModelDelta.STATE) != 0) { - handleState(node); - } - if ((flags & IModelDelta.CONTENT) != 0) { - handleContent(node); - } - if ((flags & IModelDelta.ADDED) != 0) { - handleAdd(node); - } - if ((flags & IModelDelta.REMOVED) != 0) { - handleRemove(node); - } - if ((flags & IModelDelta.REPLACED) != 0) { - handleReplace(node); - } - if ((flags & IModelDelta.INSERTED) != 0) { - handleInsert(node); - } + if ((flags & IModelDelta.STATE) != 0) { + handleState(node); + } + if ((flags & IModelDelta.CONTENT) != 0) { + handleContent(node); + } + if ((flags & IModelDelta.ADDED) != 0) { + handleAdd(node); + } + if ((flags & IModelDelta.REMOVED) != 0) { + handleRemove(node); + } + if ((flags & IModelDelta.REPLACED) != 0) { + handleReplace(node); + } + if ((flags & IModelDelta.INSERTED) != 0) { + handleInsert(node); + } - IModelDelta[] childNodes = node.getChildDeltas(); - updateNodes(childNodes); - } - } + IModelDelta[] childNodes = node.getChildDeltas(); + updateNodes(childNodes); + } + } - private void handleInsert(IModelDelta node) { - AsynchronousTableViewer viewer = (AsynchronousTableViewer) getViewer(); - if (viewer != null) { - viewer.insert(node.getElement(), node.getIndex()); - updateSelection(node.getElement(), node.getFlags()); - } - } + private void handleInsert(IModelDelta node) { + AsynchronousTableViewer viewer = (AsynchronousTableViewer) getViewer(); + if (viewer != null) { + viewer.insert(node.getElement(), node.getIndex()); + updateSelection(node.getElement(), node.getFlags()); + } + } - private void handleReplace(IModelDelta node) { - AsynchronousTableViewer viewer = (AsynchronousTableViewer) getViewer(); - if (viewer != null) { - viewer.replace(node.getElement(), node.getReplacementElement()); - updateSelection(node.getReplacementElement(), node.getFlags()); - } - } + private void handleReplace(IModelDelta node) { + AsynchronousTableViewer viewer = (AsynchronousTableViewer) getViewer(); + if (viewer != null) { + viewer.replace(node.getElement(), node.getReplacementElement()); + updateSelection(node.getReplacementElement(), node.getFlags()); + } + } - protected void handleAdd(IModelDelta node) { - ((AsynchronousTableViewer) getViewer()).add(node.getElement()); - updateSelection(node.getElement(), node.getFlags()); - } + protected void handleAdd(IModelDelta node) { + ((AsynchronousTableViewer) getViewer()).add(node.getElement()); + updateSelection(node.getElement(), node.getFlags()); + } - protected void handleRemove(IModelDelta node) { - ((AsynchronousTableViewer) getViewer()).remove(node.getElement()); - } + protected void handleRemove(IModelDelta node) { + ((AsynchronousTableViewer) getViewer()).remove(node.getElement()); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/breadcrumb/AbstractBreadcrumb.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/breadcrumb/AbstractBreadcrumb.java index 07a0a3b7c..0a0641f9b 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/breadcrumb/AbstractBreadcrumb.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/breadcrumb/AbstractBreadcrumb.java @@ -93,27 +93,27 @@ public abstract class AbstractBreadcrumb { */ protected abstract void deactivateBreadcrumb(); - /** - * Returns the selection provider for this breadcrumb. - * - * @return the selection provider for this breadcrumb - */ + /** + * Returns the selection provider for this breadcrumb. + * + * @return the selection provider for this breadcrumb + */ public ISelectionProvider getSelectionProvider() { return fBreadcrumbViewer; } - /** - * Set the input of the breadcrumb to the given element - * - * @param element the input element can be <code>null</code> - */ + /** + * Set the input of the breadcrumb to the given element + * + * @param element the input element can be <code>null</code> + */ public void setInput(Object element) { if (element == null || fBreadcrumbViewer == null || fBreadcrumbViewer.getControl().isDisposed()) return; Object input= fBreadcrumbViewer.getInput(); if (input == element || element.equals(input)) { - refresh(); + refresh(); return; } @@ -121,38 +121,38 @@ public abstract class AbstractBreadcrumb { } protected void refresh() { - if (!fBreadcrumbViewer.getControl().isDisposed()) { - fBreadcrumbViewer.refresh(); - } + if (!fBreadcrumbViewer.getControl().isDisposed()) { + fBreadcrumbViewer.refresh(); + } } - /** - * Activates the breadcrumb. This sets the keyboard focus - * inside this breadcrumb and retargets the editor - * actions. - */ + /** + * Activates the breadcrumb. This sets the keyboard focus + * inside this breadcrumb and retargets the editor + * actions. + */ public void activate() { if (fBreadcrumbViewer.getSelection().isEmpty()) fBreadcrumbViewer.setSelection(new StructuredSelection(fBreadcrumbViewer.getInput())); fBreadcrumbViewer.setFocus(); } - /** - * A breadcrumb is active if it either has the focus or another workbench part has the focus and - * the breadcrumb had the focus before the other workbench part was made active. - * - * @return <code>true</code> if this breadcrumb is active - */ + /** + * A breadcrumb is active if it either has the focus or another workbench part has the focus and + * the breadcrumb had the focus before the other workbench part was made active. + * + * @return <code>true</code> if this breadcrumb is active + */ public boolean isActive() { return true; } - /** - * Create breadcrumb content. - * - * @param parent the parent of the content - * @return the control containing the created content - */ + /** + * Create breadcrumb content. + * + * @param parent the parent of the content + * @return the control containing the created content + */ public Control createContent(Composite parent) { Assert.isTrue(fComposite == null, "Content must only be created once."); //$NON-NLS-1$ @@ -172,7 +172,7 @@ public abstract class AbstractBreadcrumb { fDisplayFocusListener= new Listener() { @Override public void handleEvent(Event event) { - if (fComposite.isDisposed()) return; + if (fComposite.isDisposed()) return; if (isBreadcrumbEvent(event)) { if (fHasFocus) @@ -215,9 +215,9 @@ public abstract class AbstractBreadcrumb { return fComposite; } - /** - * Dispose all resources hold by this breadcrumb. - */ + /** + * Dispose all resources hold by this breadcrumb. + */ public void dispose() { if (fDisplayFocusListener != null) { Display.getDefault().removeFilter(SWT.FocusIn, fDisplayFocusListener); @@ -233,7 +233,7 @@ public abstract class AbstractBreadcrumb { */ private void doOpen(ISelection selection) { if (open(selection)) { - fBreadcrumbViewer.setInput(getCurrentInput()); + fBreadcrumbViewer.setInput(getCurrentInput()); } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/breadcrumb/BreadcrumbItem.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/breadcrumb/BreadcrumbItem.java index 3fb9b0d06..77e161f11 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/breadcrumb/BreadcrumbItem.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/breadcrumb/BreadcrumbItem.java @@ -40,15 +40,15 @@ import org.eclipse.swt.widgets.Shell; */ class BreadcrumbItem extends Item { - private TreePath fPath; + private TreePath fPath; private final BreadcrumbViewer fParent; private Composite fContainer; - private BreadcrumbItemDropDown fExpandBlock; - private BreadcrumbItemDetails fDetailsBlock; + private BreadcrumbItemDropDown fExpandBlock; + private BreadcrumbItemDetails fDetailsBlock; - private boolean fIsLast; + private boolean fIsLast; /** * A new breadcrumb item which is shown inside the given viewer. @@ -70,7 +70,7 @@ class BreadcrumbItem extends Item { layout.horizontalSpacing= 0; fContainer.setLayout(layout); - fExpandBlock= new BreadcrumbItemDropDown(this, fContainer); + fExpandBlock= new BreadcrumbItemDropDown(this, fContainer); fDetailsBlock= new BreadcrumbItemDetails(this, fContainer); fContainer.setData("org.eclipse.e4.ui.css.id", "DebugBreadcrumbItemComposite"); //$NON-NLS-1$ //$NON-NLS-2$ } @@ -94,11 +94,11 @@ class BreadcrumbItem extends Item { } public TreePath getPath() { - return fPath; + return fPath; } public void setPath(TreePath path) { - fPath = path; + fPath = path; } /** diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/breadcrumb/BreadcrumbItemDetails.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/breadcrumb/BreadcrumbItemDetails.java index 4a3e1b2a4..aa98d175f 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/breadcrumb/BreadcrumbItemDetails.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/breadcrumb/BreadcrumbItemDetails.java @@ -318,7 +318,7 @@ class BreadcrumbItemDetails { } break; case SWT.ARROW_DOWN: - case SWT.ARROW_UP: + case SWT.ARROW_UP: case SWT.KEYPAD_ADD: if (!fSelected) { viewer.selectItem(fParent); @@ -345,12 +345,12 @@ class BreadcrumbItemDetails { } private void openDropDown() { - Shell shell = fParent.getDropDownShell(); - if (shell == null) { - fParent.openDropDownMenu(); - shell = fParent.getDropDownShell(); - } - shell.setFocus(); + Shell shell = fParent.getDropDownShell(); + if (shell == null) { + fParent.openDropDownMenu(); + shell = fParent.getDropDownShell(); + } + shell.setFocus(); } @Override diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/breadcrumb/BreadcrumbItemDropDown.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/breadcrumb/BreadcrumbItemDropDown.java index a31365c9c..08739bb78 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/breadcrumb/BreadcrumbItemDropDown.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/breadcrumb/BreadcrumbItemDropDown.java @@ -138,15 +138,15 @@ class BreadcrumbItemDropDown implements IBreadcrumbDropDownSite { // Workaround for bug 258196: set the minimum size to 500 because on Linux // the size is not adjusted correctly in a virtual tree. - private static final int DROP_DOWN_MIN_WIDTH= 500; - private static final int DROP_DOWN_MAX_WIDTH= 501; + private static final int DROP_DOWN_MIN_WIDTH= 500; + private static final int DROP_DOWN_MAX_WIDTH= 501; - private static final int DROP_DOWN_DEFAULT_MIN_HEIGHT= 100; - private static final int DROP_DOWN_DEFAULT_MAX_HEIGHT= 500; + private static final int DROP_DOWN_DEFAULT_MIN_HEIGHT= 100; + private static final int DROP_DOWN_DEFAULT_MAX_HEIGHT= 500; - private static final String DIALOG_SETTINGS= "BreadcrumbItemDropDown"; //$NON-NLS-1$ - private static final String DIALOG_HEIGHT= "height"; //$NON-NLS-1$ - private static final String DIALOG_WIDTH= "width"; //$NON-NLS-1$ + private static final String DIALOG_SETTINGS= "BreadcrumbItemDropDown"; //$NON-NLS-1$ + private static final String DIALOG_HEIGHT= "height"; //$NON-NLS-1$ + private static final String DIALOG_WIDTH= "width"; //$NON-NLS-1$ private final BreadcrumbItem fParent; private final Composite fParentComposite; @@ -155,9 +155,9 @@ class BreadcrumbItemDropDown implements IBreadcrumbDropDownSite { private boolean fMenuIsShown; private boolean fEnabled; private Shell fShell; - private boolean fIsResizingProgrammatically; - private int fCurrentWidth = -1; - private int fCurrentHeight = -1; + private boolean fIsResizingProgrammatically; + private int fCurrentWidth = -1; + private int fCurrentHeight = -1; public BreadcrumbItemDropDown(BreadcrumbItem parent, Composite composite) { @@ -169,11 +169,11 @@ class BreadcrumbItemDropDown implements IBreadcrumbDropDownSite { fToolBar= new ToolBar(composite, SWT.FLAT); fToolBar.setLayoutData(new GridData(SWT.END, SWT.CENTER, false, false)); fToolBar.getAccessible().addAccessibleListener(new AccessibleAdapter() { - @Override + @Override public void getName(AccessibleEvent e) { - e.result= BreadcrumbMessages.BreadcrumbItemDropDown_showDropDownMenu_action_toolTip; - } - }); + e.result= BreadcrumbMessages.BreadcrumbItemDropDown_showDropDownMenu_action_toolTip; + } + }); ToolBarManager manager= new ToolBarManager(fToolBar); final Action showDropDownMenuAction= new Action(null, SWT.NONE) { @@ -273,23 +273,23 @@ class BreadcrumbItemDropDown implements IBreadcrumbDropDownSite { DebugUIPlugin.trace(" creating new shell"); //$NON-NLS-1$ } - fShell.addControlListener(new ControlAdapter() { - /* - * @see org.eclipse.swt.events.ControlAdapter#controlResized(org.eclipse.swt.events.ControlEvent) - */ - @Override + fShell.addControlListener(new ControlAdapter() { + /* + * @see org.eclipse.swt.events.ControlAdapter#controlResized(org.eclipse.swt.events.ControlEvent) + */ + @Override public void controlResized(ControlEvent e) { - if (fIsResizingProgrammatically) { + if (fIsResizingProgrammatically) { return; } - Point size= fShell.getSize(); - fCurrentWidth = size.x; - fCurrentHeight = size.y; - getDialogSettings().put(DIALOG_WIDTH, size.x); - getDialogSettings().put(DIALOG_HEIGHT, size.y); - } - }); + Point size= fShell.getSize(); + fCurrentWidth = size.x; + fCurrentHeight = size.y; + getDialogSettings().put(DIALOG_WIDTH, size.x); + getDialogSettings().put(DIALOG_HEIGHT, size.y); + } + }); GridLayout layout= new GridLayout(1, false); layout.marginHeight= 0; @@ -303,7 +303,7 @@ class BreadcrumbItemDropDown implements IBreadcrumbDropDownSite { gridLayout.marginWidth= 0; composite.setLayout(gridLayout); - TreePath path= fParent.getPath(); + TreePath path= fParent.getPath(); Control control = fParent.getViewer().createDropDown(composite, this, path); @@ -366,16 +366,16 @@ class BreadcrumbItemDropDown implements IBreadcrumbDropDownSite { final ControlListener controlListener= new ControlListener() { @Override public void controlMoved(ControlEvent e) { - if (!shell.isDisposed()) { - shell.close(); - } + if (!shell.isDisposed()) { + shell.close(); + } } @Override public void controlResized(ControlEvent e) { - if (!shell.isDisposed()) { - shell.close(); - } + if (!shell.isDisposed()) { + shell.close(); + } } }; fToolBar.getShell().addControlListener(controlListener); @@ -427,28 +427,28 @@ class BreadcrumbItemDropDown implements IBreadcrumbDropDownSite { } private IDialogSettings getDialogSettings() { - IDialogSettings javaSettings= DebugUIPlugin.getDefault().getDialogSettings(); - IDialogSettings settings= javaSettings.getSection(DIALOG_SETTINGS); - if (settings == null) { + IDialogSettings javaSettings= DebugUIPlugin.getDefault().getDialogSettings(); + IDialogSettings settings= javaSettings.getSection(DIALOG_SETTINGS); + if (settings == null) { settings= javaSettings.addNewSection(DIALOG_SETTINGS); } - return settings; + return settings; } private int getMaxWidth() { - try { - return getDialogSettings().getInt(DIALOG_WIDTH); - } catch (NumberFormatException e) { - return DROP_DOWN_MAX_WIDTH; - } + try { + return getDialogSettings().getInt(DIALOG_WIDTH); + } catch (NumberFormatException e) { + return DROP_DOWN_MAX_WIDTH; + } } private int getMaxHeight() { - try { - return getDialogSettings().getInt(DIALOG_HEIGHT); - } catch (NumberFormatException e) { - return DROP_DOWN_DEFAULT_MAX_HEIGHT; - } + try { + return getDialogSettings().getInt(DIALOG_HEIGHT); + } catch (NumberFormatException e) { + return DROP_DOWN_DEFAULT_MAX_HEIGHT; + } } /** @@ -496,52 +496,52 @@ class BreadcrumbItemDropDown implements IBreadcrumbDropDownSite { } shell.setLocation(pt); - fIsResizingProgrammatically= true; - try { - shell.setSize(width, height); - fCurrentWidth = width; - fCurrentHeight = height; - } finally { - fIsResizingProgrammatically= false; - } + fIsResizingProgrammatically= true; + try { + shell.setSize(width, height); + fCurrentWidth = width; + fCurrentHeight = height; + } finally { + fIsResizingProgrammatically= false; + } } /** * Set the size of the given shell such that more content can be shown. The shell size does not - * exceed a user-configurable maximum. + * exceed a user-configurable maximum. * * @param shell the shell to resize */ private void resizeShell(final Shell shell) { - int maxHeight= getMaxHeight(); - int maxWidth = getMaxWidth(); + int maxHeight= getMaxHeight(); + int maxWidth = getMaxWidth(); - if (fCurrentHeight >= maxHeight && fCurrentWidth >= maxWidth) { + if (fCurrentHeight >= maxHeight && fCurrentWidth >= maxWidth) { return; } Point preferedSize= shell.computeSize(SWT.DEFAULT, SWT.DEFAULT, true); int newWidth; - if (fCurrentWidth >= DROP_DOWN_MAX_WIDTH) { + if (fCurrentWidth >= DROP_DOWN_MAX_WIDTH) { newWidth= fCurrentWidth; } else { - // Workaround for bug 319612: Do not resize width below the - // DROP_DOWN_MIN_WIDTH. This can happen because the Shell.getSize() - // is incorrectly small on Linux. - newWidth= Math.min(Math.max(Math.max(preferedSize.x, fCurrentWidth), DROP_DOWN_MIN_WIDTH), maxWidth); + // Workaround for bug 319612: Do not resize width below the + // DROP_DOWN_MIN_WIDTH. This can happen because the Shell.getSize() + // is incorrectly small on Linux. + newWidth= Math.min(Math.max(Math.max(preferedSize.x, fCurrentWidth), DROP_DOWN_MIN_WIDTH), maxWidth); } int newHeight; - if (fCurrentHeight >= maxHeight) { + if (fCurrentHeight >= maxHeight) { newHeight= fCurrentHeight; } else { - newHeight= Math.min(Math.max(preferedSize.y, fCurrentHeight), maxHeight); + newHeight= Math.min(Math.max(preferedSize.y, fCurrentHeight), maxHeight); } if (newHeight != fCurrentHeight || newWidth != fCurrentWidth) { shell.setRedraw(false); try { - fIsResizingProgrammatically= true; + fIsResizingProgrammatically= true; shell.setSize(newWidth, newHeight); fCurrentWidth = newWidth; fCurrentHeight = newHeight; @@ -552,13 +552,13 @@ class BreadcrumbItemDropDown implements IBreadcrumbDropDownSite { newLocation = new Point(newLocation.x - (newWidth - fCurrentWidth), newLocation.y); } if (!isTop()) { - newLocation = new Point(newLocation.x, newLocation.y - (newHeight - fCurrentHeight)); + newLocation = new Point(newLocation.x, newLocation.y - (newHeight - fCurrentHeight)); } if (!location.equals(newLocation)) { - shell.setLocation(newLocation.x, newLocation.y); + shell.setLocation(newLocation.x, newLocation.y); } } finally { - fIsResizingProgrammatically= false; + fIsResizingProgrammatically= false; shell.setRedraw(true); } } @@ -573,37 +573,37 @@ class BreadcrumbItemDropDown implements IBreadcrumbDropDownSite { */ private boolean isLeft() { return (fParentComposite.getStyle() & SWT.RIGHT_TO_LEFT) == 0 && - (fParent.getViewer().getStyle() & SWT.RIGHT) == 0; + (fParent.getViewer().getStyle() & SWT.RIGHT) == 0; } - /** - * Tells whether this the breadcrumb is in LTR mode or RTL mode. Or whether the breadcrumb - * is on the right-side status coolbar, which has the same effect on layout. - * - * @return <code>true</code> if the breadcrumb in left-to-right mode, <code>false</code> - * otherwise - */ - private boolean isTop() { - return (fParent.getViewer().getStyle() & SWT.BOTTOM) == 0; - } - - @Override + /** + * Tells whether this the breadcrumb is in LTR mode or RTL mode. Or whether the breadcrumb + * is on the right-side status coolbar, which has the same effect on layout. + * + * @return <code>true</code> if the breadcrumb in left-to-right mode, <code>false</code> + * otherwise + */ + private boolean isTop() { + return (fParent.getViewer().getStyle() & SWT.BOTTOM) == 0; + } + + @Override public void close() { - if (fShell != null && !fShell.isDisposed()) { - fShell.close(); - } - } + if (fShell != null && !fShell.isDisposed()) { + fShell.close(); + } + } - @Override + @Override public void notifySelection(ISelection selection) { - fParent.getViewer().fireMenuSelection(selection); - } + fParent.getViewer().fireMenuSelection(selection); + } - @Override + @Override public void updateSize() { - if (fShell != null && !fShell.isDisposed()) { - resizeShell(fShell); - } - } + if (fShell != null && !fShell.isDisposed()) { + resizeShell(fShell); + } + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/breadcrumb/BreadcrumbViewer.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/breadcrumb/BreadcrumbViewer.java index d0c57d4bd..64d38a7f4 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/breadcrumb/BreadcrumbViewer.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/breadcrumb/BreadcrumbViewer.java @@ -80,15 +80,15 @@ public abstract class BreadcrumbViewer extends StructuredViewer { * <li>SWT.NONE</li> * <li>SWT.VERTICAL</li> * <li>SWT.HORIZONTAL</li> - * <li>SWT.BOTTOM</li> - * <li>SWT.RIGHT</li> + * <li>SWT.BOTTOM</li> + * <li>SWT.RIGHT</li> * </ul> * * @param parent the container for the viewer * @param style the style flag used for this viewer */ public BreadcrumbViewer(Composite parent, int style) { - fStyle = style; + fStyle = style; fBreadcrumbItems = new ArrayList<>(); fMenuListeners= new ListenerList<>(); @@ -119,17 +119,17 @@ public abstract class BreadcrumbViewer extends StructuredViewer { } int getStyle() { - return fStyle; + return fStyle; } - /** - * Configure the given drop down viewer. The given input is used for the viewers input. Clients - * must at least set the label and the content provider for the viewer. - * @param parent the parent composite - * @param site the site to create the drop down for - * @param path the path to show - * @return the drop down control - */ + /** + * Configure the given drop down viewer. The given input is used for the viewers input. Clients + * must at least set the label and the content provider for the viewer. + * @param parent the parent composite + * @param site the site to create the drop down for + * @param path the path to show + * @return the drop down control + */ protected abstract Control createDropDown(Composite parent, IBreadcrumbDropDownSite site, TreePath path); /* @@ -307,39 +307,39 @@ public abstract class BreadcrumbViewer extends StructuredViewer { return false; } - /** - * This implementation of getSelection() returns an instance of - * ITreeSelection. - * @return the current selection - */ - @Override + /** + * This implementation of getSelection() returns an instance of + * ITreeSelection. + * @return the current selection + */ + @Override public ISelection getSelection() { - Control control = getControl(); - if (control == null || control.isDisposed()) { - return TreeSelection.EMPTY; - } - if (fSelectedItem != null) { - TreePath path = getTreePathFromItem(fSelectedItem); - if (path != null) { - return new TreeSelection(new TreePath[] { path }); - } - } - return TreeSelection.EMPTY; - } - - protected TreePath getTreePathFromItem(BreadcrumbItem item) { + Control control = getControl(); + if (control == null || control.isDisposed()) { + return TreeSelection.EMPTY; + } + if (fSelectedItem != null) { + TreePath path = getTreePathFromItem(fSelectedItem); + if (path != null) { + return new TreeSelection(new TreePath[] { path }); + } + } + return TreeSelection.EMPTY; + } + + protected TreePath getTreePathFromItem(BreadcrumbItem item) { List<Object> elements = new ArrayList<>(fBreadcrumbItems.size()); - for (int i = 0; i < fBreadcrumbItems.size(); i++) { - elements.add( fBreadcrumbItems.get(i).getData() ); - if (fBreadcrumbItems.get(i).equals(item)) { - return new TreePath(elements.toArray()); - } - } - return null; - } + for (int i = 0; i < fBreadcrumbItems.size(); i++) { + elements.add( fBreadcrumbItems.get(i).getData() ); + if (fBreadcrumbItems.get(i).equals(item)) { + return new TreePath(elements.toArray()); + } + } + return null; + } /* - * @see org.eclipse.jface.viewers.StructuredViewer#getSelectionFromWidget() + * @see org.eclipse.jface.viewers.StructuredViewer#getSelectionFromWidget() */ @Override protected List getSelectionFromWidget() { @@ -364,7 +364,7 @@ public abstract class BreadcrumbViewer extends StructuredViewer { disableRedraw(); try { - boolean layoutChanged = false; + boolean layoutChanged = false; BreadcrumbItem item= (BreadcrumbItem) doFindItem(element); if (item == null || element != null && element.equals(getInput())) { @@ -373,12 +373,12 @@ public abstract class BreadcrumbViewer extends StructuredViewer { layoutChanged = refreshItem(item1) || layoutChanged; } } else { - layoutChanged = refreshItem(item) || layoutChanged; + layoutChanged = refreshItem(item) || layoutChanged; } if (layoutChanged) { - updateSize(); - fContainer.layout(true, true); + updateSize(); + fContainer.layout(true, true); } } finally { enableRedraw(); @@ -403,7 +403,7 @@ public abstract class BreadcrumbViewer extends StructuredViewer { } if (l == null) { - l = Collections.EMPTY_LIST; + l = Collections.EMPTY_LIST; } // Set the new selection to items. @@ -423,7 +423,7 @@ public abstract class BreadcrumbViewer extends StructuredViewer { // If there is a new selection, and it does not overlap the old selection, // remove the focus marker from the old focus item. if (fSelectedItem != null && focusItem != null) { - focusItem.setFocus(false); + focusItem.setFocus(false); } } @@ -557,46 +557,46 @@ public abstract class BreadcrumbViewer extends StructuredViewer { last.setIsLastItem(false); } - int index = 0; - boolean updateLayout = false; + int index = 0; + boolean updateLayout = false; if (input != null) { - ITreePathContentProvider contentProvider= (ITreePathContentProvider) getContentProvider(); - TreePath path = new TreePath(new Object[0]); - - // Top level elements need to be retrieved using getElements(), rest - // using getChildren(). - Object[] children = contentProvider.getElements(input); - Object element = children != null && children.length != 0 ? children[0] : null; - while (element != null) { - path = path.createChildPath(element); - - // All but last item are hidden if the viewer is in a vertical toolbar. - children = contentProvider.getChildren(path); - if ((getStyle() & SWT.VERTICAL) == 0 || children == null || children.length == 0) { - updateLayout = updateOrCreateItem(index++, path, element) || updateLayout; - } + ITreePathContentProvider contentProvider= (ITreePathContentProvider) getContentProvider(); + TreePath path = new TreePath(new Object[0]); + + // Top level elements need to be retrieved using getElements(), rest + // using getChildren(). + Object[] children = contentProvider.getElements(input); + Object element = children != null && children.length != 0 ? children[0] : null; + while (element != null) { + path = path.createChildPath(element); + + // All but last item are hidden if the viewer is in a vertical toolbar. + children = contentProvider.getChildren(path); + if ((getStyle() & SWT.VERTICAL) == 0 || children == null || children.length == 0) { + updateLayout = updateOrCreateItem(index++, path, element) || updateLayout; + } - if (children != null && children.length != 0) { - element = children[0]; - } else { - break; - } + if (children != null && children.length != 0) { + element = children[0]; + } else { + break; + } - } + } } - BreadcrumbItem last = null; - if (index <= fBreadcrumbItems.size()) { - last = (fBreadcrumbItems.get(index - 1)); - last.setIsLastItem(true); - } + BreadcrumbItem last = null; + if (index <= fBreadcrumbItems.size()) { + last = (fBreadcrumbItems.get(index - 1)); + last.setIsLastItem(true); + } while (index < fBreadcrumbItems.size()) { updateLayout = true; BreadcrumbItem item= fBreadcrumbItems.remove(fBreadcrumbItems.size() - 1); - if (item.hasFocus() && last != null) { - last.setFocus(true); - } + if (item.hasFocus() && last != null) { + last.setFocus(true); + } if (item == fSelectedItem) { selectItem(null); } @@ -617,25 +617,25 @@ public abstract class BreadcrumbViewer extends StructuredViewer { * @return returns whether the item's size and layout needs to be updated. */ private boolean refreshItem(BreadcrumbItem item) { - boolean layoutChanged = false; + boolean layoutChanged = false; - TreePath path = getTreePathFromItem(item); + TreePath path = getTreePathFromItem(item); - ViewerLabel label = new ViewerLabel(item.getText(), item.getImage()); - ((ITreePathLabelProvider)getLabelProvider()).updateLabel(label, path); + ViewerLabel label = new ViewerLabel(item.getText(), item.getImage()); + ((ITreePathLabelProvider)getLabelProvider()).updateLabel(label, path); - if (label.hasNewText()) { - item.setText(label.getText()); - layoutChanged = true; - } - if (label.hasNewImage()) { - item.setImage(label.getImage()); - layoutChanged = true; - } - if (label.hasNewTooltipText()) { - item.setToolTip(label.getTooltipText()); - } - return layoutChanged; + if (label.hasNewText()) { + item.setText(label.getText()); + layoutChanged = true; + } + if (label.hasNewImage()) { + item.setImage(label.getImage()); + layoutChanged = true; + } + if (label.hasNewTooltipText()) { + item.setToolTip(label.getTooltipText()); + } + return layoutChanged; } /** @@ -647,30 +647,30 @@ public abstract class BreadcrumbViewer extends StructuredViewer { * @return whether breadcrumb layout needs to be updated due to this change */ private boolean updateOrCreateItem(int index, TreePath path, Object element) { - BreadcrumbItem item; - if (fBreadcrumbItems.size() > index) { - item = fBreadcrumbItems.get(index); - if (item.getData() != null) { - unmapElement(item.getData()); - } - } else { - item = new BreadcrumbItem(this, fContainer); - fBreadcrumbItems.add(item); - } + BreadcrumbItem item; + if (fBreadcrumbItems.size() > index) { + item = fBreadcrumbItems.get(index); + if (item.getData() != null) { + unmapElement(item.getData()); + } + } else { + item = new BreadcrumbItem(this, fContainer); + fBreadcrumbItems.add(item); + } boolean updateLayout = false; - if (equals(element, item.getData())) { - item.setPath(path); - updateLayout = myDoUpdateItem(item, element, false); - } else { - item.setData(element); - item.setPath(path); - mapElement(element, item); - updateLayout = refreshItem(item); - } - - return updateLayout; + if (equals(element, item.getData())) { + item.setPath(path); + updateLayout = myDoUpdateItem(item, element, false); + } else { + item.setData(element); + item.setPath(path); + mapElement(element, item); + updateLayout = refreshItem(item); + } + + return updateLayout; } /** diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/breadcrumb/IBreadcrumbDropDownSite.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/breadcrumb/IBreadcrumbDropDownSite.java index f316c012d..e86cff955 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/breadcrumb/IBreadcrumbDropDownSite.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/breadcrumb/IBreadcrumbDropDownSite.java @@ -23,21 +23,21 @@ import org.eclipse.jface.viewers.ISelection; */ public interface IBreadcrumbDropDownSite { - /** - * Notifies the breadcrumb that the given selection was made in the drop-down - * viewer. - * @param selection Selection to set to breadcrumb. - */ - void notifySelection(ISelection selection); + /** + * Notifies the breadcrumb that the given selection was made in the drop-down + * viewer. + * @param selection Selection to set to breadcrumb. + */ + void notifySelection(ISelection selection); - /** - * Notifies the breadcrumb that the drop-down viewer should be closed. - */ - void close(); + /** + * Notifies the breadcrumb that the drop-down viewer should be closed. + */ + void close(); - /** - * Notifies the breadcrumb that the drop-down viewer's contents have - * changed and viewer shell should be adjusted for the new size. - */ - void updateSize(); + /** + * Notifies the breadcrumb that the drop-down viewer's contents have + * changed and viewer shell should be adjusted for the new size. + */ + void updateSize(); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/breadcrumb/TreeViewerDropDown.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/breadcrumb/TreeViewerDropDown.java index 311a3e105..3bdec56c0 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/breadcrumb/TreeViewerDropDown.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/breadcrumb/TreeViewerDropDown.java @@ -57,95 +57,95 @@ import org.eclipse.ui.progress.UIJob; */ public abstract class TreeViewerDropDown { - /** - * Delay to control scrolling when the mouse pointer reaches the edge of - * the tree viewer. - */ - private static long MOUSE_MOVE_SCROLL_DELAY = 500; - - /** - * The breadcrumb site in which the viewer is created. - */ - private IBreadcrumbDropDownSite fDropDownSite; - - /** - * The tree viewer. - */ - private TreeViewer fDropDownViewer; - - /** - * Creates the viewer and installs the listeners. - * - * @param composite Parent control of the viewer. - * @param site Breadcrumb site for the viewer. - * @param path Path to the element for which the drop-down is being opened. - * @return The control created for the viewer. - */ - public Control createDropDown(Composite composite, IBreadcrumbDropDownSite site, TreePath path) { - - fDropDownSite = site; - fDropDownViewer= createTreeViewer(composite, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL, path); - - fDropDownViewer.addOpenListener(new IOpenListener() { - @Override + /** + * Delay to control scrolling when the mouse pointer reaches the edge of + * the tree viewer. + */ + private static long MOUSE_MOVE_SCROLL_DELAY = 500; + + /** + * The breadcrumb site in which the viewer is created. + */ + private IBreadcrumbDropDownSite fDropDownSite; + + /** + * The tree viewer. + */ + private TreeViewer fDropDownViewer; + + /** + * Creates the viewer and installs the listeners. + * + * @param composite Parent control of the viewer. + * @param site Breadcrumb site for the viewer. + * @param path Path to the element for which the drop-down is being opened. + * @return The control created for the viewer. + */ + public Control createDropDown(Composite composite, IBreadcrumbDropDownSite site, TreePath path) { + + fDropDownSite = site; + fDropDownViewer= createTreeViewer(composite, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL, path); + + fDropDownViewer.addOpenListener(new IOpenListener() { + @Override public void open(OpenEvent event) { - if (DebugUIPlugin.DEBUG_TREE_VIEWER_DROPDOWN) { - DebugUIPlugin.trace("BreadcrumbItemDropDown.showMenu()$treeViewer>open"); //$NON-NLS-1$ - } - openElement(event.getSelection()); - } - }); + if (DebugUIPlugin.DEBUG_TREE_VIEWER_DROPDOWN) { + DebugUIPlugin.trace("BreadcrumbItemDropDown.showMenu()$treeViewer>open"); //$NON-NLS-1$ + } + openElement(event.getSelection()); + } + }); - final Tree tree = fDropDownViewer.getTree(); + final Tree tree = fDropDownViewer.getTree(); - tree.addMouseListener(new MouseListener() { - @Override + tree.addMouseListener(new MouseListener() { + @Override public void mouseUp(MouseEvent e) { - if (DebugUIPlugin.DEBUG_TREE_VIEWER_DROPDOWN) { - DebugUIPlugin.trace("BreadcrumbItemDropDown.showMenu()$treeViewer>mouseUp"); //$NON-NLS-1$ - } - if (e.button != 1) { + if (DebugUIPlugin.DEBUG_TREE_VIEWER_DROPDOWN) { + DebugUIPlugin.trace("BreadcrumbItemDropDown.showMenu()$treeViewer>mouseUp"); //$NON-NLS-1$ + } + if (e.button != 1) { return; } - if ((OpenStrategy.getOpenMethod() & OpenStrategy.SINGLE_CLICK) != 0) { + if ((OpenStrategy.getOpenMethod() & OpenStrategy.SINGLE_CLICK) != 0) { return; } - TreeItem item= tree.getItem(new Point(e.x, e.y)); - if (item == null) { + TreeItem item= tree.getItem(new Point(e.x, e.y)); + if (item == null) { return; } List<Object> pathElements = new LinkedList<>(); - while(item != null) { - Object data = item.getData(); - if (data == null) { + while(item != null) { + Object data = item.getData(); + if (data == null) { return; } - pathElements.add(0, data); - item = item.getParentItem(); - } + pathElements.add(0, data); + item = item.getParentItem(); + } - openElement(new TreeSelection(new TreePath(pathElements.toArray()))); - } + openElement(new TreeSelection(new TreePath(pathElements.toArray()))); + } - @Override + @Override public void mouseDown(MouseEvent e) { - } + } - @Override + @Override public void mouseDoubleClick(MouseEvent e) { - } - }); + } + }); - tree.addMouseMoveListener(new MouseMoveListener() { - TreeItem fLastItem= null; - long fLastScrollTime = 0; + tree.addMouseMoveListener(new MouseMoveListener() { + TreeItem fLastItem= null; + long fLastScrollTime = 0; - @Override + @Override public void mouseMove(MouseEvent e) { - if (tree.equals(e.getSource())) { + if (tree.equals(e.getSource())) { TreeItem currentItem = tree.getItem(new Point(e.x, e.y)); if (fLastItem == null ^ currentItem == null) { tree.setCursor(currentItem == null ? null : tree.getDisplay() @@ -154,176 +154,176 @@ public abstract class TreeViewerDropDown { if (currentItem != null) { if (!currentItem.equals(fLastItem)) { fLastItem = currentItem; - tree.setSelection(new TreeItem[] { fLastItem }); - } else if (System.currentTimeMillis() > (fLastScrollTime + MOUSE_MOVE_SCROLL_DELAY)) { - if (e.y < tree.getItemHeight() / 4) - { - // Scroll up - if (currentItem.getParentItem() == null) { + tree.setSelection(new TreeItem[] { fLastItem }); + } else if (System.currentTimeMillis() > (fLastScrollTime + MOUSE_MOVE_SCROLL_DELAY)) { + if (e.y < tree.getItemHeight() / 4) + { + // Scroll up + if (currentItem.getParentItem() == null) { int index = tree.indexOf(currentItem); - if (index < 1) { + if (index < 1) { return; } - fLastItem= tree.getItem(index - 1); - tree.setSelection(new TreeItem[] { fLastItem }); - } else { - Point p= tree.toDisplay(e.x, e.y); - Item item= fDropDownViewer.scrollUp(p.x, p.y); - fLastScrollTime = System.currentTimeMillis(); - if (item instanceof TreeItem) { - fLastItem= (TreeItem) item; - tree.setSelection(new TreeItem[] { fLastItem }); - } - } - } else if (e.y > tree.getBounds().height - tree.getItemHeight() / 4) { - // Scroll down - if (currentItem.getParentItem() == null) { + fLastItem= tree.getItem(index - 1); + tree.setSelection(new TreeItem[] { fLastItem }); + } else { + Point p= tree.toDisplay(e.x, e.y); + Item item= fDropDownViewer.scrollUp(p.x, p.y); + fLastScrollTime = System.currentTimeMillis(); + if (item instanceof TreeItem) { + fLastItem= (TreeItem) item; + tree.setSelection(new TreeItem[] { fLastItem }); + } + } + } else if (e.y > tree.getBounds().height - tree.getItemHeight() / 4) { + // Scroll down + if (currentItem.getParentItem() == null) { int index = tree.indexOf(currentItem); - if (index >= tree.getItemCount() - 1) { + if (index >= tree.getItemCount() - 1) { return; } - fLastItem= tree.getItem(index + 1); - tree.setSelection(new TreeItem[] { fLastItem }); - } else { - Point p= tree.toDisplay(e.x, e.y); - Item item= fDropDownViewer.scrollDown(p.x, p.y); - fLastScrollTime = System.currentTimeMillis(); - if (item instanceof TreeItem) { - fLastItem= (TreeItem) item; - tree.setSelection(new TreeItem[] { fLastItem }); - } - } - } - } + fLastItem= tree.getItem(index + 1); + tree.setSelection(new TreeItem[] { fLastItem }); + } else { + Point p= tree.toDisplay(e.x, e.y); + Item item= fDropDownViewer.scrollDown(p.x, p.y); + fLastScrollTime = System.currentTimeMillis(); + if (item instanceof TreeItem) { + fLastItem= (TreeItem) item; + tree.setSelection(new TreeItem[] { fLastItem }); + } + } + } + } } else { fLastItem = null; - } - } - } - }); + } + } + } + }); - tree.addKeyListener(new KeyListener() { - @Override + tree.addKeyListener(new KeyListener() { + @Override public void keyPressed(KeyEvent e) { - if (e.keyCode == SWT.ARROW_UP) { - // No elements in the tree (bug 262961). - if (tree.getItemCount() == 0) { - fDropDownSite.close(); - return; - } - - TreeItem[] selection= tree.getSelection(); - if (selection.length != 1) { + if (e.keyCode == SWT.ARROW_UP) { + // No elements in the tree (bug 262961). + if (tree.getItemCount() == 0) { + fDropDownSite.close(); + return; + } + + TreeItem[] selection= tree.getSelection(); + if (selection.length != 1) { return; } - int selectionIndex= tree.indexOf(selection[0]); - if (selectionIndex != 0) { + int selectionIndex= tree.indexOf(selection[0]); + if (selectionIndex != 0) { return; } - fDropDownSite.close(); - } - } + fDropDownSite.close(); + } + } - @Override + @Override public void keyReleased(KeyEvent e) { - } - }); + } + }); - fDropDownViewer.addTreeListener(new ITreeViewerListener() { - @Override + fDropDownViewer.addTreeListener(new ITreeViewerListener() { + @Override public void treeCollapsed(TreeExpansionEvent event) { - } + } - @Override + @Override public void treeExpanded(TreeExpansionEvent event) { - tree.setRedraw(false); - new UIJob(tree.getDisplay(), IInternalDebugCoreConstants.EMPTY_STRING) { - { setSystem(true); } - @Override + tree.setRedraw(false); + new UIJob(tree.getDisplay(), IInternalDebugCoreConstants.EMPTY_STRING) { + { setSystem(true); } + @Override public IStatus runInUIThread(IProgressMonitor monitor) { - if (!tree.isDisposed()) { - try { - fDropDownSite.updateSize(); - } finally { - tree.setRedraw(true); - } - } - return Status.OK_STATUS; - } - }.schedule(); - } - - }); - - return tree; - } - - /** - * Creates and returns the tree viewer. - * - * @param composite Parent control of the viewer. - * @param style Style flags to use in creating the tree viewer. - * @param path Path to the element for which the drop-down is being opened. - * @return The newly created tree viewer. - */ - protected abstract TreeViewer createTreeViewer(Composite composite, int style, TreePath path); - - /** - * Called when the given element was selected in the viewer. It causes the - * breadcrumb viewer to fire an opened event. If the viewer loses focus - * as a result of the open operation, then the drop-down is closed. - * Otherwise the selected element is expanded. - * - * @param selection The selection to open. - */ - protected void openElement(ISelection selection) { - if (selection == null || !(selection instanceof ITreeSelection) || selection.isEmpty()) { + if (!tree.isDisposed()) { + try { + fDropDownSite.updateSize(); + } finally { + tree.setRedraw(true); + } + } + return Status.OK_STATUS; + } + }.schedule(); + } + + }); + + return tree; + } + + /** + * Creates and returns the tree viewer. + * + * @param composite Parent control of the viewer. + * @param style Style flags to use in creating the tree viewer. + * @param path Path to the element for which the drop-down is being opened. + * @return The newly created tree viewer. + */ + protected abstract TreeViewer createTreeViewer(Composite composite, int style, TreePath path); + + /** + * Called when the given element was selected in the viewer. It causes the + * breadcrumb viewer to fire an opened event. If the viewer loses focus + * as a result of the open operation, then the drop-down is closed. + * Otherwise the selected element is expanded. + * + * @param selection The selection to open. + */ + protected void openElement(ISelection selection) { + if (selection == null || !(selection instanceof ITreeSelection) || selection.isEmpty()) { return; } - // This might or might not open an editor - fDropDownSite.notifySelection(selection); + // This might or might not open an editor + fDropDownSite.notifySelection(selection); - Tree tree = fDropDownViewer.getTree(); + Tree tree = fDropDownViewer.getTree(); - boolean treeHasFocus= !tree.isDisposed() && tree.isFocusControl(); + boolean treeHasFocus= !tree.isDisposed() && tree.isFocusControl(); - if (DebugUIPlugin.DEBUG_TREE_VIEWER_DROPDOWN) { - DebugUIPlugin.trace(" isDisposed: " + tree.isDisposed()); //$NON-NLS-1$ - DebugUIPlugin.trace(" shell hasFocus: " + (!tree.isDisposed() && tree.isFocusControl())); //$NON-NLS-1$ - DebugUIPlugin.trace(" tree hasFocus: " + treeHasFocus); //$NON-NLS-1$ - } + if (DebugUIPlugin.DEBUG_TREE_VIEWER_DROPDOWN) { + DebugUIPlugin.trace(" isDisposed: " + tree.isDisposed()); //$NON-NLS-1$ + DebugUIPlugin.trace(" shell hasFocus: " + (!tree.isDisposed() && tree.isFocusControl())); //$NON-NLS-1$ + DebugUIPlugin.trace(" tree hasFocus: " + treeHasFocus); //$NON-NLS-1$ + } - if (tree.isDisposed()) { + if (tree.isDisposed()) { return; } - if (!treeHasFocus) { - fDropDownSite.close(); - return; - } + if (!treeHasFocus) { + fDropDownSite.close(); + return; + } - toggleExpansionState( ((ITreeSelection)selection).getPaths()[0]); - } + toggleExpansionState( ((ITreeSelection)selection).getPaths()[0]); + } - private void toggleExpansionState(TreePath path) { - Tree tree= fDropDownViewer.getTree(); - if (fDropDownViewer.getExpandedState(path)) { + private void toggleExpansionState(TreePath path) { + Tree tree= fDropDownViewer.getTree(); + if (fDropDownViewer.getExpandedState(path)) { fDropDownViewer.collapseToLevel(path, 1); } else { - tree.setRedraw(false); - try { - fDropDownViewer.expandToLevel(path, 1); - fDropDownSite.updateSize(); - } finally { - tree.setRedraw(true); - } - } - } + tree.setRedraw(false); + try { + fDropDownViewer.expandToLevel(path, 1); + fDropDownSite.updateSize(); + } finally { + tree.setRedraw(true); + } + } + } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ChildrenCountUpdate.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ChildrenCountUpdate.java index 940d18bf2..b77fcc474 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ChildrenCountUpdate.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ChildrenCountUpdate.java @@ -28,9 +28,9 @@ import org.eclipse.jface.viewers.TreePath; */ class ChildrenCountUpdate extends ViewerUpdateMonitor implements IChildrenCountUpdate { - /** - * Child count result. - */ + /** + * Child count result. + */ private int fCount = 0; /** @@ -39,18 +39,18 @@ class ChildrenCountUpdate extends ViewerUpdateMonitor implements IChildrenCountU */ private List<ViewerUpdateMonitor> fBatchedRequests = null; - /** - * Flag whether filtering is enabled in viewer. If filtering is enabled, then a - * children update is performed on child elements to filter them as part of the - * child count calculation. - */ + /** + * Flag whether filtering is enabled in viewer. If filtering is enabled, then a + * children update is performed on child elements to filter them as part of the + * child count calculation. + */ private boolean fShouldFilter = false; /** * Children indexes which are currently filtered. When updating child count, also need * to verify that currently filtered children are still filtered. */ - private int[] fFilteredChildren = null; + private int[] fFilteredChildren = null; /** * Children update used to filter children. @@ -81,42 +81,42 @@ class ChildrenCountUpdate extends ViewerUpdateMonitor implements IChildrenCountU @Override protected synchronized void scheduleViewerUpdate() { - // If filtering is enabled perform child update on all children in order to update - // viewer filters. + // If filtering is enabled perform child update on all children in order to update + // viewer filters. if (fShouldFilter || fFilteredChildren != null) { - if (fChildrenUpdate == null) { - int startIdx; - int count; - if (fShouldFilter) { - startIdx = 0; - count = getCount(); - } else { - startIdx = fFilteredChildren[0]; - int endIdx = fFilteredChildren[fFilteredChildren.length - 1]; - count = endIdx - startIdx + 1; - } - - fChildrenUpdate = new ChildrenUpdate(getContentProvider(), getViewerInput(), getElementPath(), getElement(), startIdx, count, getElementContentProvider()) { - @Override + if (fChildrenUpdate == null) { + int startIdx; + int count; + if (fShouldFilter) { + startIdx = 0; + count = getCount(); + } else { + startIdx = fFilteredChildren[0]; + int endIdx = fFilteredChildren[fFilteredChildren.length - 1]; + count = endIdx - startIdx + 1; + } + + fChildrenUpdate = new ChildrenUpdate(getContentProvider(), getViewerInput(), getElementPath(), getElement(), startIdx, count, getElementContentProvider()) { + @Override protected void performUpdate() { - performUpdate(true); - ChildrenCountUpdate.super.scheduleViewerUpdate(); - } + performUpdate(true); + ChildrenCountUpdate.super.scheduleViewerUpdate(); + } - @Override + @Override protected void scheduleViewerUpdate() { execInDisplayThread(() -> { if (!getContentProvider().isDisposed() && !isCanceled()) { performUpdate(); } }); - } - }; + } + }; execInDisplayThread(() -> fChildrenUpdate.startRequest()); - return; - } + return; + } } else { - super.scheduleViewerUpdate(); + super.scheduleViewerUpdate(); } } @@ -137,9 +137,9 @@ class ChildrenCountUpdate extends ViewerUpdateMonitor implements IChildrenCountU // Child 0 is automatically updated by the tree at the same time that the child count is requested. Therefore, // If this child count update filtered out this element, it needs to be updated again. if (fShouldFilter && getContentProvider().isFiltered(elementPath, 0)) { - getContentProvider().updateElement(elementPath, 0); + getContentProvider().updateElement(elementPath, 0); } - getContentProvider().getViewer().setChildCount(elementPath, viewCount); + getContentProvider().getViewer().setChildCount(elementPath, viewCount); getContentProvider().getStateTracker().restorePendingStateOnUpdate(getElementPath(), -1, true, true, false); } @@ -192,16 +192,16 @@ class ChildrenCountUpdate extends ViewerUpdateMonitor implements IChildrenCountU @Override boolean containsUpdate(TreePath path) { - if (getElementPath().equals(path)) { - return true; - } else if (fBatchedRequests != null) { - for (int i = 0; i < fBatchedRequests.size(); i++) { - if (fBatchedRequests.get(i).getElementPath().equals(path)) { - return true; - } - } - } - return false; + if (getElementPath().equals(path)) { + return true; + } else if (fBatchedRequests != null) { + for (int i = 0; i < fBatchedRequests.size(); i++) { + if (fBatchedRequests.get(i).getElementPath().equals(path)) { + return true; + } + } + } + return false; } @Override @@ -219,19 +219,19 @@ class ChildrenCountUpdate extends ViewerUpdateMonitor implements IChildrenCountU } int getCount() { - return fCount; + return fCount; } - @Override + @Override protected boolean doEquals(ViewerUpdateMonitor update) { - return - update instanceof ChildrenCountUpdate && - getViewerInput().equals(update.getViewerInput()) && - getElementPath().equals(update.getElementPath()); - } + return + update instanceof ChildrenCountUpdate && + getViewerInput().equals(update.getViewerInput()) && + getElementPath().equals(update.getElementPath()); + } - @Override + @Override protected int doHashCode() { - return getClass().hashCode() + getViewerInput().hashCode() + getElementPath().hashCode(); - } + return getClass().hashCode() + getViewerInput().hashCode() + getElementPath().hashCode(); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ChildrenUpdate.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ChildrenUpdate.java index 8819290ea..0a29af029 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ChildrenUpdate.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ChildrenUpdate.java @@ -66,26 +66,26 @@ public class ChildrenUpdate extends ViewerUpdateMonitor implements IChildrenUpda int viewIndex = provider.modelToViewIndex(elementPath, modelIndex); if (provider.shouldFilter(elementPath, element)) { if (provider.addFilteredIndex(elementPath, modelIndex, element)) { - if (!updateFilterOnly) { - if (DebugUIPlugin.DEBUG_CONTENT_PROVIDER && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(getPresentationContext())) { - DebugUIPlugin.trace("REMOVE(" + getElement() + ", modelIndex: " + modelIndex + " viewIndex: " + viewIndex + ", " + element + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ - } - viewer.remove(elementPath, viewIndex); - } + if (!updateFilterOnly) { + if (DebugUIPlugin.DEBUG_CONTENT_PROVIDER && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(getPresentationContext())) { + DebugUIPlugin.trace("REMOVE(" + getElement() + ", modelIndex: " + modelIndex + " viewIndex: " + viewIndex + ", " + element + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ + } + viewer.remove(elementPath, viewIndex); + } } } else { if (provider.isFiltered(elementPath, modelIndex)) { provider.clearFilteredChild(elementPath, modelIndex); - if (!updateFilterOnly) { + if (!updateFilterOnly) { int insertIndex = provider.modelToViewIndex(elementPath, modelIndex); if (DebugUIPlugin.DEBUG_CONTENT_PROVIDER) { DebugUIPlugin.trace("insert(" + getElement() + ", modelIndex: " + modelIndex + " insertIndex: " + insertIndex + ", " + element + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ } viewer.insert(elementPath, element, insertIndex); - } + } } else if (!updateFilterOnly){ - if (DebugUIPlugin.DEBUG_CONTENT_PROVIDER && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(getPresentationContext())) { - DebugUIPlugin.trace("replace(" + getElement() + ", modelIndex: " + modelIndex + " viewIndex: " + viewIndex + ", " + element + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ + if (DebugUIPlugin.DEBUG_CONTENT_PROVIDER && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(getPresentationContext())) { + DebugUIPlugin.trace("replace(" + getElement() + ", modelIndex: " + modelIndex + " viewIndex: " + viewIndex + ", " + element + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ } viewer.replace(elementPath, viewIndex, element); } @@ -149,8 +149,8 @@ public class ChildrenUpdate extends ViewerUpdateMonitor implements IChildrenUpda @Override boolean containsUpdate(TreePath path) { - return getElementPath().equals(path); - } + return getElementPath().equals(path); + } @Override public int getLength() { @@ -201,24 +201,24 @@ public class ChildrenUpdate extends ViewerUpdateMonitor implements IChildrenUpda } Object[] getElements() { - return fElements; + return fElements; } - @Override + @Override protected boolean doEquals(ViewerUpdateMonitor update) { - return - update instanceof ChildrenUpdate && - ((ChildrenUpdate)update).getOffset() == getOffset() && - ((ChildrenUpdate)update).getLength() == getLength() && - getViewerInput().equals(update.getViewerInput()) && - getElementPath().equals(update.getElementPath()); - } - - @Override + return + update instanceof ChildrenUpdate && + ((ChildrenUpdate)update).getOffset() == getOffset() && + ((ChildrenUpdate)update).getLength() == getLength() && + getViewerInput().equals(update.getViewerInput()) && + getElementPath().equals(update.getElementPath()); + } + + @Override protected int doHashCode() { - return (int)Math.pow( - (getClass().hashCode() + getViewerInput().hashCode() + getElementPath().hashCode()) * (getOffset() + 2), - getLength() + 2); - } + return (int)Math.pow( + (getClass().hashCode() + getViewerInput().hashCode() + getElementPath().hashCode()) * (getOffset() + 2), + getLength() + 2); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ElementCompareRequest.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ElementCompareRequest.java index 25d737dad..76f30f905 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ElementCompareRequest.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ElementCompareRequest.java @@ -26,30 +26,30 @@ import org.eclipse.ui.IMemento; public class ElementCompareRequest extends MementoUpdate implements IElementCompareRequest { private boolean fEqual; - private final int fModelIndex; + private final int fModelIndex; private ModelDelta fDelta; - private boolean fKnowsHasChildren; - private boolean fKnowsChildCount; - private boolean fCheckChildrenRealized; - - - /** - * @param provider the content provider to use for the update - * @param viewerInput the current input - * @param element the element to update - * @param elementPath the path of the element to update - * @param memento Memento to encode result into - * @param delta Delta to write the result comparison into. - * @param modelIndex Index of element to compare. - * @param knowsHasChildren Flag indicating whether provider knows the has - * children state of element. - * @param knowsChildCount Flag indicating whether provider knows the - * child count state of element. - * @param checkChildrenRealized Flag indicating if any realized children should be checked - */ + private boolean fKnowsHasChildren; + private boolean fKnowsChildCount; + private boolean fCheckChildrenRealized; + + + /** + * @param provider the content provider to use for the update + * @param viewerInput the current input + * @param element the element to update + * @param elementPath the path of the element to update + * @param memento Memento to encode result into + * @param delta Delta to write the result comparison into. + * @param modelIndex Index of element to compare. + * @param knowsHasChildren Flag indicating whether provider knows the has + * children state of element. + * @param knowsChildCount Flag indicating whether provider knows the + * child count state of element. + * @param checkChildrenRealized Flag indicating if any realized children should be checked + */ public ElementCompareRequest(TreeModelContentProvider provider, Object viewerInput, Object element, - TreePath elementPath, IMemento memento, ModelDelta delta, int modelIndex, - boolean knowsHasChildren, boolean knowsChildCount, boolean checkChildrenRealized) + TreePath elementPath, IMemento memento, ModelDelta delta, int modelIndex, + boolean knowsHasChildren, boolean knowsChildCount, boolean checkChildrenRealized) { super(provider, viewerInput, provider.getPresentationContext(), element, elementPath, memento); fProvider = provider; @@ -67,21 +67,21 @@ public class ElementCompareRequest extends MementoUpdate implements IElementComp @Override public void done() { - ITreeModelViewer viewer = getContentProvider().getViewer(); - if (viewer == null) + ITreeModelViewer viewer = getContentProvider().getViewer(); + if (viewer == null) { return; // disposed } - if (viewer.getDisplay().getThread() == Thread.currentThread()) { - fProvider.getStateTracker().compareFinished(ElementCompareRequest.this, fDelta); - } else { + if (viewer.getDisplay().getThread() == Thread.currentThread()) { + fProvider.getStateTracker().compareFinished(ElementCompareRequest.this, fDelta); + } else { viewer.getDisplay().asyncExec(() -> { if (getContentProvider().isDisposed()) { return; } fProvider.getStateTracker().compareFinished(ElementCompareRequest.this, fDelta); }); - } + } } public boolean isEqual() { @@ -113,20 +113,20 @@ public class ElementCompareRequest extends MementoUpdate implements IElementComp return fKnowsChildCount; } - void setCheckChildrenRealized(boolean checkChildrenRealized) { - fCheckChildrenRealized = checkChildrenRealized; - } + void setCheckChildrenRealized(boolean checkChildrenRealized) { + fCheckChildrenRealized = checkChildrenRealized; + } - boolean checkChildrenRealized() { - return fCheckChildrenRealized; - } + boolean checkChildrenRealized() { + return fCheckChildrenRealized; + } - @Override + @Override public String toString() { - StringBuilder buf = new StringBuilder(); - buf.append("IElementCompareRequest: "); //$NON-NLS-1$ - buf.append(getElement()); - return buf.toString(); - } + StringBuilder buf = new StringBuilder(); + buf.append("IElementCompareRequest: "); //$NON-NLS-1$ + buf.append(getElement()); + return buf.toString(); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ElementMementoRequest.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ElementMementoRequest.java index 7b3c8e73b..d3887179a 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ElementMementoRequest.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ElementMementoRequest.java @@ -32,11 +32,11 @@ class ElementMementoRequest extends MementoUpdate implements IElementMementoRequ private ModelDelta fDelta; /** - * @param provider the content provider to use for the update - * @param viewerInput the current input - * @param collector Collector to report the result to - * @param element the element to update - * @param elementPath the path of the element to update + * @param provider the content provider to use for the update + * @param viewerInput the current input + * @param collector Collector to report the result to + * @param element the element to update + * @param elementPath the path of the element to update * @param memento Memento to encode result into * @param delta Delta to write the result comparison into. */ @@ -63,22 +63,22 @@ class ElementMementoRequest extends MementoUpdate implements IElementMementoRequ } private void doComplete() { - if (getContentProvider().isDisposed()) { + if (getContentProvider().isDisposed()) { return; } - if (!isCanceled() && (getStatus() == null || getStatus().isOK())) { - // replace the element with a memento - fDelta.setElement(getMemento()); - } - fManager.requestComplete(ElementMementoRequest.this); + if (!isCanceled() && (getStatus() == null || getStatus().isOK())) { + // replace the element with a memento + fDelta.setElement(getMemento()); + } + fManager.requestComplete(ElementMementoRequest.this); } @Override public String toString() { - StringBuilder buf = new StringBuilder(); - buf.append("IElementMementoRequest: "); //$NON-NLS-1$ - buf.append(getElement()); - return buf.toString(); + StringBuilder buf = new StringBuilder(); + buf.append("IElementMementoRequest: "); //$NON-NLS-1$ + buf.append(getElement()); + return buf.toString(); } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/FilterTransform.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/FilterTransform.java index f43a6dd9b..60c8125bd 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/FilterTransform.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/FilterTransform.java @@ -375,11 +375,11 @@ public class FilterTransform { } public int indexOfFilteredElement(TreePath parentPath, Object element) { - Node parentNode = root.find(parentPath, 0); - if (parentNode == null) { - return -1; - } - return parentNode.indexOfFilteredElement(element); + Node parentNode = root.find(parentPath, 0); + if (parentNode == null) { + return -1; + } + return parentNode.indexOfFilteredElement(element); } /** diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/HasChildrenUpdate.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/HasChildrenUpdate.java index 808f66e5a..b05729bfa 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/HasChildrenUpdate.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/HasChildrenUpdate.java @@ -32,15 +32,15 @@ class HasChildrenUpdate extends ViewerUpdateMonitor implements IHasChildrenUpdat private List<ViewerUpdateMonitor> fBatchedRequests = null; - /** - * Constructs a request to update an element - * - * @param provider the content provider - * @param viewerInput the current input - * @param elementPath the path to the element being update - * @param element the element - * @param elementContentProvider the content provider for the element - */ + /** + * Constructs a request to update an element + * + * @param provider the content provider + * @param viewerInput the current input + * @param elementPath the path to the element being update + * @param element the element + * @param elementContentProvider the content provider for the element + */ public HasChildrenUpdate(TreeModelContentProvider provider, Object viewerInput, TreePath elementPath, Object element, IElementContentProvider elementContentProvider) { super(provider, viewerInput, elementPath, element, elementContentProvider, provider.getPresentationContext()); } @@ -52,7 +52,7 @@ class HasChildrenUpdate extends ViewerUpdateMonitor implements IHasChildrenUpdat if (!fHasChildren) { contentProvider.clearFilters(elementPath); } - if (DebugUIPlugin.DEBUG_CONTENT_PROVIDER && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(getPresentationContext())) { + if (DebugUIPlugin.DEBUG_CONTENT_PROVIDER && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(getPresentationContext())) { } contentProvider.getViewer().setHasChildren(elementPath, fHasChildren); if (fHasChildren) { @@ -112,17 +112,17 @@ class HasChildrenUpdate extends ViewerUpdateMonitor implements IHasChildrenUpdat @Override boolean containsUpdate(TreePath path) { - if (getElementPath().equals(path)) { - return true; - } else if (fBatchedRequests != null) { - for (int i = 0; i < fBatchedRequests.size(); i++) { - if (fBatchedRequests.get(i).getElementPath().equals(path)) { - return true; - } - } - } - return false; - } + if (getElementPath().equals(path)) { + return true; + } else if (fBatchedRequests != null) { + for (int i = 0; i < fBatchedRequests.size(); i++) { + if (fBatchedRequests.get(i).getElementPath().equals(path)) { + return true; + } + } + } + return false; + } @Override int getPriority() { @@ -139,20 +139,20 @@ class HasChildrenUpdate extends ViewerUpdateMonitor implements IHasChildrenUpdat } boolean hasChildren() { - return fHasChildren; + return fHasChildren; } - @Override + @Override protected boolean doEquals(ViewerUpdateMonitor update) { - return - update instanceof HasChildrenUpdate && - getViewerInput().equals(update.getViewerInput()) && - getElementPath().equals(update.getElementPath()); - } + return + update instanceof HasChildrenUpdate && + getViewerInput().equals(update.getViewerInput()) && + getElementPath().equals(update.getElementPath()); + } - @Override + @Override protected int doHashCode() { - return getClass().hashCode() + getViewerInput().hashCode() + getElementPath().hashCode(); - } + return getClass().hashCode() + getViewerInput().hashCode() + getElementPath().hashCode(); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/IInternalTreeModelViewer.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/IInternalTreeModelViewer.java index c71362168..d89111ae1 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/IInternalTreeModelViewer.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/IInternalTreeModelViewer.java @@ -32,291 +32,291 @@ import org.eclipse.swt.graphics.RGB; */ public interface IInternalTreeModelViewer extends ITreeModelViewer { - /** - * Returns this viewer's filters. - * - * @return an array of viewer filters - * @see org.eclipse.jface.viewers.StructuredViewer#setFilters(ViewerFilter[]) - */ - @Override ViewerFilter[] getFilters(); + /** + * Returns this viewer's filters. + * + * @return an array of viewer filters + * @see org.eclipse.jface.viewers.StructuredViewer#setFilters(ViewerFilter[]) + */ + @Override ViewerFilter[] getFilters(); - /** - * Reveals the given element in the viewer. - * @param path Path to the element's parent. - * @param index Index of the element to be revealed. - */ - void reveal(TreePath path, int index); + /** + * Reveals the given element in the viewer. + * @param path Path to the element's parent. + * @param index Index of the element to be revealed. + */ + void reveal(TreePath path, int index); - /** - * Triggers an update of the given element's state. If multiple instances - * of the given element are found in the tree, they will all be updated. - * - * @param element Element to update. - */ - void update(Object element); + /** + * Triggers an update of the given element's state. If multiple instances + * of the given element are found in the tree, they will all be updated. + * + * @param element Element to update. + */ + void update(Object element); - /** - * Sets the given object to be the element at the given index of the given parent. - * <p> - * This method should only be called by the viewer framework. - * </p> - * - * @param parentOrTreePath Parent object, or a tree path of the parent element. - * @param index Index at which to set the new element. - * @param element Element object. - * @noreference This method is not intended to be referenced by clients. - */ - void replace(Object parentOrTreePath, final int index, Object element); + /** + * Sets the given object to be the element at the given index of the given parent. + * <p> + * This method should only be called by the viewer framework. + * </p> + * + * @param parentOrTreePath Parent object, or a tree path of the parent element. + * @param index Index at which to set the new element. + * @param element Element object. + * @noreference This method is not intended to be referenced by clients. + */ + void replace(Object parentOrTreePath, final int index, Object element); - /** - * Set the number of children of the given element or tree path. To set the - * number of children of the invisible root of the tree, you can pass the - * input object or an empty tree path. - * <p> - * This method should only be called by the viewer framework. - * </p> - * - * @param elementOrTreePath The element, or tree path. - * @param count new value - * @noreference This method is not intended to be referenced by clients. - */ - void setChildCount(final Object elementOrTreePath, final int count); + /** + * Set the number of children of the given element or tree path. To set the + * number of children of the invisible root of the tree, you can pass the + * input object or an empty tree path. + * <p> + * This method should only be called by the viewer framework. + * </p> + * + * @param elementOrTreePath The element, or tree path. + * @param count new value + * @noreference This method is not intended to be referenced by clients. + */ + void setChildCount(final Object elementOrTreePath, final int count); - /** - * Inform the viewer about whether the given element or tree path has - * children. Avoid calling this method if the number of children has - * already been set. - * <p> - * This method should only be called by the viewer framework. - * </p> - * - * @param elementOrTreePath the element, or tree path - * @param hasChildren new value. - * @noreference This method is not intended to be referenced by clients. - */ - void setHasChildren(final Object elementOrTreePath, final boolean hasChildren); + /** + * Inform the viewer about whether the given element or tree path has + * children. Avoid calling this method if the number of children has + * already been set. + * <p> + * This method should only be called by the viewer framework. + * </p> + * + * @param elementOrTreePath the element, or tree path + * @param hasChildren new value. + * @noreference This method is not intended to be referenced by clients. + */ + void setHasChildren(final Object elementOrTreePath, final boolean hasChildren); - /** - * Performs auto expand on an element at the specified path if the auto expand - * level dictates the element should be expanded. - * <p> - * This method should only be called by the viewer framework. - * </p> - * - * @param elementPath tree path to element to consider for expansion - * @noreference This method is not intended to be referenced by clients. - */ - void autoExpand(TreePath elementPath); + /** + * Performs auto expand on an element at the specified path if the auto expand + * level dictates the element should be expanded. + * <p> + * This method should only be called by the viewer framework. + * </p> + * + * @param elementPath tree path to element to consider for expansion + * @noreference This method is not intended to be referenced by clients. + */ + void autoExpand(TreePath elementPath); - /** - * Sets whether the node corresponding to the given element or tree path is - * expanded or collapsed. - * <p> - * This method should only be called by the viewer framework. - * </p> - * - * @param elementOrTreePath - * the element, or the tree path to the element - * @param expanded - * <code>true</code> if the node is expanded, and - * <code>false</code> if collapsed - * - * @noreference This method is not intended to be referenced by clients. - */ - void setExpandedState(Object elementOrTreePath, boolean expanded); + /** + * Sets whether the node corresponding to the given element or tree path is + * expanded or collapsed. + * <p> + * This method should only be called by the viewer framework. + * </p> + * + * @param elementOrTreePath + * the element, or the tree path to the element + * @param expanded + * <code>true</code> if the node is expanded, and + * <code>false</code> if collapsed + * + * @noreference This method is not intended to be referenced by clients. + */ + void setExpandedState(Object elementOrTreePath, boolean expanded); - /** - * Expands all ancestors of the given element or tree path so that the given - * element becomes visible in this viewer's tree control, and then expands - * the subtree rooted at the given element to the given level. - * <p> - * This method should only be called by the viewer framework. - * </p> - * - * @param elementOrTreePath - * the element - * @param level - * non-negative level, or <code>ALL_LEVELS</code> to expand all - * levels of the tree - * - * @noreference This method is not intended to be referenced by clients. - */ - void expandToLevel(Object elementOrTreePath, int level); + /** + * Expands all ancestors of the given element or tree path so that the given + * element becomes visible in this viewer's tree control, and then expands + * the subtree rooted at the given element to the given level. + * <p> + * This method should only be called by the viewer framework. + * </p> + * + * @param elementOrTreePath + * the element + * @param level + * non-negative level, or <code>ALL_LEVELS</code> to expand all + * levels of the tree + * + * @noreference This method is not intended to be referenced by clients. + */ + void expandToLevel(Object elementOrTreePath, int level); - /** - * Removes the given element from the viewer. The selection is updated if - * necessary. - * <p> - * This method should only be called by the viewer framework. - * </p> - * @param elementOrTreePath the element, or the tree path to the element - * @noreference This method is not intended to be referenced by clients. - */ - void remove(Object elementOrTreePath); + /** + * Removes the given element from the viewer. The selection is updated if + * necessary. + * <p> + * This method should only be called by the viewer framework. + * </p> + * @param elementOrTreePath the element, or the tree path to the element + * @noreference This method is not intended to be referenced by clients. + */ + void remove(Object elementOrTreePath); - /** - * Removes the element at the specified index of the parent. The selection is updated if required. - * <p> - * This method should only be called by the viewer framework. - * </p> - * - * @param parentOrTreePath the parent element, the input element, or a tree path to the parent element - * @param index child index - * @noreference This method is not intended to be referenced by clients. - */ - void remove(Object parentOrTreePath, final int index); + /** + * Removes the element at the specified index of the parent. The selection is updated if required. + * <p> + * This method should only be called by the viewer framework. + * </p> + * + * @param parentOrTreePath the parent element, the input element, or a tree path to the parent element + * @param index child index + * @noreference This method is not intended to be referenced by clients. + */ + void remove(Object parentOrTreePath, final int index); - /** - * Inserts the given element as a new child element of the given parent - * element at the given position. If this viewer has a sorter, the position - * is ignored and the element is inserted at the correct position in the - * sort order. - * <p> - * This method should only be called by the viewer framework. - * </p> - * @param parentOrTreePath the parent element, or the tree path to the parent - * - * @param element the element - * @param position a 0-based position relative to the model, or -1 to indicate - * the last position - * @noreference This method is not intended to be referenced by clients. - */ - void insert(Object parentOrTreePath, Object element, int position); + /** + * Inserts the given element as a new child element of the given parent + * element at the given position. If this viewer has a sorter, the position + * is ignored and the element is inserted at the correct position in the + * sort order. + * <p> + * This method should only be called by the viewer framework. + * </p> + * @param parentOrTreePath the parent element, or the tree path to the parent + * + * @param element the element + * @param position a 0-based position relative to the model, or -1 to indicate + * the last position + * @noreference This method is not intended to be referenced by clients. + */ + void insert(Object parentOrTreePath, Object element, int position); - /** - * Returns whether the candidate selection should override the current - * selection. - * @param current Current selection in viewer. - * @param candidate Proposed new selection. - * @return whether new selection should override the current - */ - boolean overrideSelection(ISelection current, ISelection candidate); + /** + * Returns whether the candidate selection should override the current + * selection. + * @param current Current selection in viewer. + * @param candidate Proposed new selection. + * @return whether new selection should override the current + */ + boolean overrideSelection(ISelection current, ISelection candidate); - /** - * Returns whether the node corresponding to the given element or tree path - * is expanded or collapsed. - * - * @param elementOrTreePath - * the element - * @return <code>true</code> if the node is expanded, and - * <code>false</code> if collapsed - */ - boolean getExpandedState(Object elementOrTreePath); + /** + * Returns whether the node corresponding to the given element or tree path + * is expanded or collapsed. + * + * @param elementOrTreePath + * the element + * @return <code>true</code> if the node is expanded, and + * <code>false</code> if collapsed + */ + boolean getExpandedState(Object elementOrTreePath); - /** - * Returns whether the node corresponding to the given element or tree path - * has any child elements. - * - * @param elementOrTreePath Path to element - * @return Returns whether the given element has children. - */ - boolean getHasChildren(Object elementOrTreePath); + /** + * Returns whether the node corresponding to the given element or tree path + * has any child elements. + * + * @param elementOrTreePath Path to element + * @return Returns whether the given element has children. + */ + boolean getHasChildren(Object elementOrTreePath); - /** - * Returns the child count of the element at the given path. <br> - * Note: The child count may be incorrect if the element is not - * expanded in the tree. - * - * @param path Path to get count for. - * @return The child count. - */ - int getChildCount(TreePath path); + /** + * Returns the child count of the element at the given path. <br> + * Note: The child count may be incorrect if the element is not + * expanded in the tree. + * + * @param path Path to get count for. + * @return The child count. + */ + int getChildCount(TreePath path); - /** - * Returns the element which is a child of the element at the - * given path, with the given index. - * - * @param path Path to parent element. - * @param index Index of child element. - * @return Child element. - */ - Object getChildElement(TreePath path, int index); + /** + * Returns the element which is a child of the element at the + * given path, with the given index. + * + * @param path Path to parent element. + * @param index Index of child element. + * @return Child element. + */ + Object getChildElement(TreePath path, int index); - /** - * Returns the tree path of the element that is at the top of the - * viewer. - * - * @return the tree path of the element at the top of the - * viewer. - */ - TreePath getTopElementPath(); + /** + * Returns the tree path of the element that is at the top of the + * viewer. + * + * @return the tree path of the element at the top of the + * viewer. + */ + TreePath getTopElementPath(); - /** - * Finds the index of the given element with a parent of given path. - * - * @param parentPath Path of parent element. - * @param element Element to find. - * - * @return The element's index, or -1 if not found. - */ - int findElementIndex(TreePath parentPath, Object element); + /** + * Finds the index of the given element with a parent of given path. + * + * @param parentPath Path of parent element. + * @param element Element to find. + * + * @return The element's index, or -1 if not found. + */ + int findElementIndex(TreePath parentPath, Object element); - /** - * Returns a boolean indicating whether all the child elements of the - * given parent have been realized already. - * - * @param parentPath Path of parent element. - * @return true if all children realized - */ - boolean getElementChildrenRealized(TreePath parentPath); + /** + * Returns a boolean indicating whether all the child elements of the + * given parent have been realized already. + * + * @param parentPath Path of parent element. + * @return true if all children realized + */ + boolean getElementChildrenRealized(TreePath parentPath); - /** - * Clears the selection in the viewer, if any, without firing - * selection change notification. This is only to be used by - * the platform. - */ - void clearSelectionQuiet(); + /** + * Clears the selection in the viewer, if any, without firing + * selection change notification. This is only to be used by + * the platform. + */ + void clearSelectionQuiet(); - /** - * Sets the element's display information. - * <p> - * This method should only be called by the viewer framework. - * </p> - * - * @param path Element path. - * @param numColumns Number of columns in the data. - * @param labels Array of labels. The array cannot to be - * <code>null</code>, but values within the array may be. - * @param images Array of image descriptors, may be <code>null</code>. - * @param fontDatas Array of fond data objects, may be <code>null</code>. - * @param foregrounds Array of RGB values for foreground colors, may be - * <code>null</code>. - * @param backgrounds Array of RGB values for background colors, may be - * <code>null</code>. - * @noreference This method is not intended to be referenced by clients. - */ - void setElementData(TreePath path, int numColumns, String[] labels, ImageDescriptor[] images, FontData[] fontDatas, RGB[] foregrounds, RGB[] backgrounds); + /** + * Sets the element's display information. + * <p> + * This method should only be called by the viewer framework. + * </p> + * + * @param path Element path. + * @param numColumns Number of columns in the data. + * @param labels Array of labels. The array cannot to be + * <code>null</code>, but values within the array may be. + * @param images Array of image descriptors, may be <code>null</code>. + * @param fontDatas Array of fond data objects, may be <code>null</code>. + * @param foregrounds Array of RGB values for foreground colors, may be + * <code>null</code>. + * @param backgrounds Array of RGB values for background colors, may be + * <code>null</code>. + * @noreference This method is not intended to be referenced by clients. + */ + void setElementData(TreePath path, int numColumns, String[] labels, ImageDescriptor[] images, FontData[] fontDatas, RGB[] foregrounds, RGB[] backgrounds); - /** - * Returns identifiers of the visible columns in this viewer, or <code>null</code> - * if there is currently no column presentation. - * - * @return visible columns or <code>null</code> - */ - String[] getVisibleColumns(); + /** + * Returns identifiers of the visible columns in this viewer, or <code>null</code> + * if there is currently no column presentation. + * + * @return visible columns or <code>null</code> + */ + String[] getVisibleColumns(); - /** - * Sets the element check state data. - * - * @param path Path of element to check. - * @param checked if true, item will be checked - * @param grayed if true item will be grayed - */ - void setElementChecked(TreePath path, boolean checked, boolean grayed); + /** + * Sets the element check state data. + * + * @param path Path of element to check. + * @param checked if true, item will be checked + * @param grayed if true item will be grayed + */ + void setElementChecked(TreePath path, boolean checked, boolean grayed); - /** - * Retrieves the element check state. - * - * @param path Path of element to return check state for. - * @return the element checked state - */ - boolean getElementChecked(TreePath path); + /** + * Retrieves the element check state. + * + * @param path Path of element to return check state for. + * @return the element checked state + */ + boolean getElementChecked(TreePath path); - /** - * Retrieves the element's check box grayed state. - * - * @param path Path of element to return grayed state for. - * @return the element grayed state - */ - boolean getElementGrayed(TreePath path); + /** + * Retrieves the element's check box grayed state. + * + * @param path Path of element to return grayed state for. + * @return the element grayed state + */ + boolean getElementGrayed(TreePath path); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ITreeModelContentProvider.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ITreeModelContentProvider.java index 04476f252..ee94069e4 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ITreeModelContentProvider.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ITreeModelContentProvider.java @@ -31,221 +31,221 @@ import org.eclipse.jface.viewers.Viewer; */ public interface ITreeModelContentProvider extends ILazyTreePathContentProvider { - /** - * Bit-mask which allows all possible model delta flags. - * - * @since 3.6 - * @see #setModelDeltaMask(int) - */ - int ALL_MODEL_DELTA_FLAGS = ~0; - - /** - * Bit-mask which allows only flags which control selection and expansion. - * - * @since 3.6 - * @see #setModelDeltaMask(int) - */ - int CONTROL_MODEL_DELTA_FLAGS = - IModelDelta.EXPAND | IModelDelta.COLLAPSE | IModelDelta.SELECT | IModelDelta.REVEAL | IModelDelta.FORCE; - - /** - * Bit-mask which allows only flags which update viewer's information - * about the model. - * - * @since 3.6 - * @see #setModelDeltaMask(int) - */ - int UPDATE_MODEL_DELTA_FLAGS = - IModelDelta.ADDED | IModelDelta.CONTENT | IModelDelta.INSERTED | IModelDelta.INSTALL | IModelDelta.REMOVED | - IModelDelta.REPLACED | IModelDelta.STATE | IModelDelta.UNINSTALL; - - /** - * Translates and returns the given child index from the viewer coordinate - * space to the model coordinate space. - * - * @param parentPath path to parent element - * @param index index of child element in viewer (filtered) space - * @return index of child element in model (raw) space - */ - int viewToModelIndex(TreePath parentPath, int index); - - /** - * Translates and returns the given child count from the viewer coordinate - * space to the model coordinate space. - * - * @param parentPath path to parent element - * @param count number of child elements in viewer (filtered) space - * @return number of child elements in model (raw) space - */ - int viewToModelCount(TreePath parentPath, int count); - - /** - * Translates and returns the given child index from the model coordinate - * space to the viewer coordinate space. - * - * @param parentPath path to parent element - * @param index index of child element in model (raw) space - * @return index of child element in viewer (filtered) space or -1 if filtered - */ - int modelToViewIndex(TreePath parentPath, int index); - - /** - * Returns whether the children of given element should be filtered. - * <p>This method is used to determine whether any of the registered filters - * that extend {@link TreeModelViewerFilter} are applicable to the given - * element. If so, then children of given element should be filtered - * prior to populating them in the viewer. - * - * @param parentElement - * the parent element - * @return whether there are any {@link TreeModelViewerFilter} filters - * applicable to given parent - */ - boolean areTreeModelViewerFiltersApplicable(Object parentElement); - - /** - * Returns whether the given element is filtered. - * - * @param parentElementOrTreePath - * the parent element or path - * @param element - * the child element - * @return whether to filter the element - */ - boolean shouldFilter(Object parentElementOrTreePath, Object element); - - /** - * Notification the given element is being unmapped. - * - * @param path Path to unmap - */ - void unmapPath(TreePath path); - - /** - * Sets the bit mask which will be used to filter the {@link IModelDelta} - * coming from the model. Any delta flags which are hidden by the mask - * will be ignored. - * - * @param mask for <code>IModelDelta</code> flags - * - * @since 3.6 - */ - void setModelDeltaMask(int mask); - - /** - * Returns the current model delta mask. - * - * @return bit mask used to filter model delta events. - * - * @see #setModelDeltaMask(int) - * @since 3.6 - */ - int getModelDeltaMask(); - - /** - * Translates and returns the given child count from the model coordinate - * space to the viewer coordinate space. - * - * @param parentPath path to parent element - * @param count child count element in model (raw) space - * @return child count in viewer (filtered) space - */ - int modelToViewChildCount(TreePath parentPath, int count); - - /** - * Registers the specified listener for view update notifications. - * @param listener Listener to add - */ - void addViewerUpdateListener(IViewerUpdateListener listener); - - /** - * Removes the specified listener from update notifications. - * @param listener Listener to remove - */ - void removeViewerUpdateListener(IViewerUpdateListener listener); - - /** - * Registers the given listener for model delta notification. - * This listener is called immediately after the viewer processes - * the delta. - * @param listener Listener to add - */ - void addModelChangedListener(IModelChangedListener listener); - - /** - * Removes the given listener from model delta notification. - * @param listener Listener to remove - */ - void removeModelChangedListener(IModelChangedListener listener); - - /** - * Causes the content provider to save the expansion and selection state - * of given element. The state is then restored as the tree is lazily - * re-populated. - * @param path Path of the element to save. - */ - void preserveState(TreePath path); - - /** - * Registers the specified listener for state update notifications. - * @param listener Listener to add - * @since 3.6 - */ - void addStateUpdateListener(IStateUpdateListener listener); - - /** - * Removes the specified listener from state update notifications. - * @param listener Listener to remove - * @since 3.6 - */ - void removeStateUpdateListener(IStateUpdateListener listener); - - /** - * Instructs the content provider to process the given model delta. This - * mechanism can be used to control the view's layout (expanding, selecting - * , etc.) - * - * @param delta The model delta to process. - * @param mask Mask that can be used to suppress processing of some of the - * delta flags - * - * @since 3.6 - */ - void updateModel(IModelDelta delta, int mask); - - /** - * Instructs the content provider to cancel any pending state changes - * (i.e. SELECT, REVEAL, EXPAND, COLLAPSE) for the given path. Pending - * state changes are changes the the viewer plans to re-apply to the - * viewer following a refresh. If the user changes viewer state while - * the viewer is being refreshed, user's change should override the - * previous state. - * - * @param path Path of the element for which to cancel pending changes. - * @param flags Flags indicating the changes to cancel. - */ - void cancelRestore(TreePath path, int flags); - - /** - * Notifies the content provider that a client called {@link Viewer#setInput(Object)}, - * and the viewer input is changed. - * This method is guaranteed to be called after {@link IContentProvider#inputChanged(Viewer, Object, Object)} - * - * @param viewer The viewer that uses this content provider. - * @param oldInput Old input object. - * @param newInput New input object. - * - * @since 3.8 - */ - void postInputChanged(IInternalTreeModelViewer viewer, Object oldInput, Object newInput); - - /** - * Notifies the receiver that the given element has had its - * checked state modified in the viewer. - * - * @param path Path of the element that had its checked state changed - * @param checked The new checked state of the element - * @return false if the check state should not change - */ - boolean setChecked(TreePath path, boolean checked); + /** + * Bit-mask which allows all possible model delta flags. + * + * @since 3.6 + * @see #setModelDeltaMask(int) + */ + int ALL_MODEL_DELTA_FLAGS = ~0; + + /** + * Bit-mask which allows only flags which control selection and expansion. + * + * @since 3.6 + * @see #setModelDeltaMask(int) + */ + int CONTROL_MODEL_DELTA_FLAGS = + IModelDelta.EXPAND | IModelDelta.COLLAPSE | IModelDelta.SELECT | IModelDelta.REVEAL | IModelDelta.FORCE; + + /** + * Bit-mask which allows only flags which update viewer's information + * about the model. + * + * @since 3.6 + * @see #setModelDeltaMask(int) + */ + int UPDATE_MODEL_DELTA_FLAGS = + IModelDelta.ADDED | IModelDelta.CONTENT | IModelDelta.INSERTED | IModelDelta.INSTALL | IModelDelta.REMOVED | + IModelDelta.REPLACED | IModelDelta.STATE | IModelDelta.UNINSTALL; + + /** + * Translates and returns the given child index from the viewer coordinate + * space to the model coordinate space. + * + * @param parentPath path to parent element + * @param index index of child element in viewer (filtered) space + * @return index of child element in model (raw) space + */ + int viewToModelIndex(TreePath parentPath, int index); + + /** + * Translates and returns the given child count from the viewer coordinate + * space to the model coordinate space. + * + * @param parentPath path to parent element + * @param count number of child elements in viewer (filtered) space + * @return number of child elements in model (raw) space + */ + int viewToModelCount(TreePath parentPath, int count); + + /** + * Translates and returns the given child index from the model coordinate + * space to the viewer coordinate space. + * + * @param parentPath path to parent element + * @param index index of child element in model (raw) space + * @return index of child element in viewer (filtered) space or -1 if filtered + */ + int modelToViewIndex(TreePath parentPath, int index); + + /** + * Returns whether the children of given element should be filtered. + * <p>This method is used to determine whether any of the registered filters + * that extend {@link TreeModelViewerFilter} are applicable to the given + * element. If so, then children of given element should be filtered + * prior to populating them in the viewer. + * + * @param parentElement + * the parent element + * @return whether there are any {@link TreeModelViewerFilter} filters + * applicable to given parent + */ + boolean areTreeModelViewerFiltersApplicable(Object parentElement); + + /** + * Returns whether the given element is filtered. + * + * @param parentElementOrTreePath + * the parent element or path + * @param element + * the child element + * @return whether to filter the element + */ + boolean shouldFilter(Object parentElementOrTreePath, Object element); + + /** + * Notification the given element is being unmapped. + * + * @param path Path to unmap + */ + void unmapPath(TreePath path); + + /** + * Sets the bit mask which will be used to filter the {@link IModelDelta} + * coming from the model. Any delta flags which are hidden by the mask + * will be ignored. + * + * @param mask for <code>IModelDelta</code> flags + * + * @since 3.6 + */ + void setModelDeltaMask(int mask); + + /** + * Returns the current model delta mask. + * + * @return bit mask used to filter model delta events. + * + * @see #setModelDeltaMask(int) + * @since 3.6 + */ + int getModelDeltaMask(); + + /** + * Translates and returns the given child count from the model coordinate + * space to the viewer coordinate space. + * + * @param parentPath path to parent element + * @param count child count element in model (raw) space + * @return child count in viewer (filtered) space + */ + int modelToViewChildCount(TreePath parentPath, int count); + + /** + * Registers the specified listener for view update notifications. + * @param listener Listener to add + */ + void addViewerUpdateListener(IViewerUpdateListener listener); + + /** + * Removes the specified listener from update notifications. + * @param listener Listener to remove + */ + void removeViewerUpdateListener(IViewerUpdateListener listener); + + /** + * Registers the given listener for model delta notification. + * This listener is called immediately after the viewer processes + * the delta. + * @param listener Listener to add + */ + void addModelChangedListener(IModelChangedListener listener); + + /** + * Removes the given listener from model delta notification. + * @param listener Listener to remove + */ + void removeModelChangedListener(IModelChangedListener listener); + + /** + * Causes the content provider to save the expansion and selection state + * of given element. The state is then restored as the tree is lazily + * re-populated. + * @param path Path of the element to save. + */ + void preserveState(TreePath path); + + /** + * Registers the specified listener for state update notifications. + * @param listener Listener to add + * @since 3.6 + */ + void addStateUpdateListener(IStateUpdateListener listener); + + /** + * Removes the specified listener from state update notifications. + * @param listener Listener to remove + * @since 3.6 + */ + void removeStateUpdateListener(IStateUpdateListener listener); + + /** + * Instructs the content provider to process the given model delta. This + * mechanism can be used to control the view's layout (expanding, selecting + * , etc.) + * + * @param delta The model delta to process. + * @param mask Mask that can be used to suppress processing of some of the + * delta flags + * + * @since 3.6 + */ + void updateModel(IModelDelta delta, int mask); + + /** + * Instructs the content provider to cancel any pending state changes + * (i.e. SELECT, REVEAL, EXPAND, COLLAPSE) for the given path. Pending + * state changes are changes the the viewer plans to re-apply to the + * viewer following a refresh. If the user changes viewer state while + * the viewer is being refreshed, user's change should override the + * previous state. + * + * @param path Path of the element for which to cancel pending changes. + * @param flags Flags indicating the changes to cancel. + */ + void cancelRestore(TreePath path, int flags); + + /** + * Notifies the content provider that a client called {@link Viewer#setInput(Object)}, + * and the viewer input is changed. + * This method is guaranteed to be called after {@link IContentProvider#inputChanged(Viewer, Object, Object)} + * + * @param viewer The viewer that uses this content provider. + * @param oldInput Old input object. + * @param newInput New input object. + * + * @since 3.8 + */ + void postInputChanged(IInternalTreeModelViewer viewer, Object oldInput, Object newInput); + + /** + * Notifies the receiver that the given element has had its + * checked state modified in the viewer. + * + * @param path Path of the element that had its checked state changed + * @param checked The new checked state of the element + * @return false if the check state should not change + */ + boolean setChecked(TreePath path, boolean checked); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ITreeModelLabelProvider.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ITreeModelLabelProvider.java index da09cf204..f9e720e28 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ITreeModelLabelProvider.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ITreeModelLabelProvider.java @@ -31,50 +31,50 @@ import org.eclipse.swt.graphics.RGB; */ public interface ITreeModelLabelProvider extends IBaseLabelProvider { - /** - * Requests an label update label of the given element. - * @param elementPath Element to update. - * @return true if element label provider is found and update will - * be requested. - */ - boolean update(TreePath elementPath); + /** + * Requests an label update label of the given element. + * @param elementPath Element to update. + * @return true if element label provider is found and update will + * be requested. + */ + boolean update(TreePath elementPath); - /** - * Registers the specified listener for view label update notifications. - * @param listener Listener to add - */ - void addLabelUpdateListener(ILabelUpdateListener listener); + /** + * Registers the specified listener for view label update notifications. + * @param listener Listener to add + */ + void addLabelUpdateListener(ILabelUpdateListener listener); - /** - * Removes the specified listener from view label update notifications. - * @param listener Listener to remove - */ - void removeLabelUpdateListener(ILabelUpdateListener listener); + /** + * Removes the specified listener from view label update notifications. + * @param listener Listener to remove + */ + void removeLabelUpdateListener(ILabelUpdateListener listener); - /** - * Returns an image for the given image descriptor or <code>null</code>. Adds the image - * to a cache of images if it does not already exist. - * - * @param descriptor image descriptor or <code>null</code> - * @return image or <code>null</code> - */ - Image getImage(ImageDescriptor descriptor); + /** + * Returns an image for the given image descriptor or <code>null</code>. Adds the image + * to a cache of images if it does not already exist. + * + * @param descriptor image descriptor or <code>null</code> + * @return image or <code>null</code> + */ + Image getImage(ImageDescriptor descriptor); - /** - * Returns a font for the given font data or <code>null</code>. Adds the font to the font - * cache if not yet created. - * - * @param fontData font data or <code>null</code> - * @return font font or <code>null</code> - */ - Font getFont(FontData fontData); + /** + * Returns a font for the given font data or <code>null</code>. Adds the font to the font + * cache if not yet created. + * + * @param fontData font data or <code>null</code> + * @return font font or <code>null</code> + */ + Font getFont(FontData fontData); - /** - * Returns a color for the given RGB or <code>null</code>. Adds the color to the color - * cache if not yet created. - * - * @param rgb RGB or <code>null</code> - * @return color or <code>null</code> - */ - Color getColor(RGB rgb); + /** + * Returns a color for the given RGB or <code>null</code>. Adds the color to the color + * cache if not yet created. + * + * @param rgb RGB or <code>null</code> + * @return color or <code>null</code> + */ + Color getColor(RGB rgb); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/InternalTreeModelViewer.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/InternalTreeModelViewer.java index 20bfcc8e1..3bc99b786 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/InternalTreeModelViewer.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/InternalTreeModelViewer.java @@ -82,41 +82,41 @@ public class InternalTreeModelViewer extends TreeViewer implements IInternalTree private final IPresentationContext fContext; - /** - * Current column presentation or <code>null</code> - */ - private IColumnPresentation fColumnPresentation = null; - - /** - * Map of columns presentation id to its visible columns id's (String[]) - * When a columns presentation is not in the map, default settings are used. - */ + /** + * Current column presentation or <code>null</code> + */ + private IColumnPresentation fColumnPresentation = null; + + /** + * Map of columns presentation id to its visible columns id's (String[]) + * When a columns presentation is not in the map, default settings are used. + */ private final Map<String, String[]> fVisibleColumns = new HashMap<>(); - /** - * Map of column id's to persisted sizes - */ + /** + * Map of column id's to persisted sizes + */ private final Map<Object, Integer> fColumnSizes = new HashMap<>(); - /** - * Map of column presentation id's to an array of integers representing the column order - * for that presentation, or <code>null</code> if default. - */ + /** + * Map of column presentation id's to an array of integers representing the column order + * for that presentation, or <code>null</code> if default. + */ private final Map<String, int[]> fColumnOrder = new HashMap<>(); - /** - * Map of column presentation id to whether columns should be displayed - * for that presentation (the user can toggle columns on/off when a - * presentation is optional. - */ + /** + * Map of column presentation id to whether columns should be displayed + * for that presentation (the user can toggle columns on/off when a + * presentation is optional. + */ private final Map<String, Boolean> fShowColumns = new HashMap<>(); - /** - * Item's tree path cache - */ - private static final String TREE_PATH_KEY = "TREE_PATH_KEY"; //$NON-NLS-1$ + /** + * Item's tree path cache + */ + private static final String TREE_PATH_KEY = "TREE_PATH_KEY"; //$NON-NLS-1$ - /** + /** * Memento type for column sizes. Sizes are keyed by column presentation id */ private static final String COLUMN_SIZES = "COLUMN_SIZES"; //$NON-NLS-1$ @@ -190,15 +190,15 @@ public class InternalTreeModelViewer extends TreeViewer implements IInternalTree if (fModifier.canModify(element, property)) { // install cell editor CellEditor cellEditor = editor.getCellEditor(getPresentationContext(), property, element, (Composite)getControl()); - if (cellEditor != null) { - disposeCellEditors(); - CellEditor[] newEditors = new CellEditor[getVisibleColumns().length]; - for (int i = 0; i < newEditors.length; i++) { + if (cellEditor != null) { + disposeCellEditors(); + CellEditor[] newEditors = new CellEditor[getVisibleColumns().length]; + for (int i = 0; i < newEditors.length; i++) { newEditors[i] = cellEditor; } - setCellEditors(newEditors); - return true; - } + setCellEditors(newEditors); + return true; + } } } } @@ -271,12 +271,12 @@ public class InternalTreeModelViewer extends TreeViewer implements IInternalTree // A pop-up viewer is transient and does not automatically expand // and select elements up when requested by the model if ((style & SWT.POP_UP) != 0) { - ((ITreeModelContentProvider)getContentProvider()).setModelDeltaMask( - ~ITreeModelContentProvider.CONTROL_MODEL_DELTA_FLAGS); + ((ITreeModelContentProvider)getContentProvider()).setModelDeltaMask( + ~ITreeModelContentProvider.CONTROL_MODEL_DELTA_FLAGS); + } + if ((style & SWT.CHECK) != 0) { + context.setProperty(ICheckUpdate.PROP_CHECK, Boolean.TRUE); } - if ((style & SWT.CHECK) != 0) { - context.setProperty(ICheckUpdate.PROP_CHECK, Boolean.TRUE); - } } /** @@ -346,14 +346,14 @@ public class InternalTreeModelViewer extends TreeViewer implements IInternalTree item.setBackground(i, (Color) backgrounds[i]); } } - Boolean checked = (Boolean) item.getData(PREV_CHECKED_KEY); - if (checked != null) { - item.setChecked(checked.booleanValue()); - } - Boolean grayed = (Boolean) item.getData(PREV_GRAYED_KEY); - if (grayed != null) { - item.setGrayed(grayed.booleanValue()); - } + Boolean checked = (Boolean) item.getData(PREV_CHECKED_KEY); + if (checked != null) { + item.setChecked(checked.booleanValue()); + } + Boolean grayed = (Boolean) item.getData(PREV_GRAYED_KEY); + if (grayed != null) { + item.setGrayed(grayed.booleanValue()); + } } /* @@ -362,23 +362,23 @@ public class InternalTreeModelViewer extends TreeViewer implements IInternalTree */ @Override protected void handleInvalidSelection(ISelection selection, ISelection newSelection) { - IModelSelectionPolicy selectionPolicy = ViewerAdapterService.getSelectionPolicy(selection, getPresentationContext()); - if (selectionPolicy != null) { - while (!selection.equals(newSelection)) { - ISelection temp = newSelection; - selection = selectionPolicy.replaceInvalidSelection(selection, newSelection); - if (selection == null) { - selection = TreeSelection.EMPTY; - } - if (!temp.equals(selection)) { - setSelectionToWidget(selection, false); - newSelection = getSelection(); - } else { - break; - } - } - } - super.handleInvalidSelection(selection, newSelection); + IModelSelectionPolicy selectionPolicy = ViewerAdapterService.getSelectionPolicy(selection, getPresentationContext()); + if (selectionPolicy != null) { + while (!selection.equals(newSelection)) { + ISelection temp = newSelection; + selection = selectionPolicy.replaceInvalidSelection(selection, newSelection); + if (selection == null) { + selection = TreeSelection.EMPTY; + } + if (!temp.equals(selection)) { + setSelectionToWidget(selection, false); + newSelection = getSelection(); + } else { + break; + } + } + } + super.handleInvalidSelection(selection, newSelection); } @Override @@ -405,7 +405,7 @@ public class InternalTreeModelViewer extends TreeViewer implements IInternalTree protected void unmapElement(Object element, Widget widget) { if (fNotifyUnmap) { // TODO: should we update the filter with the "new non-identical element"? - ((ITreeModelContentProvider) getContentProvider()).unmapPath((TreePath) widget.getData(TREE_PATH_KEY)); + ((ITreeModelContentProvider) getContentProvider()).unmapPath((TreePath) widget.getData(TREE_PATH_KEY)); } super.unmapElement(element, widget); } @@ -468,20 +468,20 @@ public class InternalTreeModelViewer extends TreeViewer implements IInternalTree @Override protected void unmapAllElements() { - // Do nothing when called from StructuredViewer.setInput(), to avoid - // clearing elements before viewer state is saved. - // Bug 326917 - if (getControl().isDisposed()) { - unmapAllElements(); - } + // Do nothing when called from StructuredViewer.setInput(), to avoid + // clearing elements before viewer state is saved. + // Bug 326917 + if (getControl().isDisposed()) { + unmapAllElements(); + } } @Override protected void inputChanged(Object input, Object oldInput) { - fCellModifier.clear(); - // Clear items map now that ITreeModelContentProvider.inputChanged() was already called. - // Bug 326917 - super.unmapAllElements(); + fCellModifier.clear(); + // Clear items map now that ITreeModelContentProvider.inputChanged() was already called. + // Bug 326917 + super.unmapAllElements(); ((ITreeModelContentProvider)getContentProvider()).postInputChanged(this, oldInput, input); super.inputChanged(input, oldInput); @@ -489,19 +489,19 @@ public class InternalTreeModelViewer extends TreeViewer implements IInternalTree } /** - * Configures the columns for the given viewer input. - * - * @param input the viewer input - */ - protected void resetColumns(Object input) { - if (input != null) { - // only change columns if the input is non-null (persist when empty) - IColumnPresentationFactory factory = ViewerAdapterService.getColumnPresentationFactory(input); - PresentationContext context = (PresentationContext) getPresentationContext(); - String type = null; - if (factory != null) { - type = factory.getColumnPresentationId(context, input); - } + * Configures the columns for the given viewer input. + * + * @param input the viewer input + */ + protected void resetColumns(Object input) { + if (input != null) { + // only change columns if the input is non-null (persist when empty) + IColumnPresentationFactory factory = ViewerAdapterService.getColumnPresentationFactory(input); + PresentationContext context = (PresentationContext) getPresentationContext(); + String type = null; + if (factory != null) { + type = factory.getColumnPresentationId(context, input); + } if (type != null && factory != null) { if (fColumnPresentation != null) { if (!fColumnPresentation.getId().equals(type)) { @@ -524,14 +524,14 @@ public class InternalTreeModelViewer extends TreeViewer implements IInternalTree configureColumns(); } } - } - } - - /** - * Configures the columns based on the current settings. - */ - protected void configureColumns() { - if (fColumnPresentation != null) { + } + } + + /** + * Configures the columns based on the current settings. + */ + protected void configureColumns() { + if (fColumnPresentation != null) { IColumnPresentation build = null; if (isShowColumns(fColumnPresentation.getId())) { build = fColumnPresentation; @@ -541,7 +541,7 @@ public class InternalTreeModelViewer extends TreeViewer implements IInternalTree // get rid of columns buildColumns(null); } - } + } /** * Toggles columns on/off for the current column presentation, if any. @@ -608,33 +608,33 @@ public class InternalTreeModelViewer extends TreeViewer implements IInternalTree @Override protected void internalRefresh(Object element, boolean updateLabels) { - ITreeModelContentProvider contentProvider = (ITreeModelContentProvider)getContentProvider(); - - if (element == null) { - internalRefresh(getControl(), getRoot(), true, updateLabels); - contentProvider.preserveState(TreePath.EMPTY); - } else { - Widget[] items = findItems(element); - if (items.length != 0) { - for (int i = 0; i < items.length; i++) { - if (items[i] instanceof TreeItem) { - contentProvider.preserveState(getTreePathFromItem((TreeItem)items[i])); - } else { - contentProvider.preserveState(TreePath.EMPTY); - } - } - } - } - super.internalRefresh(element, updateLabels); - } - - /** - * Refreshes the columns in the view, based on the viewer input. - */ - protected void refreshColumns() { - configureColumns(); - refresh(); - } + ITreeModelContentProvider contentProvider = (ITreeModelContentProvider)getContentProvider(); + + if (element == null) { + internalRefresh(getControl(), getRoot(), true, updateLabels); + contentProvider.preserveState(TreePath.EMPTY); + } else { + Widget[] items = findItems(element); + if (items.length != 0) { + for (int i = 0; i < items.length; i++) { + if (items[i] instanceof TreeItem) { + contentProvider.preserveState(getTreePathFromItem((TreeItem)items[i])); + } else { + contentProvider.preserveState(TreePath.EMPTY); + } + } + } + } + super.internalRefresh(element, updateLabels); + } + + /** + * Refreshes the columns in the view, based on the viewer input. + */ + protected void refreshColumns() { + configureColumns(); + refresh(); + } /** * Returns whether columns are being displayed currently. @@ -665,28 +665,28 @@ public class InternalTreeModelViewer extends TreeViewer implements IInternalTree return bool.booleanValue(); } - /** - * Creates new columns for the given presentation. - * - * TODO: does this need to be asynchronous? - * - * @param presentation the column presentation to build from - */ - protected void buildColumns(IColumnPresentation presentation) { - // dispose current columns, persisting their weights - Tree tree = getTree(); + /** + * Creates new columns for the given presentation. + * + * TODO: does this need to be asynchronous? + * + * @param presentation the column presentation to build from + */ + protected void buildColumns(IColumnPresentation presentation) { + // dispose current columns, persisting their weights + Tree tree = getTree(); final TreeColumn[] columns = tree.getColumns(); String[] visibleColumnIds = getVisibleColumns(); // remove all listeners before disposing - see bug 223233 - for (int i = 0; i < columns.length; i++) { - columns[i].removeControlListener(fListener); - } - for (int i = 0; i < columns.length; i++) { + for (int i = 0; i < columns.length; i++) { + columns[i].removeControlListener(fListener); + } + for (int i = 0; i < columns.length; i++) { columns[i].dispose(); } - PresentationContext presentationContext = (PresentationContext) getPresentationContext(); - if (presentation != null) { - for (int i = 0; i < visibleColumnIds.length; i++) { + PresentationContext presentationContext = (PresentationContext) getPresentationContext(); + if (presentation != null) { + for (int i = 0; i < visibleColumnIds.length; i++) { String id = visibleColumnIds[i]; String header = presentation.getHeader(id); // TODO: allow client to specify style @@ -700,68 +700,68 @@ public class InternalTreeModelViewer extends TreeViewer implements IInternalTree } column.setData(id); } - int[] order = fColumnOrder.get(presentation.getId()); - if (order != null) { - tree.setColumnOrder(order); - } - tree.setHeaderVisible(true); - tree.setLinesVisible(true); - presentationContext.setColumns(visibleColumnIds); - setColumnProperties(visibleColumnIds); - setCellModifier(fCellModifier); - } else { - tree.setHeaderVisible(false); - tree.setLinesVisible(false); - presentationContext.setColumns(null); - setCellModifier(null); - setColumnProperties(null); - } - - int treeWidgetWidth = tree.getSize().x; - int avg = treeWidgetWidth; - if (visibleColumnIds != null) { + int[] order = fColumnOrder.get(presentation.getId()); + if (order != null) { + tree.setColumnOrder(order); + } + tree.setHeaderVisible(true); + tree.setLinesVisible(true); + presentationContext.setColumns(visibleColumnIds); + setColumnProperties(visibleColumnIds); + setCellModifier(fCellModifier); + } else { + tree.setHeaderVisible(false); + tree.setLinesVisible(false); + presentationContext.setColumns(null); + setCellModifier(null); + setColumnProperties(null); + } + + int treeWidgetWidth = tree.getSize().x; + int avg = treeWidgetWidth; + if (visibleColumnIds != null) { avg /= visibleColumnIds.length; } - if (avg == 0) { - tree.addPaintListener(new PaintListener() { - @Override + if (avg == 0) { + tree.addPaintListener(new PaintListener() { + @Override public void paintControl(PaintEvent e) { - Tree tree2 = getTree(); - String[] visibleColumns = getVisibleColumns(); - if (visibleColumns != null) { - int treeWidgetWidth1 = tree2.getSize().x; + Tree tree2 = getTree(); + String[] visibleColumns = getVisibleColumns(); + if (visibleColumns != null) { + int treeWidgetWidth1 = tree2.getSize().x; int avg1 = treeWidgetWidth1 / visibleColumns.length; - initColumns(avg1, treeWidgetWidth1, visibleColumns); - } - tree2.removePaintListener(this); - } - }); - } else { - initColumns(avg, treeWidgetWidth, visibleColumnIds); - } - } - - private void initColumns(int widthHint, int treeWidgetWidth, String[] visibleColumnIds) { - TreeColumn[] columns = getTree().getColumns(); - for (int i = 0; i < columns.length; i++) { - TreeColumn treeColumn = columns[i]; - Object colData = treeColumn.getData(); - String columnId = colData instanceof String ? (String) colData : null; - Integer width = fColumnSizes.get(colData); - if (width == null) { - int ans = getInitialColumnWidth(columnId, treeWidgetWidth, visibleColumnIds); - if (ans == -1) { - treeColumn.setWidth(widthHint); - } else { - treeColumn.setWidth(ans); - } - } else { - treeColumn.setWidth(width.intValue()); - } - treeColumn.addControlListener(fListener); - } - } + initColumns(avg1, treeWidgetWidth1, visibleColumns); + } + tree2.removePaintListener(this); + } + }); + } else { + initColumns(avg, treeWidgetWidth, visibleColumnIds); + } + } + + private void initColumns(int widthHint, int treeWidgetWidth, String[] visibleColumnIds) { + TreeColumn[] columns = getTree().getColumns(); + for (int i = 0; i < columns.length; i++) { + TreeColumn treeColumn = columns[i]; + Object colData = treeColumn.getData(); + String columnId = colData instanceof String ? (String) colData : null; + Integer width = fColumnSizes.get(colData); + if (width == null) { + int ans = getInitialColumnWidth(columnId, treeWidgetWidth, visibleColumnIds); + if (ans == -1) { + treeColumn.setWidth(widthHint); + } else { + treeColumn.setWidth(ans); + } + } else { + treeColumn.setWidth(width.intValue()); + } + treeColumn.addControlListener(fListener); + } + } /** * Returns the current column presentation for this viewer, or <code>null</code> @@ -788,25 +788,25 @@ public class InternalTreeModelViewer extends TreeViewer implements IInternalTree if (columns == null) { return presentation.getInitialColumns(); } else { - String[] available = presentation.getAvailableColumns(); - for (int i = 0; i < columns.length; i++) { - boolean columnAvailable = false; - for (int j = 0; j < available.length; j++) { - if (columns[i].equals(available[j])) { + String[] available = presentation.getAvailableColumns(); + for (int i = 0; i < columns.length; i++) { + boolean columnAvailable = false; + for (int j = 0; j < available.length; j++) { + if (columns[i].equals(available[j])) { columnAvailable = true; } - } - - if (!columnAvailable || presentation.getHeader(columns[i]) == null) { - // We found a column ID which is not in current list of available column IDs. - // Or the presentation cannot return a header title for the given column. - // Clear out saved column data for given column presentation. - fVisibleColumns.remove(presentation.getId()); - fColumnOrder.remove(presentation.getId()); - fColumnSizes.remove(presentation.getId()); - return presentation.getInitialColumns(); - } - } + } + + if (!columnAvailable || presentation.getHeader(columns[i]) == null) { + // We found a column ID which is not in current list of available column IDs. + // Or the presentation cannot return a header title for the given column. + // Clear out saved column data for given column presentation. + fVisibleColumns.remove(presentation.getId()); + fColumnOrder.remove(presentation.getId()); + fColumnSizes.remove(presentation.getId()); + return presentation.getInitialColumns(); + } + } } return columns; } @@ -834,9 +834,9 @@ public class InternalTreeModelViewer extends TreeViewer implements IInternalTree } /** - * Persists column sizes in cache - */ - protected void persistColumnSizes() { + * Persists column sizes in cache + */ + protected void persistColumnSizes() { Tree tree = getTree(); TreeColumn[] columns = tree.getColumns(); for (int i = 0; i < columns.length; i++) { @@ -844,29 +844,29 @@ public class InternalTreeModelViewer extends TreeViewer implements IInternalTree Object id = treeColumn.getData(); fColumnSizes.put(id, Integer.valueOf(treeColumn.getWidth())); } - } - - /** - * Persists column ordering - */ - protected void persistColumnOrder() { - IColumnPresentation presentation = getColumnPresentation(); - if (presentation != null) { - Tree tree = getTree(); - int[] order = tree.getColumnOrder(); - if (order.length > 0) { - for (int i = 0; i < order.length; i++) { + } + + /** + * Persists column ordering + */ + protected void persistColumnOrder() { + IColumnPresentation presentation = getColumnPresentation(); + if (presentation != null) { + Tree tree = getTree(); + int[] order = tree.getColumnOrder(); + if (order.length > 0) { + for (int i = 0; i < order.length; i++) { if (i != order[i]) { // non default order fColumnOrder.put(presentation.getId(), order); return; } } - } - // default order - fColumnOrder.remove(presentation.getId()); - } - } + } + // default order + fColumnOrder.remove(presentation.getId()); + } + } /** * Save viewer state into the given memento. @@ -1022,7 +1022,7 @@ public class InternalTreeModelViewer extends TreeViewer implements IInternalTree return false; } /** - * Registers the specified listener for view update notifications. + * Registers the specified listener for view update notifications. * * @param listener listener */ @@ -1038,7 +1038,7 @@ public class InternalTreeModelViewer extends TreeViewer implements IInternalTree */ @Override public void removeViewerUpdateListener(IViewerUpdateListener listener) { - ITreeModelContentProvider cp = (ITreeModelContentProvider)getContentProvider(); + ITreeModelContentProvider cp = (ITreeModelContentProvider)getContentProvider(); if (cp != null) { cp.removeViewerUpdateListener(listener); } @@ -1061,24 +1061,24 @@ public class InternalTreeModelViewer extends TreeViewer implements IInternalTree */ @Override public void removeModelChangedListener(IModelChangedListener listener) { - ITreeModelContentProvider cp = (ITreeModelContentProvider)getContentProvider(); + ITreeModelContentProvider cp = (ITreeModelContentProvider)getContentProvider(); if (cp != null) { cp.removeModelChangedListener(listener); } } - @Override + @Override public void addStateUpdateListener(IStateUpdateListener listener) { - ((ITreeModelContentProvider)getContentProvider()).addStateUpdateListener(listener); - } + ((ITreeModelContentProvider)getContentProvider()).addStateUpdateListener(listener); + } - @Override + @Override public void removeStateUpdateListener(IStateUpdateListener listener) { - ITreeModelContentProvider cp = (ITreeModelContentProvider)getContentProvider(); - if (cp != null) { - cp.removeStateUpdateListener(listener); - } - } + ITreeModelContentProvider cp = (ITreeModelContentProvider)getContentProvider(); + if (cp != null) { + cp.removeStateUpdateListener(listener); + } + } @Override protected void doUpdateItem(final Item item, Object element) { @@ -1092,9 +1092,9 @@ public class InternalTreeModelViewer extends TreeViewer implements IInternalTree } if ( !((ITreeModelLabelProvider)getLabelProvider()).update(getTreePathFromItem(item)) ) { - if (element instanceof String) { - item.setData(PREV_LABEL_KEY, new String[] { (String)element } ); - } + if (element instanceof String) { + item.setData(PREV_LABEL_KEY, new String[] { (String)element } ); + } } @@ -1107,14 +1107,14 @@ public class InternalTreeModelViewer extends TreeViewer implements IInternalTree @Override public void addLabelUpdateListener(ILabelUpdateListener listener) { - ((ITreeModelLabelProvider)getLabelProvider()).addLabelUpdateListener(listener); + ((ITreeModelLabelProvider)getLabelProvider()).addLabelUpdateListener(listener); } @Override public void removeLabelUpdateListener(ILabelUpdateListener listener) { - if (!getControl().isDisposed()) { - ((ITreeModelLabelProvider)getLabelProvider()).removeLabelUpdateListener(listener); - } + if (!getControl().isDisposed()) { + ((ITreeModelLabelProvider)getLabelProvider()).removeLabelUpdateListener(listener); + } } /** @@ -1271,50 +1271,50 @@ public class InternalTreeModelViewer extends TreeViewer implements IInternalTree //************************************************************************** // Another couple of methods copied from TreeViewer to workaround the UI bug 266189. // - @Override + @Override protected void createChildren(Widget widget) { - Object element = widget.getData(); - if (element == null && widget instanceof TreeItem) { - // parent has not been materialized - virtualMaterializeItem((TreeItem) widget); - // try getting the element now that updateElement was called - element = widget.getData(); - } - if (element == null) { - // give up because the parent is still not materialized - return; - } - Item[] children = getChildren(widget); - if (children.length == 1 && children[0].getData() == null) { - // found a dummy node - virtualLazyUpdateChildCount(widget, children.length); - children = getChildren(widget); - } - // DO NOT touch all children - return; - } - - private void virtualMaterializeItem(TreeItem treeItem) { - if (treeItem.getData() != null) { - // already materialized - return; - } - - int index; - Widget parent = treeItem.getParentItem(); - if (parent == null) { - parent = treeItem.getParent(); - } - Object parentElement = parent.getData(); - if (parentElement != null) { - if (parent instanceof Tree) { - index = ((Tree) parent).indexOf(treeItem); - } else { - index = ((TreeItem) parent).indexOf(treeItem); - } - virtualLazyUpdateWidget(parent, index); - } - } + Object element = widget.getData(); + if (element == null && widget instanceof TreeItem) { + // parent has not been materialized + virtualMaterializeItem((TreeItem) widget); + // try getting the element now that updateElement was called + element = widget.getData(); + } + if (element == null) { + // give up because the parent is still not materialized + return; + } + Item[] children = getChildren(widget); + if (children.length == 1 && children[0].getData() == null) { + // found a dummy node + virtualLazyUpdateChildCount(widget, children.length); + children = getChildren(widget); + } + // DO NOT touch all children + return; + } + + private void virtualMaterializeItem(TreeItem treeItem) { + if (treeItem.getData() != null) { + // already materialized + return; + } + + int index; + Widget parent = treeItem.getParentItem(); + if (parent == null) { + parent = treeItem.getParent(); + } + Object parentElement = parent.getData(); + if (parentElement != null) { + if (parent instanceof Tree) { + index = ((Tree) parent).indexOf(treeItem); + } else { + index = ((TreeItem) parent).indexOf(treeItem); + } + virtualLazyUpdateWidget(parent, index); + } + } /** @@ -1333,470 +1333,470 @@ public class InternalTreeModelViewer extends TreeViewer implements IInternalTree } } - @Override + @Override public int findElementIndex(TreePath parentPath, Object element) { - Widget parentItem = findItem(parentPath); - if (parentItem != null) { - Item[] children = getChildren(parentItem); - for (int i = 0; i < children.length; i++) { - Item item = children[i]; - Object data = item.getData(); - if ( (element != null && element.equals(data)) || (element == null && data == null) ) { - return i; - } - } - } - return -1; - } - - @Override + Widget parentItem = findItem(parentPath); + if (parentItem != null) { + Item[] children = getChildren(parentItem); + for (int i = 0; i < children.length; i++) { + Item item = children[i]; + Object data = item.getData(); + if ( (element != null && element.equals(data)) || (element == null && data == null) ) { + return i; + } + } + } + return -1; + } + + @Override public boolean getElementChildrenRealized(TreePath parentPath) { - Widget parentItem = findItem(parentPath); - if (parentItem != null) { - Item[] children = getChildren(parentItem); - for (int i = 0; i < children.length; i++) { - if (children[i].getData() == null) { - return false; - } - } - } - return true; - } - - @Override + Widget parentItem = findItem(parentPath); + if (parentItem != null) { + Item[] children = getChildren(parentItem); + for (int i = 0; i < children.length; i++) { + if (children[i].getData() == null) { + return false; + } + } + } + return true; + } + + @Override public Display getDisplay() { - Control control = getControl(); + Control control = getControl(); if (control != null && !control.isDisposed()) { - return control.getDisplay(); - } - return null; - } + return control.getDisplay(); + } + return null; + } - protected static final String[] STATE_PROPERTIES = new String[]{ IBasicPropertyConstants.P_TEXT, IBasicPropertyConstants.P_IMAGE }; + protected static final String[] STATE_PROPERTIES = new String[]{ IBasicPropertyConstants.P_TEXT, IBasicPropertyConstants.P_IMAGE }; - @Override + @Override public void update(Object element) { - update(element, STATE_PROPERTIES); - } - - /** - * Label data cache keys - * TODO: workaround for bug 159461 - */ - static String PREV_LABEL_KEY = "PREV_LABEL_KEY"; //$NON-NLS-1$ - static String PREV_IMAGE_KEY = "PREV_IMAGE_KEY"; //$NON-NLS-1$ - static String PREV_FONT_KEY = "PREV_FONT_KEY"; //$NON-NLS-1$ - static String PREV_FOREGROUND_KEY = "PREV_FOREGROUND_KEY"; //$NON-NLS-1$ - static String PREV_BACKGROUND_KEY = "PREV_BACKGROUND_KEY"; //$NON-NLS-1$ - static String PREV_CHECKED_KEY = "PREV_CHECKED_KEY"; //$NON-NLS-1$ - static String PREV_GRAYED_KEY = "PREV_GRAYED_KEY"; //$NON-NLS-1$ - - @Override + update(element, STATE_PROPERTIES); + } + + /** + * Label data cache keys + * TODO: workaround for bug 159461 + */ + static String PREV_LABEL_KEY = "PREV_LABEL_KEY"; //$NON-NLS-1$ + static String PREV_IMAGE_KEY = "PREV_IMAGE_KEY"; //$NON-NLS-1$ + static String PREV_FONT_KEY = "PREV_FONT_KEY"; //$NON-NLS-1$ + static String PREV_FOREGROUND_KEY = "PREV_FOREGROUND_KEY"; //$NON-NLS-1$ + static String PREV_BACKGROUND_KEY = "PREV_BACKGROUND_KEY"; //$NON-NLS-1$ + static String PREV_CHECKED_KEY = "PREV_CHECKED_KEY"; //$NON-NLS-1$ + static String PREV_GRAYED_KEY = "PREV_GRAYED_KEY"; //$NON-NLS-1$ + + @Override public void setElementData(TreePath path, int numColumns, String[] labels, ImageDescriptor[] imageDescriptors, - FontData[] fontDatas, RGB[] _foregrounds, RGB[] _backgrounds) - { - Widget widget = findItem(path); - String[] columnIds = getVisibleColumns(); - - if (widget != null && widget instanceof TreeItem && !widget.isDisposed()) { - TreeItem item = (TreeItem)widget; - /*Object data = item.getData(); - int itemCount = item.getItemCount(); - item.clearAll(false); - item.setData(data); - item.setItemCount(itemCount);*/ - - for (int i=0; i<numColumns; i++){ - // text might be null if the launch has been terminated - item.setText(i,(labels[i] == null ? IInternalDebugCoreConstants.EMPTY_STRING : labels[i])); - } - item.setData(PREV_LABEL_KEY, labels); - - if (imageDescriptors == null) { - for (int i=0; i<numColumns; i++){ - item.setImage(i,null); - } - item.setData(PREV_IMAGE_KEY, null); - } else { - Image[] images = new Image[imageDescriptors.length]; - for (int i = 0; i < imageDescriptors.length; i++) { - images[i] = ((ITreeModelLabelProvider)getLabelProvider()).getImage(imageDescriptors[i]); - } - if (columnIds == null) { - item.setImage(images[0]); - } else { - item.setImage(images); - } - item.setData(PREV_IMAGE_KEY, images); - } - - if (_foregrounds == null) { - for (int i=0; i<numColumns; i++){ - item.setForeground(i,null); - } - item.setData(PREV_FOREGROUND_KEY, null); - } else { - Color[] foregrounds = new Color[_foregrounds.length]; - for (int i = 0; i< foregrounds.length; i++) { - foregrounds[i] = ((ITreeModelLabelProvider)getLabelProvider()).getColor(_foregrounds[i]); - } - if (columnIds == null) { - item.setForeground(0,foregrounds[0]); - } else { - for (int i = 0; i< foregrounds.length; i++) { - item.setForeground(i, foregrounds[i]); - } - } - item.setData(PREV_FOREGROUND_KEY, foregrounds); - } - - if (_backgrounds == null) { - for (int i=0; i<numColumns; i++){ - item.setBackground(i,null); - } - item.setData(PREV_BACKGROUND_KEY, null); - } else { - Color[] backgrounds = new Color[_backgrounds.length]; - for (int i = 0; i< backgrounds.length; i++) { - backgrounds[i] = ((ITreeModelLabelProvider)getLabelProvider()).getColor(_backgrounds[i]); - } - if (columnIds == null) { - item.setBackground(0,backgrounds[0]); - } else { - for (int i = 0; i< backgrounds.length; i++) { - item.setBackground(i, backgrounds[i]); - } - } - item.setData(PREV_BACKGROUND_KEY, backgrounds); - } - - if (fontDatas == null) { - for (int i=0; i<numColumns; i++){ - item.setFont(i,null); - } - item.setData(PREV_FONT_KEY, null); - } else { - Font[] fonts = new Font[fontDatas.length]; - for (int i = 0; i < fontDatas.length; i++) { - fonts[i] = ((ITreeModelLabelProvider)getLabelProvider()).getFont(fontDatas[i]); - } - if (columnIds == null) { - item.setFont(0,fonts[0]); - } else { - for (int i = 0; i < fonts.length; i++) { - item.setFont(i, fonts[i]); - } - } - item.setData(PREV_FONT_KEY, fonts); - } - } - } - - @Override + FontData[] fontDatas, RGB[] _foregrounds, RGB[] _backgrounds) + { + Widget widget = findItem(path); + String[] columnIds = getVisibleColumns(); + + if (widget != null && widget instanceof TreeItem && !widget.isDisposed()) { + TreeItem item = (TreeItem)widget; + /*Object data = item.getData(); + int itemCount = item.getItemCount(); + item.clearAll(false); + item.setData(data); + item.setItemCount(itemCount);*/ + + for (int i=0; i<numColumns; i++){ + // text might be null if the launch has been terminated + item.setText(i,(labels[i] == null ? IInternalDebugCoreConstants.EMPTY_STRING : labels[i])); + } + item.setData(PREV_LABEL_KEY, labels); + + if (imageDescriptors == null) { + for (int i=0; i<numColumns; i++){ + item.setImage(i,null); + } + item.setData(PREV_IMAGE_KEY, null); + } else { + Image[] images = new Image[imageDescriptors.length]; + for (int i = 0; i < imageDescriptors.length; i++) { + images[i] = ((ITreeModelLabelProvider)getLabelProvider()).getImage(imageDescriptors[i]); + } + if (columnIds == null) { + item.setImage(images[0]); + } else { + item.setImage(images); + } + item.setData(PREV_IMAGE_KEY, images); + } + + if (_foregrounds == null) { + for (int i=0; i<numColumns; i++){ + item.setForeground(i,null); + } + item.setData(PREV_FOREGROUND_KEY, null); + } else { + Color[] foregrounds = new Color[_foregrounds.length]; + for (int i = 0; i< foregrounds.length; i++) { + foregrounds[i] = ((ITreeModelLabelProvider)getLabelProvider()).getColor(_foregrounds[i]); + } + if (columnIds == null) { + item.setForeground(0,foregrounds[0]); + } else { + for (int i = 0; i< foregrounds.length; i++) { + item.setForeground(i, foregrounds[i]); + } + } + item.setData(PREV_FOREGROUND_KEY, foregrounds); + } + + if (_backgrounds == null) { + for (int i=0; i<numColumns; i++){ + item.setBackground(i,null); + } + item.setData(PREV_BACKGROUND_KEY, null); + } else { + Color[] backgrounds = new Color[_backgrounds.length]; + for (int i = 0; i< backgrounds.length; i++) { + backgrounds[i] = ((ITreeModelLabelProvider)getLabelProvider()).getColor(_backgrounds[i]); + } + if (columnIds == null) { + item.setBackground(0,backgrounds[0]); + } else { + for (int i = 0; i< backgrounds.length; i++) { + item.setBackground(i, backgrounds[i]); + } + } + item.setData(PREV_BACKGROUND_KEY, backgrounds); + } + + if (fontDatas == null) { + for (int i=0; i<numColumns; i++){ + item.setFont(i,null); + } + item.setData(PREV_FONT_KEY, null); + } else { + Font[] fonts = new Font[fontDatas.length]; + for (int i = 0; i < fontDatas.length; i++) { + fonts[i] = ((ITreeModelLabelProvider)getLabelProvider()).getFont(fontDatas[i]); + } + if (columnIds == null) { + item.setFont(0,fonts[0]); + } else { + for (int i = 0; i < fonts.length; i++) { + item.setFont(i, fonts[i]); + } + } + item.setData(PREV_FONT_KEY, fonts); + } + } + } + + @Override public ViewerLabel getElementLabel(TreePath path, String columnId) { - if (path.getSegmentCount() == 0) { - return null; - } - - int columnIdx = -1; - String[] visibleColumns = getVisibleColumns(); - if (columnId != null && visibleColumns != null) { - int i = 0; - for (i = 0; i < visibleColumns.length; i++) { - if (columnId.equals(getVisibleColumns()[i])) { - columnIdx = i; - break; - } - } - if (i == visibleColumns.length) { - return null; - } - } else { - columnIdx = 0; - } - TreeItem item = (TreeItem)findItem(path); - - if (item != null) { - ViewerLabel label = new ViewerLabel(item.getText(columnIdx), item.getImage(columnIdx)); - label.setFont(item.getFont(columnIdx)); - label.setBackground(item.getBackground(columnIdx)); - label.setForeground(item.getForeground(columnIdx)); - return label; - } - return null; - } - - @Override + if (path.getSegmentCount() == 0) { + return null; + } + + int columnIdx = -1; + String[] visibleColumns = getVisibleColumns(); + if (columnId != null && visibleColumns != null) { + int i = 0; + for (i = 0; i < visibleColumns.length; i++) { + if (columnId.equals(getVisibleColumns()[i])) { + columnIdx = i; + break; + } + } + if (i == visibleColumns.length) { + return null; + } + } else { + columnIdx = 0; + } + TreeItem item = (TreeItem)findItem(path); + + if (item != null) { + ViewerLabel label = new ViewerLabel(item.getText(columnIdx), item.getImage(columnIdx)); + label.setFont(item.getFont(columnIdx)); + label.setBackground(item.getBackground(columnIdx)); + label.setForeground(item.getForeground(columnIdx)); + return label; + } + return null; + } + + @Override public void reveal(TreePath path, int index) { - Widget item = findItem(path); - TreeItem[] children = null; - if (item instanceof TreeItem) { - children = ((TreeItem)item).getItems(); - } else if (item instanceof Tree) { - children = ((Tree)item).getItems(); - } - if (children != null && index < children.length) { - getTree().setTopItem(children[index]); - } - } - - @Override + Widget item = findItem(path); + TreeItem[] children = null; + if (item instanceof TreeItem) { + children = ((TreeItem)item).getItems(); + } else if (item instanceof Tree) { + children = ((Tree)item).getItems(); + } + if (children != null && index < children.length) { + getTree().setTopItem(children[index]); + } + } + + @Override public int getChildCount(TreePath path) { - if (path.getSegmentCount() == 0) { - return ((Tree)getControl()).getItemCount(); - } else { - Widget[] items = internalFindItems(path); - if (items.length > 0) { - if (items[0] instanceof TreeItem) { - return ((TreeItem)items[0]).getItemCount(); - } - } - } - return -1; - } - - @Override + if (path.getSegmentCount() == 0) { + return ((Tree)getControl()).getItemCount(); + } else { + Widget[] items = internalFindItems(path); + if (items.length > 0) { + if (items[0] instanceof TreeItem) { + return ((TreeItem)items[0]).getItemCount(); + } + } + } + return -1; + } + + @Override public Object getChildElement(TreePath path, int index) { - TreeItem childItem = null; - if (path.getSegmentCount() == 0) { - Tree tree = (Tree)getControl(); - try { - childItem = tree.getItem(index); - } catch (IllegalArgumentException e) {} - } else { - try { - Widget[] items = internalFindItems(path); - if (items.length > 0) { - if (items[0] instanceof TreeItem) { - childItem = ((TreeItem)items[0]).getItem(index); - } - } - } catch (IllegalArgumentException e) {} - } - if (childItem != null) { - return childItem.getData(); - } - return null; - } - - @Override + TreeItem childItem = null; + if (path.getSegmentCount() == 0) { + Tree tree = (Tree)getControl(); + try { + childItem = tree.getItem(index); + } catch (IllegalArgumentException e) {} + } else { + try { + Widget[] items = internalFindItems(path); + if (items.length > 0) { + if (items[0] instanceof TreeItem) { + childItem = ((TreeItem)items[0]).getItem(index); + } + } + } catch (IllegalArgumentException e) {} + } + if (childItem != null) { + return childItem.getData(); + } + return null; + } + + @Override public TreePath getTopElementPath() { - TreeItem topItem = ((Tree)getControl()).getTopItem(); + TreeItem topItem = ((Tree)getControl()).getTopItem(); if (topItem != null && !topItem.isDisposed() && topItem.getData() != null) { - return getTreePathFromItem(topItem); - } - return null; - } + return getTreePathFromItem(topItem); + } + return null; + } - @Override + @Override public boolean saveElementState(TreePath path, ModelDelta delta, int flagsToSave) { - Tree tree = (Tree) getControl(); - TreeItem[] selection = tree.getSelection(); + Tree tree = (Tree) getControl(); + TreeItem[] selection = tree.getSelection(); Set<TreeItem> set = new HashSet<>(); - for (int i = 0; i < selection.length; i++) { - set.add(selection[i]); - } - - TreeItem[] items = null; - Widget w = internalGetWidgetToSelect(path); - if (w instanceof Tree) { - delta.setChildCount( - ((ITreeModelContentProvider)getContentProvider()).viewToModelCount(path, tree.getItemCount())); - if ((flagsToSave & IModelDelta.EXPAND) != 0) { - delta.setFlags(delta.getFlags() | IModelDelta.EXPAND); - } - items = tree.getItems(); - } else if (w instanceof TreeItem) { - TreeItem item = (TreeItem)w; - if (item.getExpanded()) { - int itemCount = item.getData() != null ? item.getItemCount() : -1; - delta.setChildCount(((ITreeModelContentProvider)getContentProvider()).viewToModelCount(path, itemCount)); - if ((flagsToSave & IModelDelta.EXPAND) != 0) { - delta.setFlags(delta.getFlags() | IModelDelta.EXPAND); - } - } else if ((flagsToSave & IModelDelta.COLLAPSE) != 0){ - delta.setFlags(delta.getFlags() | IModelDelta.COLLAPSE); - } - - if (set.contains(item) && (flagsToSave & IModelDelta.SELECT) != 0) { - delta.setFlags(delta.getFlags() | IModelDelta.SELECT); - } - items = ((TreeItem)w).getItems(); - } - if (items != null && items.length != 0) { - for (int i = 0; i < items.length; i++) { - doSaveElementState(path, delta, items[i], set, i, flagsToSave); - } - return true; - } else { - return false; - } - } + for (int i = 0; i < selection.length; i++) { + set.add(selection[i]); + } + + TreeItem[] items = null; + Widget w = internalGetWidgetToSelect(path); + if (w instanceof Tree) { + delta.setChildCount( + ((ITreeModelContentProvider)getContentProvider()).viewToModelCount(path, tree.getItemCount())); + if ((flagsToSave & IModelDelta.EXPAND) != 0) { + delta.setFlags(delta.getFlags() | IModelDelta.EXPAND); + } + items = tree.getItems(); + } else if (w instanceof TreeItem) { + TreeItem item = (TreeItem)w; + if (item.getExpanded()) { + int itemCount = item.getData() != null ? item.getItemCount() : -1; + delta.setChildCount(((ITreeModelContentProvider)getContentProvider()).viewToModelCount(path, itemCount)); + if ((flagsToSave & IModelDelta.EXPAND) != 0) { + delta.setFlags(delta.getFlags() | IModelDelta.EXPAND); + } + } else if ((flagsToSave & IModelDelta.COLLAPSE) != 0){ + delta.setFlags(delta.getFlags() | IModelDelta.COLLAPSE); + } + + if (set.contains(item) && (flagsToSave & IModelDelta.SELECT) != 0) { + delta.setFlags(delta.getFlags() | IModelDelta.SELECT); + } + items = ((TreeItem)w).getItems(); + } + if (items != null && items.length != 0) { + for (int i = 0; i < items.length; i++) { + doSaveElementState(path, delta, items[i], set, i, flagsToSave); + } + return true; + } else { + return false; + } + } private void doSaveElementState(TreePath parentPath, ModelDelta delta, TreeItem item, Collection<TreeItem> set, int index, int flagsToSave) { - Object element = item.getData(); - if (element != null) { - boolean expanded = item.getExpanded(); - boolean selected = set.contains(item); - int flags = IModelDelta.NO_CHANGE; - if (expanded && (flagsToSave & IModelDelta.EXPAND) != 0) { - flags = flags | IModelDelta.EXPAND; - } - if (!expanded && (flagsToSave & IModelDelta.COLLAPSE) != 0) { - flags = flags | IModelDelta.COLLAPSE; - } - if (selected && (flagsToSave & IModelDelta.SELECT) != 0) { - flags = flags | IModelDelta.SELECT; - } - if (expanded || flags != IModelDelta.NO_CHANGE) { - int modelIndex = ((ITreeModelContentProvider)getContentProvider()).viewToModelIndex(parentPath, index); - TreePath elementPath = parentPath.createChildPath(element); - ModelDelta childDelta = delta.addNode(element, modelIndex, flags, -1); - if (expanded) { - // Only get the item count if the item is expanded. Getting - // item count triggers an update of the element (bug 335734). - int itemCount = item.getItemCount(); - int numChildren = ((ITreeModelContentProvider)getContentProvider()).viewToModelCount(elementPath, itemCount); - childDelta.setChildCount(numChildren); - TreeItem[] items = item.getItems(); - for (int i = 0; i < items.length; i++) { - doSaveElementState(elementPath, childDelta, items[i], set, i, flagsToSave); - } - } - } - } - } - - @Override + Object element = item.getData(); + if (element != null) { + boolean expanded = item.getExpanded(); + boolean selected = set.contains(item); + int flags = IModelDelta.NO_CHANGE; + if (expanded && (flagsToSave & IModelDelta.EXPAND) != 0) { + flags = flags | IModelDelta.EXPAND; + } + if (!expanded && (flagsToSave & IModelDelta.COLLAPSE) != 0) { + flags = flags | IModelDelta.COLLAPSE; + } + if (selected && (flagsToSave & IModelDelta.SELECT) != 0) { + flags = flags | IModelDelta.SELECT; + } + if (expanded || flags != IModelDelta.NO_CHANGE) { + int modelIndex = ((ITreeModelContentProvider)getContentProvider()).viewToModelIndex(parentPath, index); + TreePath elementPath = parentPath.createChildPath(element); + ModelDelta childDelta = delta.addNode(element, modelIndex, flags, -1); + if (expanded) { + // Only get the item count if the item is expanded. Getting + // item count triggers an update of the element (bug 335734). + int itemCount = item.getItemCount(); + int numChildren = ((ITreeModelContentProvider)getContentProvider()).viewToModelCount(elementPath, itemCount); + childDelta.setChildCount(numChildren); + TreeItem[] items = item.getItems(); + for (int i = 0; i < items.length; i++) { + doSaveElementState(elementPath, childDelta, items[i], set, i, flagsToSave); + } + } + } + } + } + + @Override public void updateViewer(IModelDelta delta) { - ((ITreeModelContentProvider)getContentProvider()).updateModel(delta, ITreeModelContentProvider.ALL_MODEL_DELTA_FLAGS); - } + ((ITreeModelContentProvider)getContentProvider()).updateModel(delta, ITreeModelContentProvider.ALL_MODEL_DELTA_FLAGS); + } @Override public void setElementChecked(TreePath path, boolean checked, boolean grayed) { - Widget widget = findItem(path); + Widget widget = findItem(path); - if (widget != null && widget instanceof TreeItem && !widget.isDisposed()) { - TreeItem item = (TreeItem)widget; + if (widget != null && widget instanceof TreeItem && !widget.isDisposed()) { + TreeItem item = (TreeItem)widget; - item.setChecked(checked); - item.setGrayed(grayed); + item.setChecked(checked); + item.setGrayed(grayed); - item.setData(PREV_CHECKED_KEY, checked ? Boolean.TRUE : Boolean.FALSE); - item.setData(PREV_GRAYED_KEY, grayed ? Boolean.TRUE : Boolean.FALSE); - } + item.setData(PREV_CHECKED_KEY, checked ? Boolean.TRUE : Boolean.FALSE); + item.setData(PREV_GRAYED_KEY, grayed ? Boolean.TRUE : Boolean.FALSE); + } } - @Override + @Override public boolean getElementChecked(TreePath path) { - Widget widget = findItem(path); - - if (widget != null && widget instanceof TreeItem && !widget.isDisposed()) { - TreeItem item = (TreeItem)widget; - - return item.getChecked(); - } - return false; - } - - /** - * Retrieves the element's check box grayed state. - * - * @param path the path of the element to set grayed - * @return grayed - */ - @Override + Widget widget = findItem(path); + + if (widget != null && widget instanceof TreeItem && !widget.isDisposed()) { + TreeItem item = (TreeItem)widget; + + return item.getChecked(); + } + return false; + } + + /** + * Retrieves the element's check box grayed state. + * + * @param path the path of the element to set grayed + * @return grayed + */ + @Override public boolean getElementGrayed(TreePath path) { - Widget widget = findItem(path); + Widget widget = findItem(path); - if (widget != null && widget instanceof TreeItem && !widget.isDisposed()) { - TreeItem item = (TreeItem)widget; + if (widget != null && widget instanceof TreeItem && !widget.isDisposed()) { + TreeItem item = (TreeItem)widget; - return item.getGrayed(); - } - return false; - } + return item.getGrayed(); + } + return false; + } - @Override + @Override public boolean getHasChildren(Object elementOrTreePath) { - if (elementOrTreePath instanceof TreePath && - ((TreePath)elementOrTreePath).getSegmentCount() == 0) - { - return getTree().getItemCount() > 0; - } - - Widget[] items = internalFindItems(elementOrTreePath); - if (items != null && items.length > 0) { - if (items[0] instanceof TreeItem) { - return ((TreeItem)items[0]).getItemCount() > 0; - } else { - return ((Tree)items[0]).getItemCount() > 0; - } - } - - return false; - } - - @Override + if (elementOrTreePath instanceof TreePath && + ((TreePath)elementOrTreePath).getSegmentCount() == 0) + { + return getTree().getItemCount() > 0; + } + + Widget[] items = internalFindItems(elementOrTreePath); + if (items != null && items.length > 0) { + if (items[0] instanceof TreeItem) { + return ((TreeItem)items[0]).getItemCount() > 0; + } else { + return ((Tree)items[0]).getItemCount() > 0; + } + } + + return false; + } + + @Override public TreePath[] getElementPaths(Object element) { - Widget[] items = internalFindItems(element); - TreePath[] paths = new TreePath[items.length]; - for (int i = 0; i < items.length; i++) { - if (items[i] instanceof Tree) { - paths[i] = TreePath.EMPTY; - } else { - paths[i] = getTreePathFromItem((Item)items[i]); - } - } - return paths; - } + Widget[] items = internalFindItems(element); + TreePath[] paths = new TreePath[items.length]; + for (int i = 0; i < items.length; i++) { + if (items[i] instanceof Tree) { + paths[i] = TreePath.EMPTY; + } else { + paths[i] = getTreePathFromItem((Item)items[i]); + } + } + return paths; + } @Override protected void handleSelect(SelectionEvent event) { - super.handleSelect(event); - - TreeItem item = (TreeItem) event.item; - if (item != null) { // item can be null when de-selected (bug 296703) - Object element = item.getData(); - IContentProvider contentProvider = getContentProvider(); - if (element != null && contentProvider instanceof TreeModelContentProvider) { - TreePath path = getTreePathFromItem(item); - - if (event.detail == SWT.CHECK) { - boolean checked = item.getChecked(); - boolean accepted = ((ITreeModelContentProvider) contentProvider).setChecked(path, checked); - - // if the listen rejects the change or there is not ICheckboxModelProxy, than revert the check state - if (!accepted) { - item.setChecked(!checked); - } else { - item.setData(PREV_CHECKED_KEY, Boolean.valueOf(checked)); - } - } else { - ((TreeModelContentProvider) contentProvider).cancelRestore(path, IModelDelta.SELECT|IModelDelta.REVEAL); - } - } - } + super.handleSelect(event); + + TreeItem item = (TreeItem) event.item; + if (item != null) { // item can be null when de-selected (bug 296703) + Object element = item.getData(); + IContentProvider contentProvider = getContentProvider(); + if (element != null && contentProvider instanceof TreeModelContentProvider) { + TreePath path = getTreePathFromItem(item); + + if (event.detail == SWT.CHECK) { + boolean checked = item.getChecked(); + boolean accepted = ((ITreeModelContentProvider) contentProvider).setChecked(path, checked); + + // if the listen rejects the change or there is not ICheckboxModelProxy, than revert the check state + if (!accepted) { + item.setChecked(!checked); + } else { + item.setData(PREV_CHECKED_KEY, Boolean.valueOf(checked)); + } + } else { + ((TreeModelContentProvider) contentProvider).cancelRestore(path, IModelDelta.SELECT|IModelDelta.REVEAL); + } + } + } } @Override protected void handleTreeExpand(TreeEvent event) { - super.handleTreeExpand(event); - IContentProvider contentProvider = getContentProvider(); - if (contentProvider instanceof TreeModelContentProvider && event.item.getData() != null) { - TreePath path = getTreePathFromItem((TreeItem)event.item); - ((TreeModelContentProvider) contentProvider).cancelRestore(path, IModelDelta.COLLAPSE); - } + super.handleTreeExpand(event); + IContentProvider contentProvider = getContentProvider(); + if (contentProvider instanceof TreeModelContentProvider && event.item.getData() != null) { + TreePath path = getTreePathFromItem((TreeItem)event.item); + ((TreeModelContentProvider) contentProvider).cancelRestore(path, IModelDelta.COLLAPSE); + } } @Override protected void handleTreeCollapse(TreeEvent event) { - super.handleTreeCollapse(event); - IContentProvider contentProvider = getContentProvider(); - if (contentProvider instanceof TreeModelContentProvider && event.item.getData() != null) { - TreePath path = getTreePathFromItem((TreeItem)event.item); - ((TreeModelContentProvider) contentProvider).cancelRestore(path, IModelDelta.EXPAND); - } + super.handleTreeCollapse(event); + IContentProvider contentProvider = getContentProvider(); + if (contentProvider instanceof TreeModelContentProvider && event.item.getData() != null) { + TreePath path = getTreePathFromItem((TreeItem)event.item); + ((TreeModelContentProvider) contentProvider).cancelRestore(path, IModelDelta.EXPAND); + } } @Override diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/InternalVirtualTreeModelViewer.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/InternalVirtualTreeModelViewer.java index fba0d7806..830bdf862 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/InternalVirtualTreeModelViewer.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/InternalVirtualTreeModelViewer.java @@ -68,245 +68,245 @@ import org.eclipse.ui.IMemento; */ @SuppressWarnings("deprecation") public class InternalVirtualTreeModelViewer extends Viewer - implements IVirtualItemListener, - org.eclipse.debug.internal.ui.viewers.model.ITreeModelViewer, - IInternalTreeModelViewer + implements IVirtualItemListener, + org.eclipse.debug.internal.ui.viewers.model.ITreeModelViewer, + IInternalTreeModelViewer { - /** - * Memento type for the visible columns for a presentation context. - * A memento is created for each column presentation keyed by column number - */ - private static final String VISIBLE_COLUMNS = "VISIBLE_COLUMNS"; //$NON-NLS-1$ - - /** - * Memento type for whether columns are visible for a presentation context. - * Booleans are keyed by column presentation id - */ - private static final String SHOW_COLUMNS = "SHOW_COLUMNS"; //$NON-NLS-1$ - /** - * Memento key for the number of visible columns in a VISIBLE_COLUMNS memento - * or for the width of a column - */ - private static final String SIZE = "SIZE"; //$NON-NLS-1$ - /** - * Memento key prefix a visible column - */ - private static final String COLUMN = "COLUMN"; //$NON-NLS-1$ - - /** - * Item's tree path cache - */ - private static final String TREE_PATH_KEY = "TREE_PATH_KEY"; //$NON-NLS-1$ - - /** - * Viewer filters currently configured for viewer. - */ - private ViewerFilter[] fFilters = new ViewerFilter[0]; - - /** - * The display that this virtual tree viewer is associated with. It is used - * for access to the UI thread. - */ - private Display fDisplay; - - /** - * The object that allows the model to identify what this view - * is presenting. - */ - private IPresentationContext fContext; - - /** - * Input into the viewer. - */ - private Object fInput; - - /** - * The tree of items in this viewer. - */ - private VirtualTree fTree; - - /** - * Mapping of data elements in the tree to the items that hold them. The - * tree may contain the same element in several places, so the map values - * are lists. - */ + /** + * Memento type for the visible columns for a presentation context. + * A memento is created for each column presentation keyed by column number + */ + private static final String VISIBLE_COLUMNS = "VISIBLE_COLUMNS"; //$NON-NLS-1$ + + /** + * Memento type for whether columns are visible for a presentation context. + * Booleans are keyed by column presentation id + */ + private static final String SHOW_COLUMNS = "SHOW_COLUMNS"; //$NON-NLS-1$ + /** + * Memento key for the number of visible columns in a VISIBLE_COLUMNS memento + * or for the width of a column + */ + private static final String SIZE = "SIZE"; //$NON-NLS-1$ + /** + * Memento key prefix a visible column + */ + private static final String COLUMN = "COLUMN"; //$NON-NLS-1$ + + /** + * Item's tree path cache + */ + private static final String TREE_PATH_KEY = "TREE_PATH_KEY"; //$NON-NLS-1$ + + /** + * Viewer filters currently configured for viewer. + */ + private ViewerFilter[] fFilters = new ViewerFilter[0]; + + /** + * The display that this virtual tree viewer is associated with. It is used + * for access to the UI thread. + */ + private Display fDisplay; + + /** + * The object that allows the model to identify what this view + * is presenting. + */ + private IPresentationContext fContext; + + /** + * Input into the viewer. + */ + private Object fInput; + + /** + * The tree of items in this viewer. + */ + private VirtualTree fTree; + + /** + * Mapping of data elements in the tree to the items that hold them. The + * tree may contain the same element in several places, so the map values + * are lists. + */ private Map<Object, List<VirtualItem>> fItemsMap = new HashMap<>(); - /** - * Whether to notify the content provider when an element is unmapped. - * Used to suppress the notification during an associate operation. - */ - private boolean fNotifyUnmap = true; - - /** - * The label provider, must be the tree model provider. - */ - private TreeModelLabelProvider fLabelProvider; - - /** - * The content provider must be a tree model provider. - */ - private TreeModelContentProvider fContentProvider; - - /** - * Flag indicating whether the viewer is currently executing an operation - * at the end of which the selection will be restored. - */ - private boolean fPreservingSelecction; - - /** - * Flag indicating that the selection should not be restored at the end - * of a preserving-selection operation. - */ - private boolean fRestoreSelection; - - /** - * Level to which the tree should automatically expand elements. - * <code>-1<code> indicates that all levels shoudl be expanded. - */ - private int fAutoExpandToLevel = 0; - - /** - * Current column presentation or <code>null</code> - */ - private IColumnPresentation fColumnPresentation = null; - - /** - * Map of columns presentation id to its visible columns id's (String[]) - * When a columns presentation is not in the map, default settings are used. - */ + /** + * Whether to notify the content provider when an element is unmapped. + * Used to suppress the notification during an associate operation. + */ + private boolean fNotifyUnmap = true; + + /** + * The label provider, must be the tree model provider. + */ + private TreeModelLabelProvider fLabelProvider; + + /** + * The content provider must be a tree model provider. + */ + private TreeModelContentProvider fContentProvider; + + /** + * Flag indicating whether the viewer is currently executing an operation + * at the end of which the selection will be restored. + */ + private boolean fPreservingSelecction; + + /** + * Flag indicating that the selection should not be restored at the end + * of a preserving-selection operation. + */ + private boolean fRestoreSelection; + + /** + * Level to which the tree should automatically expand elements. + * <code>-1<code> indicates that all levels shoudl be expanded. + */ + private int fAutoExpandToLevel = 0; + + /** + * Current column presentation or <code>null</code> + */ + private IColumnPresentation fColumnPresentation = null; + + /** + * Map of columns presentation id to its visible columns id's (String[]) + * When a columns presentation is not in the map, default settings are used. + */ private Map<String, String[]> fVisibleColumns = new HashMap<>(); - /** - * Map of column presentation id to whether columns should be displayed - * for that presentation (the user can toggle columns on/off when a - * presentation is optional. - */ + /** + * Map of column presentation id to whether columns should be displayed + * for that presentation (the user can toggle columns on/off when a + * presentation is optional. + */ private Map<String, Boolean> fShowColumns = new HashMap<>(); - /** - * Runnable for validating the virtual tree. It is scheduled to run in the - * UI thread whenever a tree validation is requested. - */ - private Runnable fValidateRunnable; + /** + * Runnable for validating the virtual tree. It is scheduled to run in the + * UI thread whenever a tree validation is requested. + */ + private Runnable fValidateRunnable; - public InternalVirtualTreeModelViewer(Display display, int style, IPresentationContext context, IVirtualItemValidator itemValidator) { - fDisplay = display; - fContext = context; - fTree = new VirtualTree(style, itemValidator); - fTree.addItemListener(this); + public InternalVirtualTreeModelViewer(Display display, int style, IPresentationContext context, IVirtualItemValidator itemValidator) { + fDisplay = display; + fContext = context; + fTree = new VirtualTree(style, itemValidator); + fTree.addItemListener(this); - fContentProvider = new TreeModelContentProvider(); - fLabelProvider = new TreeModelLabelProvider(this); + fContentProvider = new TreeModelContentProvider(); + fLabelProvider = new TreeModelLabelProvider(this); - if ((style & SWT.POP_UP) != 0) { - getContentProvider().setModelDeltaMask(~ITreeModelContentProvider.CONTROL_MODEL_DELTA_FLAGS); - } - } + if ((style & SWT.POP_UP) != 0) { + getContentProvider().setModelDeltaMask(~ITreeModelContentProvider.CONTROL_MODEL_DELTA_FLAGS); + } + } - @Override + @Override public Object getInput() { - return fInput; - } + return fInput; + } - @Override + @Override public Control getControl() { - // The virtual viewer does not have an SWT control associated with it. - // Fortunately this method is not used by the base Viewer class. - return null; - } + // The virtual viewer does not have an SWT control associated with it. + // Fortunately this method is not used by the base Viewer class. + return null; + } - @Override + @Override public Display getDisplay() { - return fDisplay; - } + return fDisplay; + } - @Override + @Override public void setInput(Object input) { - Object oldInput = fInput; - getContentProvider().inputChanged(this, oldInput, input); - fItemsMap.clear(); - fTree.clearAll(); - fInput = input; - mapElement(fInput, getTree()); - getContentProvider().postInputChanged(this, oldInput , input); - fTree.setData(fInput); - fTree.setSelection(EMPTY_ITEMS_ARRAY); - inputChanged(fInput, oldInput); - refresh(); - } - - @Override + Object oldInput = fInput; + getContentProvider().inputChanged(this, oldInput, input); + fItemsMap.clear(); + fTree.clearAll(); + fInput = input; + mapElement(fInput, getTree()); + getContentProvider().postInputChanged(this, oldInput , input); + fTree.setData(fInput); + fTree.setSelection(EMPTY_ITEMS_ARRAY); + inputChanged(fInput, oldInput); + refresh(); + } + + @Override public void replace(Object parentElementOrTreePath, final int index, Object element) { - VirtualItem[] selectedItems = fTree.getSelection(); - TreeSelection selection = (TreeSelection) getSelection(); - VirtualItem[] itemsToDisassociate; - if (parentElementOrTreePath instanceof TreePath) { - TreePath elementPath = ((TreePath) parentElementOrTreePath).createChildPath(element); - itemsToDisassociate = findItems(elementPath); - } else { - itemsToDisassociate = findItems(element); - } - - VirtualItem[] parentItems = findItems(parentElementOrTreePath); - for (int i = 0; i < parentItems.length; i++) { - VirtualItem parentItem = parentItems[i]; - if (index < parentItem.getItemCount()) { - VirtualItem item = parentItem.getItem(new Index(index)); - selection = adjustSelectionForReplace(selectedItems, selection, item, element, parentItem.getData()); - // disassociate any different item that represents the - // same element under the same parent (the tree) - for (int j = 0; j < itemsToDisassociate.length; j++) { - VirtualItem itemToDisassociate = itemsToDisassociate[j]; - if (itemToDisassociate != item && itemsToDisassociate[j].getParent() == parentItem) { - disassociate(itemToDisassociate); - itemToDisassociate.getParent().clear(itemToDisassociate.getIndex()); - } - } - //Object oldData = item.getData(); - associate(element, item); - doUpdate(item); - VirtualItem[] children = item.getItems(); - for (int j = 0; j < children.length; j++) { - children[j].setNeedsDataUpdate(); - } - } - } - // Restore the selection if we are not already in a nested - // preservingSelection: - if (!fPreservingSelecction) { - internalSetSelection(selection, false); - // send out notification if old and new differ - ISelection newSelection = getSelection(); - if (!newSelection.equals(selection)) { - handleInvalidSelection(selection, newSelection); - } - } - validate(); - } - - public VirtualTree getTree() { - return fTree; - } - - @Override + VirtualItem[] selectedItems = fTree.getSelection(); + TreeSelection selection = (TreeSelection) getSelection(); + VirtualItem[] itemsToDisassociate; + if (parentElementOrTreePath instanceof TreePath) { + TreePath elementPath = ((TreePath) parentElementOrTreePath).createChildPath(element); + itemsToDisassociate = findItems(elementPath); + } else { + itemsToDisassociate = findItems(element); + } + + VirtualItem[] parentItems = findItems(parentElementOrTreePath); + for (int i = 0; i < parentItems.length; i++) { + VirtualItem parentItem = parentItems[i]; + if (index < parentItem.getItemCount()) { + VirtualItem item = parentItem.getItem(new Index(index)); + selection = adjustSelectionForReplace(selectedItems, selection, item, element, parentItem.getData()); + // disassociate any different item that represents the + // same element under the same parent (the tree) + for (int j = 0; j < itemsToDisassociate.length; j++) { + VirtualItem itemToDisassociate = itemsToDisassociate[j]; + if (itemToDisassociate != item && itemsToDisassociate[j].getParent() == parentItem) { + disassociate(itemToDisassociate); + itemToDisassociate.getParent().clear(itemToDisassociate.getIndex()); + } + } + //Object oldData = item.getData(); + associate(element, item); + doUpdate(item); + VirtualItem[] children = item.getItems(); + for (int j = 0; j < children.length; j++) { + children[j].setNeedsDataUpdate(); + } + } + } + // Restore the selection if we are not already in a nested + // preservingSelection: + if (!fPreservingSelecction) { + internalSetSelection(selection, false); + // send out notification if old and new differ + ISelection newSelection = getSelection(); + if (!newSelection.equals(selection)) { + handleInvalidSelection(selection, newSelection); + } + } + validate(); + } + + public VirtualTree getTree() { + return fTree; + } + + @Override public void insert(Object parentOrTreePath, Object element, int position) { - if (parentOrTreePath instanceof TreePath) { - VirtualItem parentItem = findItem((TreePath) parentOrTreePath); - if (parentItem != null) { - VirtualItem item = parentItem.addItem(position); - item.setData(element); - mapElement(element, item); - doUpdate(item); - } - } else { - // TODO: Implement insert() for element - } - validate(); - } - - @Override + if (parentOrTreePath instanceof TreePath) { + VirtualItem parentItem = findItem((TreePath) parentOrTreePath); + if (parentItem != null) { + VirtualItem item = parentItem.addItem(position); + item.setData(element); + mapElement(element, item); + doUpdate(item); + } + } else { + // TODO: Implement insert() for element + } + validate(); + } + + @Override public void remove(final Object parentOrTreePath, final int index) { final List<TreePath> oldSelection = new LinkedList<>(Arrays.asList(((TreeSelection) getSelection()).getPaths())); preservingSelection(() -> { @@ -351,50 +351,50 @@ public class InternalVirtualTreeModelViewer extends Viewer } } }); - } + } - @Override + @Override public void remove(Object elementOrPath) { - if (elementOrPath.equals(getInput()) || TreePath.EMPTY.equals(elementOrPath)) { - setInput(null); - return; - } - - VirtualItem[] items = findItems(elementOrPath); - if (items.length > 0) { - for (int j = 0; j < items.length; j++) { - disassociate(items[j]); - items[j].getParent().remove(items[j].getIndex()); - } - } - } - - private TreeSelection adjustSelectionForReplace(VirtualItem[] selectedItems, TreeSelection selection, - VirtualItem item, Object element, Object parentElement) - { - if (item.getData() != null || selectedItems.length == selection.size() || parentElement == null) { - // Don't do anything - we are not seeing an instance of bug 185673 - return selection; - } - for (int i = 0; i < selectedItems.length; i++) { - if (item == selectedItems[i]) { - // The current item was selected, but its data is null. - // The data will be replaced by the given element, so to keep - // it selected, we have to add it to the selection. - TreePath[] originalPaths = selection.getPaths(); - int length = originalPaths.length; - TreePath[] paths = new TreePath[length + 1]; - System.arraycopy(originalPaths, 0, paths, 0, length); - // set the element temporarily so that we can call getTreePathFromItem - item.setData(element); - paths[length] = getTreePathFromItem(item); - item.setData(null); - return new TreeSelection(paths, selection.getElementComparer()); - } - } - // The item was not selected, return the given selection - return selection; - } + if (elementOrPath.equals(getInput()) || TreePath.EMPTY.equals(elementOrPath)) { + setInput(null); + return; + } + + VirtualItem[] items = findItems(elementOrPath); + if (items.length > 0) { + for (int j = 0; j < items.length; j++) { + disassociate(items[j]); + items[j].getParent().remove(items[j].getIndex()); + } + } + } + + private TreeSelection adjustSelectionForReplace(VirtualItem[] selectedItems, TreeSelection selection, + VirtualItem item, Object element, Object parentElement) + { + if (item.getData() != null || selectedItems.length == selection.size() || parentElement == null) { + // Don't do anything - we are not seeing an instance of bug 185673 + return selection; + } + for (int i = 0; i < selectedItems.length; i++) { + if (item == selectedItems[i]) { + // The current item was selected, but its data is null. + // The data will be replaced by the given element, so to keep + // it selected, we have to add it to the selection. + TreePath[] originalPaths = selection.getPaths(); + int length = originalPaths.length; + TreePath[] paths = new TreePath[length + 1]; + System.arraycopy(originalPaths, 0, paths, 0, length); + // set the element temporarily so that we can call getTreePathFromItem + item.setData(element); + paths[length] = getTreePathFromItem(item); + item.setData(null); + return new TreeSelection(paths, selection.getElementComparer()); + } + } + // The item was not selected, return the given selection + return selection; + } // private VirtualTreeSelection adjustSelectionForReplace(VirtualTreeSelection selection, VirtualItem item, // Object element, Object parentElement) @@ -449,181 +449,181 @@ public class InternalVirtualTreeModelViewer extends Viewer // } - @Override + @Override public void reveal(TreePath path, final int index) { - VirtualItem parentItem = findItem(path); - if (parentItem != null && parentItem.getItemCount() >= index) { - VirtualItem revealItem = parentItem.getItem(new Index(index)); - getTree().showItem(revealItem); - getTree().validate(); - } - // TODO: implement reveal() - } - - @Override + VirtualItem parentItem = findItem(path); + if (parentItem != null && parentItem.getItemCount() >= index) { + VirtualItem revealItem = parentItem.getItem(new Index(index)); + getTree().showItem(revealItem); + getTree().validate(); + } + // TODO: implement reveal() + } + + @Override public int findElementIndex(TreePath parentPath, Object element) { - VirtualItem parentItem = findItem(parentPath); - if (parentItem != null) { - VirtualItem item = parentItem.findItem(element); - if (item != null) { - return item.getIndex().intValue(); - } - } - return -1; - } - - @Override + VirtualItem parentItem = findItem(parentPath); + if (parentItem != null) { + VirtualItem item = parentItem.findItem(element); + if (item != null) { + return item.getIndex().intValue(); + } + } + return -1; + } + + @Override public boolean getElementChildrenRealized(TreePath parentPath) { - VirtualItem parentItem = findItem(parentPath); - if (parentItem != null) { - return !parentItem.childrenNeedDataUpdate(); - } - return true; - } + VirtualItem parentItem = findItem(parentPath); + if (parentItem != null) { + return !parentItem.childrenNeedDataUpdate(); + } + return true; + } - private ITreeModelLabelProvider getLabelProvider() { - return fLabelProvider; - } + private ITreeModelLabelProvider getLabelProvider() { + return fLabelProvider; + } - private ITreeModelContentProvider getContentProvider() { - return fContentProvider; - } + private ITreeModelContentProvider getContentProvider() { + return fContentProvider; + } - public static int ALL_LEVELS = -1; + public static int ALL_LEVELS = -1; - @Override + @Override public void refresh() { - refresh(fTree); - validate(); - } + refresh(fTree); + validate(); + } - @Override + @Override public void refresh(Object element) { - VirtualItem[] items = findItems(element); - for (int i = 0; i < items.length; i++) { - refresh(items[i]); - validate(); - } - } - - private void refresh(VirtualItem item) { - getContentProvider().preserveState(getTreePathFromItem(item)); - - if (!item.needsDataUpdate()) { - if (item.getParent() != null) { - item.setNeedsLabelUpdate(); - virtualLazyUpdateHasChildren(item); - } - - VirtualItem[] items = item.getItems(); - for (int i = 0; i < items.length; i++) { - items[i].setNeedsDataUpdate(); - } - } - refreshStruct(item); - } - - private void refreshStruct(VirtualItem item) { - boolean expanded = false; - if (item.getParent() == null) { - // root item - virtualLazyUpdateChildCount(item); - expanded = true; - } else { - if (item.getExpanded()) { - virtualLazyUpdateData(item); - expanded = true; - } - } - - VirtualItem[] items = item.getItems(); - for (int i = 0; i < items.length; i++) { - if (expanded) { - refreshStruct(items[i]); - } else { - item.clear(new VirtualItem.Index(i)); - } - } - } - - private void validate() { - if (fValidateRunnable == null) { + VirtualItem[] items = findItems(element); + for (int i = 0; i < items.length; i++) { + refresh(items[i]); + validate(); + } + } + + private void refresh(VirtualItem item) { + getContentProvider().preserveState(getTreePathFromItem(item)); + + if (!item.needsDataUpdate()) { + if (item.getParent() != null) { + item.setNeedsLabelUpdate(); + virtualLazyUpdateHasChildren(item); + } + + VirtualItem[] items = item.getItems(); + for (int i = 0; i < items.length; i++) { + items[i].setNeedsDataUpdate(); + } + } + refreshStruct(item); + } + + private void refreshStruct(VirtualItem item) { + boolean expanded = false; + if (item.getParent() == null) { + // root item + virtualLazyUpdateChildCount(item); + expanded = true; + } else { + if (item.getExpanded()) { + virtualLazyUpdateData(item); + expanded = true; + } + } + + VirtualItem[] items = item.getItems(); + for (int i = 0; i < items.length; i++) { + if (expanded) { + refreshStruct(items[i]); + } else { + item.clear(new VirtualItem.Index(i)); + } + } + } + + private void validate() { + if (fValidateRunnable == null) { fValidateRunnable = () -> { if (!fTree.isDisposed()) { fValidateRunnable = null; fTree.validate(); } }; - getDisplay().asyncExec(fValidateRunnable); - } - } + getDisplay().asyncExec(fValidateRunnable); + } + } - @Override + @Override protected void inputChanged(Object input, Object oldInput) { - resetColumns(input); - } + resetColumns(input); + } - @Override + @Override public int getAutoExpandLevel() { - return fAutoExpandToLevel; - } + return fAutoExpandToLevel; + } - @Override + @Override public void setAutoExpandLevel(int level) { - fAutoExpandToLevel = level; - } + fAutoExpandToLevel = level; + } - public VirtualItem findItem(TreePath path) { - if (path.getSegmentCount() == 0) { - return fTree; - } + public VirtualItem findItem(TreePath path) { + if (path.getSegmentCount() == 0) { + return fTree; + } List<VirtualItem> itemsList = fItemsMap.get(path.getLastSegment()); - if (itemsList != null) { + if (itemsList != null) { for (VirtualItem item : itemsList) { if (path.equals(getTreePathFromItem(item))) { return item; - } - } - } - - return null; - } - - static private final VirtualItem[] EMPTY_ITEMS_ARRAY = new VirtualItem[0]; - - public VirtualItem[] findItems(Object elementOrTreePath) { - Object element = elementOrTreePath; - if (elementOrTreePath instanceof TreePath) { - TreePath path = (TreePath)elementOrTreePath; - if (path.getSegmentCount() == 0) { - return new VirtualItem[] { getTree() }; - } - element = path.getLastSegment(); - } + } + } + } + + return null; + } + + static private final VirtualItem[] EMPTY_ITEMS_ARRAY = new VirtualItem[0]; + + public VirtualItem[] findItems(Object elementOrTreePath) { + Object element = elementOrTreePath; + if (elementOrTreePath instanceof TreePath) { + TreePath path = (TreePath)elementOrTreePath; + if (path.getSegmentCount() == 0) { + return new VirtualItem[] { getTree() }; + } + element = path.getLastSegment(); + } List<VirtualItem> itemsList = fItemsMap.get(element); - if (itemsList == null) { - return EMPTY_ITEMS_ARRAY; - } else { - return itemsList.toArray(new VirtualItem[itemsList.size()]); - } - } - - @Override + if (itemsList == null) { + return EMPTY_ITEMS_ARRAY; + } else { + return itemsList.toArray(new VirtualItem[itemsList.size()]); + } + } + + @Override public void setElementData(TreePath path, int numColumns, String[] labels, ImageDescriptor[] images, - FontData[] fontDatas, RGB[] foregrounds, RGB[] backgrounds) { - VirtualItem item = findItem(path); - if (item != null) { - item.setData(VirtualItem.LABEL_KEY, labels); - item.setData(VirtualItem.IMAGE_KEY, images); - item.setData(VirtualItem.FOREGROUND_KEY, foregrounds); - item.setData(VirtualItem.BACKGROUND_KEY, backgrounds); - item.setData(VirtualItem.FONT_KEY, fontDatas); - } - } - - @Override + FontData[] fontDatas, RGB[] foregrounds, RGB[] backgrounds) { + VirtualItem item = findItem(path); + if (item != null) { + item.setData(VirtualItem.LABEL_KEY, labels); + item.setData(VirtualItem.IMAGE_KEY, images); + item.setData(VirtualItem.FOREGROUND_KEY, foregrounds); + item.setData(VirtualItem.BACKGROUND_KEY, backgrounds); + item.setData(VirtualItem.FONT_KEY, fontDatas); + } + } + + @Override public void setChildCount(final Object elementOrTreePath, final int count) { preservingSelection(() -> { VirtualItem[] items = findItems(elementOrTreePath); @@ -638,10 +638,10 @@ public class InternalVirtualTreeModelViewer extends Viewer items[i].setItemCount(count); } }); - validate(); - } + validate(); + } - @Override + @Override public void setHasChildren(final Object elementOrTreePath, final boolean hasChildren) { preservingSelection(() -> { VirtualItem[] items = findItems(elementOrTreePath); @@ -667,962 +667,962 @@ public class InternalVirtualTreeModelViewer extends Viewer } } }); - } + } - @Override + @Override public boolean getHasChildren(Object elementOrTreePath) { - VirtualItem[] items = findItems(elementOrTreePath); - if (items.length > 0) { - return items[0].hasItems(); - } - return false; - } - - private void virtualLazyUpdateHasChildren(VirtualItem item) { - TreePath treePath; - treePath = getTreePathFromItem(item); - item.clearNeedsCountUpdate(); - getContentProvider().updateHasChildren(treePath); - } - - private void virtualLazyUpdateChildCount(VirtualItem item) { - item.clearNeedsCountUpdate(); - getContentProvider().updateChildCount(getTreePathFromItem(item), item.getItemCount()); - } - - private void virtualLazyUpdateData(VirtualItem item) { - item.clearNeedsDataUpdate(); - getContentProvider().updateElement(getTreePathFromItem(item.getParent()), item.getIndex().intValue()); - } - - private void virtualLazyUpdateLabel(VirtualItem item) { - item.clearNeedsLabelUpdate(); - if ( !getLabelProvider().update(getTreePathFromItem(item)) ) { - if (item.getData() instanceof String) { - item.setData(VirtualItem.LABEL_KEY, new String[] { (String)item.getData() } ); - } - } - } - - private TreePath getTreePathFromItem(VirtualItem item) { + VirtualItem[] items = findItems(elementOrTreePath); + if (items.length > 0) { + return items[0].hasItems(); + } + return false; + } + + private void virtualLazyUpdateHasChildren(VirtualItem item) { + TreePath treePath; + treePath = getTreePathFromItem(item); + item.clearNeedsCountUpdate(); + getContentProvider().updateHasChildren(treePath); + } + + private void virtualLazyUpdateChildCount(VirtualItem item) { + item.clearNeedsCountUpdate(); + getContentProvider().updateChildCount(getTreePathFromItem(item), item.getItemCount()); + } + + private void virtualLazyUpdateData(VirtualItem item) { + item.clearNeedsDataUpdate(); + getContentProvider().updateElement(getTreePathFromItem(item.getParent()), item.getIndex().intValue()); + } + + private void virtualLazyUpdateLabel(VirtualItem item) { + item.clearNeedsLabelUpdate(); + if ( !getLabelProvider().update(getTreePathFromItem(item)) ) { + if (item.getData() instanceof String) { + item.setData(VirtualItem.LABEL_KEY, new String[] { (String)item.getData() } ); + } + } + } + + private TreePath getTreePathFromItem(VirtualItem item) { List<Object> segments = new LinkedList<>(); - while (item.getParent() != null) { - segments.add(0, item.getData()); - item = item.getParent(); - } - return new TreePath(segments.toArray()); - } - - private void unmapElement(Object element, VirtualItem item) { - if (fNotifyUnmap) { - // TODO: should we update the filter with the "new non-identical element"? - IContentProvider provider = getContentProvider(); - if (provider instanceof TreeModelContentProvider) { - ((TreeModelContentProvider) provider).unmapPath((TreePath) item.getData(TREE_PATH_KEY)); - } - } + while (item.getParent() != null) { + segments.add(0, item.getData()); + item = item.getParent(); + } + return new TreePath(segments.toArray()); + } + + private void unmapElement(Object element, VirtualItem item) { + if (fNotifyUnmap) { + // TODO: should we update the filter with the "new non-identical element"? + IContentProvider provider = getContentProvider(); + if (provider instanceof TreeModelContentProvider) { + ((TreeModelContentProvider) provider).unmapPath((TreePath) item.getData(TREE_PATH_KEY)); + } + } List<VirtualItem> itemsList = fItemsMap.get(element); - if (itemsList != null) { - itemsList.remove(item); - if (itemsList.isEmpty()) { - fItemsMap.remove(element); - } - } - } - - private void mapElement(Object element, VirtualItem item) { - // Get the items set for given element, if it doesn't exist, create it. - // When retrieving the set, also remove it from the map, it will be - // re-inserted to make sure that the new instance of element is used - // in case the element has changed but the elment is equal to the old - // one. + if (itemsList != null) { + itemsList.remove(item); + if (itemsList.isEmpty()) { + fItemsMap.remove(element); + } + } + } + + private void mapElement(Object element, VirtualItem item) { + // Get the items set for given element, if it doesn't exist, create it. + // When retrieving the set, also remove it from the map, it will be + // re-inserted to make sure that the new instance of element is used + // in case the element has changed but the elment is equal to the old + // one. List<VirtualItem> itemsList = fItemsMap.remove(element); - if (itemsList == null) { + if (itemsList == null) { itemsList = new ArrayList<>(1); - } + } - if (!itemsList.contains(item)) { - itemsList.add(item); - } + if (!itemsList.contains(item)) { + itemsList.add(item); + } - // Insert the set back into the map. - fItemsMap.put(element, itemsList); + // Insert the set back into the map. + fItemsMap.put(element, itemsList); - item.setData(TREE_PATH_KEY, getTreePathFromItem(item)); - } + item.setData(TREE_PATH_KEY, getTreePathFromItem(item)); + } - @Override + @Override public void revealed(VirtualItem item) { - if (item.needsDataUpdate()) { - virtualLazyUpdateData(item); - } else if (item.getData() != null) { - if (item.needsLabelUpdate()) { - virtualLazyUpdateLabel(item); - } - if (item.needsCountUpdate() && item.getExpanded()) { - virtualLazyUpdateChildCount(item); - } - } - } - - @Override + if (item.needsDataUpdate()) { + virtualLazyUpdateData(item); + } else if (item.getData() != null) { + if (item.needsLabelUpdate()) { + virtualLazyUpdateLabel(item); + } + if (item.needsCountUpdate() && item.getExpanded()) { + virtualLazyUpdateChildCount(item); + } + } + } + + @Override public void disposed(VirtualItem item) { - if (!fTree.isDisposed()) { - Object data = item.getData(); - if (data != null) { - unmapElement(data, item); - } - } - } - - private void associate(Object element, VirtualItem item) { - Object data = item.getData(); - if (data != null && data != element && data.equals(element)) { - // elements are equal but not identical - // -> being removed from map, but should not change filters - try { - fNotifyUnmap = false; - doAssociate(element, item); - } finally { - fNotifyUnmap = true; - } - } else { - doAssociate(element, item); - } - - } - - private void doAssociate(Object element, VirtualItem item) { - Object data = item.getData(); - if (data != null && data != element && data.equals(element)) { - // workaround for PR 1FV62BT - // assumption: elements are equal but not identical - // -> remove from map but don't touch children - unmapElement(data, item); - item.setData(element); - mapElement(element, item); - } else { - // recursively disassociate all - if (data != element) { - if (data != null) { - unmapElement(element, item); - disassociate(item); - } - item.setData(element); - } - // Always map the element, even if data == element, - // since unmapAllElements() can leave the map inconsistent - // See bug 2741 for details. - mapElement(element, item); - } - } - - private void disassociate(VirtualItem item) { - unmapElement(item.getData(), item); - - // Clear the map before we clear the data - item.setData(null); - - // Disassociate the children - VirtualItem[] items = item.getItems(); - for (int i = 0; i < items.length; i++) { - if (items[i].getData() != null) { - disassociate(items[i]); - } - } - } - - @Override + if (!fTree.isDisposed()) { + Object data = item.getData(); + if (data != null) { + unmapElement(data, item); + } + } + } + + private void associate(Object element, VirtualItem item) { + Object data = item.getData(); + if (data != null && data != element && data.equals(element)) { + // elements are equal but not identical + // -> being removed from map, but should not change filters + try { + fNotifyUnmap = false; + doAssociate(element, item); + } finally { + fNotifyUnmap = true; + } + } else { + doAssociate(element, item); + } + + } + + private void doAssociate(Object element, VirtualItem item) { + Object data = item.getData(); + if (data != null && data != element && data.equals(element)) { + // workaround for PR 1FV62BT + // assumption: elements are equal but not identical + // -> remove from map but don't touch children + unmapElement(data, item); + item.setData(element); + mapElement(element, item); + } else { + // recursively disassociate all + if (data != element) { + if (data != null) { + unmapElement(element, item); + disassociate(item); + } + item.setData(element); + } + // Always map the element, even if data == element, + // since unmapAllElements() can leave the map inconsistent + // See bug 2741 for details. + mapElement(element, item); + } + } + + private void disassociate(VirtualItem item) { + unmapElement(item.getData(), item); + + // Clear the map before we clear the data + item.setData(null); + + // Disassociate the children + VirtualItem[] items = item.getItems(); + for (int i = 0; i < items.length; i++) { + if (items[i].getData() != null) { + disassociate(items[i]); + } + } + } + + @Override public void setSelection(ISelection selection, boolean reveal) { - setSelection(selection, reveal, false); - } + setSelection(selection, reveal, false); + } - @Override + @Override public void setSelection(ISelection selection, boolean reveal, boolean force) { - trySelection(selection, reveal, force); - } + trySelection(selection, reveal, force); + } - @Override + @Override public boolean trySelection(ISelection selection, boolean reveal, boolean force) { - if (!force && !overrideSelection(getSelection(), selection)) { - return false; - } - - if (!fPreservingSelecction) { - internalSetSelection(selection, reveal); - fireSelectionChanged(new SelectionChangedEvent(this, selection)); - } else { - fRestoreSelection = false; - internalSetSelection(selection, reveal); - } - return true; - } - - private void internalSetSelection(ISelection selection, boolean reveal) { - if (selection instanceof ITreeSelection) { - TreePath[] paths = ((ITreeSelection) selection).getPaths(); + if (!force && !overrideSelection(getSelection(), selection)) { + return false; + } + + if (!fPreservingSelecction) { + internalSetSelection(selection, reveal); + fireSelectionChanged(new SelectionChangedEvent(this, selection)); + } else { + fRestoreSelection = false; + internalSetSelection(selection, reveal); + } + return true; + } + + private void internalSetSelection(ISelection selection, boolean reveal) { + if (selection instanceof ITreeSelection) { + TreePath[] paths = ((ITreeSelection) selection).getPaths(); List<VirtualItem> newSelection = new ArrayList<>(paths.length); - for (int i = 0; i < paths.length; ++i) { - // Use internalExpand since item may not yet be created. See - // 1G6B1AR. - VirtualItem item = findItem(paths[i]); - if (item != null) { - newSelection.add(item); - } - } - fTree.setSelection(newSelection.toArray(new VirtualItem[newSelection.size()])); - - // Although setting the selection in the control should reveal it, - // setSelection may be a no-op if the selection is unchanged, - // so explicitly reveal items in the selection here. - // See bug 100565 for more details. - if (reveal && newSelection.size() > 0) { - // Iterate backwards so the first item in the list - // is the one guaranteed to be visible - for (int i = (newSelection.size() - 1); i >= 0; i--) { - fTree.showItem(newSelection.get(i)); - } - } - } else { - fTree.setSelection(EMPTY_ITEMS_ARRAY); - } - - // Make sure that the new selection is properly revealed. - validate(); - } - - @Override + for (int i = 0; i < paths.length; ++i) { + // Use internalExpand since item may not yet be created. See + // 1G6B1AR. + VirtualItem item = findItem(paths[i]); + if (item != null) { + newSelection.add(item); + } + } + fTree.setSelection(newSelection.toArray(new VirtualItem[newSelection.size()])); + + // Although setting the selection in the control should reveal it, + // setSelection may be a no-op if the selection is unchanged, + // so explicitly reveal items in the selection here. + // See bug 100565 for more details. + if (reveal && newSelection.size() > 0) { + // Iterate backwards so the first item in the list + // is the one guaranteed to be visible + for (int i = (newSelection.size() - 1); i >= 0; i--) { + fTree.showItem(newSelection.get(i)); + } + } + } else { + fTree.setSelection(EMPTY_ITEMS_ARRAY); + } + + // Make sure that the new selection is properly revealed. + validate(); + } + + @Override public void update(Object element) { - VirtualItem[] items = findItems(element); - for (int i = 0; i < items.length; i++) { - doUpdate(items[i]); - } - } - - public void doUpdate(VirtualItem item) { - item.setNeedsLabelUpdate(); - validate(); - } - - @Override + VirtualItem[] items = findItems(element); + for (int i = 0; i < items.length; i++) { + doUpdate(items[i]); + } + } + + public void doUpdate(VirtualItem item) { + item.setNeedsLabelUpdate(); + validate(); + } + + @Override public ISelection getSelection() { - if (fTree.isDisposed()) { - return TreeSelection.EMPTY; - } - VirtualItem[] items = fTree.getSelection(); + if (fTree.isDisposed()) { + return TreeSelection.EMPTY; + } + VirtualItem[] items = fTree.getSelection(); ArrayList<TreePath> list = new ArrayList<>(items.length); Map<VirtualItem, TreePath> map = new LinkedHashMap<>(items.length * 4 / 3); - for (int i = 0; i < items.length; i++) { - TreePath path = null; - if (items[i].getData() != null) { - path = getTreePathFromItem(items[i]); - list.add(path); - } - map.put(items[i], path); - } - return new TreeSelection(list.toArray(new TreePath[list.size()])); - } - - private void preservingSelection(Runnable updateCode) { - - ISelection oldSelection = null; - try { - // preserve selection - oldSelection = getSelection(); - fPreservingSelecction = fRestoreSelection = true; - - // perform the update - updateCode.run(); - - } finally { - fPreservingSelecction = false; - - // restore selection - if (fRestoreSelection) { - internalSetSelection(oldSelection, false); - } - - // send out notification if old and new differ - ISelection newSelection = getSelection(); - if (!newSelection.equals(oldSelection)) { - handleInvalidSelection(oldSelection, newSelection); - } - } - } - - @Override + for (int i = 0; i < items.length; i++) { + TreePath path = null; + if (items[i].getData() != null) { + path = getTreePathFromItem(items[i]); + list.add(path); + } + map.put(items[i], path); + } + return new TreeSelection(list.toArray(new TreePath[list.size()])); + } + + private void preservingSelection(Runnable updateCode) { + + ISelection oldSelection = null; + try { + // preserve selection + oldSelection = getSelection(); + fPreservingSelecction = fRestoreSelection = true; + + // perform the update + updateCode.run(); + + } finally { + fPreservingSelecction = false; + + // restore selection + if (fRestoreSelection) { + internalSetSelection(oldSelection, false); + } + + // send out notification if old and new differ + ISelection newSelection = getSelection(); + if (!newSelection.equals(oldSelection)) { + handleInvalidSelection(oldSelection, newSelection); + } + } + } + + @Override public void expandToLevel(Object elementOrTreePath, int level) { - VirtualItem[] items = findItems(elementOrTreePath); - if (items.length > 0) { - expandToLevel(items[0], level); - } - validate(); - } - - @Override + VirtualItem[] items = findItems(elementOrTreePath); + if (items.length > 0) { + expandToLevel(items[0], level); + } + validate(); + } + + @Override public void setExpandedState(Object elementOrTreePath, boolean expanded) { - VirtualItem[] items = findItems(elementOrTreePath); - for (int i = 0; i < items.length; i++) { - items[i].setExpanded(expanded); - } - validate(); - } - - @Override + VirtualItem[] items = findItems(elementOrTreePath); + for (int i = 0; i < items.length; i++) { + items[i].setExpanded(expanded); + } + validate(); + } + + @Override public boolean getExpandedState(Object elementOrTreePath) { - VirtualItem[] items = findItems(elementOrTreePath); - if (items.length > 0) { - return items[0].getExpanded(); - } - return false; - } - - private void expandToLevel(VirtualItem item, int level) { - if (level == ALL_LEVELS || level > 0) { - if (!item.hasItems()) { - return; - } - - item.setExpanded(true); - - if (item.getData() == null) { - virtualLazyUpdateData(item); - // Cannot expand children if data is null. - return; - } - - if (level == ALL_LEVELS || level > 1) { - VirtualItem[] children = item.getItems(); - int newLevel = (level == ALL_LEVELS ? ALL_LEVELS - : level - 1); - for (int i = 0; i < children.length; i++) { - expandToLevel(children[i], newLevel); - } - } - } - } - - private void handleInvalidSelection(ISelection selection, ISelection newSelection) { - IModelSelectionPolicy selectionPolicy = ViewerAdapterService.getSelectionPolicy(selection, getPresentationContext()); - if (selectionPolicy != null) { - while (!selection.equals(newSelection)) { - ISelection temp = newSelection; - selection = selectionPolicy.replaceInvalidSelection(selection, newSelection); - if (selection == null) { - selection = TreeSelection.EMPTY; - } - if (!temp.equals(selection)) { - internalSetSelection(selection, false); - newSelection = getSelection(); - } else { - break; - } - } - } - - fireSelectionChanged(new SelectionChangedEvent(this, newSelection)); - } - - /** - * Returns whether the candidate selection should override the current - * selection. - * - * @param current Current selection in viewer - * @param candidate New potential selection requested by model. - * @return true if candidate selection should be set to viewer. - */ - @Override + VirtualItem[] items = findItems(elementOrTreePath); + if (items.length > 0) { + return items[0].getExpanded(); + } + return false; + } + + private void expandToLevel(VirtualItem item, int level) { + if (level == ALL_LEVELS || level > 0) { + if (!item.hasItems()) { + return; + } + + item.setExpanded(true); + + if (item.getData() == null) { + virtualLazyUpdateData(item); + // Cannot expand children if data is null. + return; + } + + if (level == ALL_LEVELS || level > 1) { + VirtualItem[] children = item.getItems(); + int newLevel = (level == ALL_LEVELS ? ALL_LEVELS + : level - 1); + for (int i = 0; i < children.length; i++) { + expandToLevel(children[i], newLevel); + } + } + } + } + + private void handleInvalidSelection(ISelection selection, ISelection newSelection) { + IModelSelectionPolicy selectionPolicy = ViewerAdapterService.getSelectionPolicy(selection, getPresentationContext()); + if (selectionPolicy != null) { + while (!selection.equals(newSelection)) { + ISelection temp = newSelection; + selection = selectionPolicy.replaceInvalidSelection(selection, newSelection); + if (selection == null) { + selection = TreeSelection.EMPTY; + } + if (!temp.equals(selection)) { + internalSetSelection(selection, false); + newSelection = getSelection(); + } else { + break; + } + } + } + + fireSelectionChanged(new SelectionChangedEvent(this, newSelection)); + } + + /** + * Returns whether the candidate selection should override the current + * selection. + * + * @param current Current selection in viewer + * @param candidate New potential selection requested by model. + * @return true if candidate selection should be set to viewer. + */ + @Override public boolean overrideSelection(ISelection current, ISelection candidate) { - IModelSelectionPolicy selectionPolicy = ViewerAdapterService.getSelectionPolicy(current, getPresentationContext()); - if (selectionPolicy == null) { - return true; - } - if (selectionPolicy.contains(candidate, getPresentationContext())) { - return selectionPolicy.overrides(current, candidate, getPresentationContext()); - } - return !selectionPolicy.isSticky(current, getPresentationContext()); - } - - @Override + IModelSelectionPolicy selectionPolicy = ViewerAdapterService.getSelectionPolicy(current, getPresentationContext()); + if (selectionPolicy == null) { + return true; + } + if (selectionPolicy.contains(candidate, getPresentationContext())) { + return selectionPolicy.overrides(current, candidate, getPresentationContext()); + } + return !selectionPolicy.isSticky(current, getPresentationContext()); + } + + @Override public ViewerFilter[] getFilters() { - return fFilters; - } + return fFilters; + } - @Override + @Override public void addFilter(ViewerFilter filter) { - ViewerFilter[] newFilters = new ViewerFilter[fFilters.length + 1]; - System.arraycopy(fFilters, 0, newFilters, 0, fFilters.length); - newFilters[fFilters.length] = filter; - fFilters = newFilters; - } + ViewerFilter[] newFilters = new ViewerFilter[fFilters.length + 1]; + System.arraycopy(fFilters, 0, newFilters, 0, fFilters.length); + newFilters[fFilters.length] = filter; + fFilters = newFilters; + } - @Override + @Override public void setFilters(ViewerFilter... filters) { - fFilters = filters; - } - - public void dispose() { - if (fColumnPresentation != null) { - fColumnPresentation.dispose(); - } - - if (fContentProvider != null) { - fContentProvider.dispose(); - fContentProvider = null; - } - if (fLabelProvider != null) { - fLabelProvider.dispose(); - fLabelProvider = null; - } - - fTree.removeItemListener(this); - fTree.dispose(); - } - - /** - * Returns this viewer's presentation context. - * - * @return presentation context - */ - @Override + fFilters = filters; + } + + public void dispose() { + if (fColumnPresentation != null) { + fColumnPresentation.dispose(); + } + + if (fContentProvider != null) { + fContentProvider.dispose(); + fContentProvider = null; + } + if (fLabelProvider != null) { + fLabelProvider.dispose(); + fLabelProvider = null; + } + + fTree.removeItemListener(this); + fTree.dispose(); + } + + /** + * Returns this viewer's presentation context. + * + * @return presentation context + */ + @Override public IPresentationContext getPresentationContext() { - return fContext; - } - - /** - * Configures the columns for the given viewer input. - * - * @param input new viewer input - */ - private void resetColumns(Object input) { - if (input != null) { - // only change columns if the input is non-null (persist when empty) - IColumnPresentationFactory factory = ViewerAdapterService.getColumnPresentationFactory(input); - PresentationContext context = (PresentationContext) getPresentationContext(); - String type = null; - if (factory != null) { - type = factory.getColumnPresentationId(context, input); - } - if (type != null && factory != null) { - if (fColumnPresentation != null) { - if (!fColumnPresentation.getId().equals(type)) { - // dispose old, create new - fColumnPresentation.dispose(); - fColumnPresentation = null; - } - } - if (fColumnPresentation == null) { - fColumnPresentation = factory.createColumnPresentation(context, input); - if (fColumnPresentation != null) { - fColumnPresentation.init(context); - configureColumns(); - } - } - } else { - if (fColumnPresentation != null) { - fColumnPresentation.dispose(); - fColumnPresentation = null; - configureColumns(); - } - } - } - } - - /** - * Configures the columns based on the current settings. - */ - protected void configureColumns() { - if (fColumnPresentation != null) { - IColumnPresentation build = null; - if (isShowColumns(fColumnPresentation.getId())) { - build = fColumnPresentation; - } - buildColumns(build); - } else { - // get rid of columns - buildColumns(null); - } - } - - /** - * Toggles columns on/off for the current column presentation, if any. - * - * @param show whether to show columns if the current input supports - * columns - */ - public void setShowColumns(boolean show) { - if (show) { - if (!isShowColumns()) { - fShowColumns.remove(fColumnPresentation.getId()); - } - } else { - if (isShowColumns()){ - fShowColumns.put(fColumnPresentation.getId(), Boolean.FALSE); - } - } - refreshColumns(); - } - - /** - * Refreshes the columns in the view, based on the viewer input. - */ - protected void refreshColumns() { - configureColumns(); - refresh(); - } - - /** - * @return Returns true if columns are being displayed currently. - */ - public boolean isShowColumns() { - if (fColumnPresentation != null) { - return isShowColumns(fColumnPresentation.getId()); - } - return false; - } - - /** - * Returns whether columns can be toggled on/off for the current input. - * - * @return whether columns can be toggled on/off for the current input - */ - public boolean canToggleColumns() { - return fColumnPresentation != null && fColumnPresentation.isOptional(); - } - - protected boolean isShowColumns(String columnPresentationId) { - Boolean bool = fShowColumns.get(columnPresentationId); - if (bool == null) { - return true; - } - return bool.booleanValue(); - } - - /** - * Creates new columns for the given presentation. - * - * @param presentation presentation context to build columns for. - */ - protected void buildColumns(IColumnPresentation presentation) { - PresentationContext presentationContext = (PresentationContext) getPresentationContext(); - if (presentation != null) { - presentationContext.setColumns(getVisibleColumns()); - } else { - presentationContext.setColumns(null); - } - } - - /** - * Returns identifiers of the visible columns in this viewer, or <code>null</code> - * if there is currently no column presentation. - * - * @return visible columns or <code>null</code> - */ - @Override + return fContext; + } + + /** + * Configures the columns for the given viewer input. + * + * @param input new viewer input + */ + private void resetColumns(Object input) { + if (input != null) { + // only change columns if the input is non-null (persist when empty) + IColumnPresentationFactory factory = ViewerAdapterService.getColumnPresentationFactory(input); + PresentationContext context = (PresentationContext) getPresentationContext(); + String type = null; + if (factory != null) { + type = factory.getColumnPresentationId(context, input); + } + if (type != null && factory != null) { + if (fColumnPresentation != null) { + if (!fColumnPresentation.getId().equals(type)) { + // dispose old, create new + fColumnPresentation.dispose(); + fColumnPresentation = null; + } + } + if (fColumnPresentation == null) { + fColumnPresentation = factory.createColumnPresentation(context, input); + if (fColumnPresentation != null) { + fColumnPresentation.init(context); + configureColumns(); + } + } + } else { + if (fColumnPresentation != null) { + fColumnPresentation.dispose(); + fColumnPresentation = null; + configureColumns(); + } + } + } + } + + /** + * Configures the columns based on the current settings. + */ + protected void configureColumns() { + if (fColumnPresentation != null) { + IColumnPresentation build = null; + if (isShowColumns(fColumnPresentation.getId())) { + build = fColumnPresentation; + } + buildColumns(build); + } else { + // get rid of columns + buildColumns(null); + } + } + + /** + * Toggles columns on/off for the current column presentation, if any. + * + * @param show whether to show columns if the current input supports + * columns + */ + public void setShowColumns(boolean show) { + if (show) { + if (!isShowColumns()) { + fShowColumns.remove(fColumnPresentation.getId()); + } + } else { + if (isShowColumns()){ + fShowColumns.put(fColumnPresentation.getId(), Boolean.FALSE); + } + } + refreshColumns(); + } + + /** + * Refreshes the columns in the view, based on the viewer input. + */ + protected void refreshColumns() { + configureColumns(); + refresh(); + } + + /** + * @return Returns true if columns are being displayed currently. + */ + public boolean isShowColumns() { + if (fColumnPresentation != null) { + return isShowColumns(fColumnPresentation.getId()); + } + return false; + } + + /** + * Returns whether columns can be toggled on/off for the current input. + * + * @return whether columns can be toggled on/off for the current input + */ + public boolean canToggleColumns() { + return fColumnPresentation != null && fColumnPresentation.isOptional(); + } + + protected boolean isShowColumns(String columnPresentationId) { + Boolean bool = fShowColumns.get(columnPresentationId); + if (bool == null) { + return true; + } + return bool.booleanValue(); + } + + /** + * Creates new columns for the given presentation. + * + * @param presentation presentation context to build columns for. + */ + protected void buildColumns(IColumnPresentation presentation) { + PresentationContext presentationContext = (PresentationContext) getPresentationContext(); + if (presentation != null) { + presentationContext.setColumns(getVisibleColumns()); + } else { + presentationContext.setColumns(null); + } + } + + /** + * Returns identifiers of the visible columns in this viewer, or <code>null</code> + * if there is currently no column presentation. + * + * @return visible columns or <code>null</code> + */ + @Override public String[] getVisibleColumns() { - if (isShowColumns()) { - IColumnPresentation presentation = getColumnPresentation(); - if (presentation != null) { - String[] columns = fVisibleColumns.get(presentation.getId()); - if (columns == null) { - return presentation.getInitialColumns(); - } - return columns; - } - } - return null; - } - - /** - * Sets the id's of visible columns, or <code>null</code> to set default columns. - * Only affects the current column presentation. - * - * @param ids visible columns - */ - public void setVisibleColumns(String[] ids) { - if (ids != null && ids.length == 0) { - ids = null; - } - IColumnPresentation presentation = getColumnPresentation(); - if (presentation != null) { - fVisibleColumns.remove(presentation.getId()); - if (ids != null) { - // put back in table if not default - String[] columns = presentation.getInitialColumns(); - if (columns.length == ids.length) { - for (int i = 0; i < columns.length; i++) { - if (!ids[i].equals(columns[i])) { - fVisibleColumns.put(presentation.getId(), ids); - break; - } - } - } else { - fVisibleColumns.put(presentation.getId(), ids); - } - } - PresentationContext presentationContext = (PresentationContext) getPresentationContext(); - presentationContext.setColumns(getVisibleColumns()); - refreshColumns(); - } - } - - /** - * Returns the current column presentation for this viewer, or <code>null</code> - * if none. - * - * @return column presentation or <code>null</code> - */ - public IColumnPresentation getColumnPresentation() { - return fColumnPresentation; - } - - /** - * Save viewer state into the given memento. - * - * @param memento Memento to write state to. - */ - public void saveState(IMemento memento) { - if (!fShowColumns.isEmpty()) { + if (isShowColumns()) { + IColumnPresentation presentation = getColumnPresentation(); + if (presentation != null) { + String[] columns = fVisibleColumns.get(presentation.getId()); + if (columns == null) { + return presentation.getInitialColumns(); + } + return columns; + } + } + return null; + } + + /** + * Sets the id's of visible columns, or <code>null</code> to set default columns. + * Only affects the current column presentation. + * + * @param ids visible columns + */ + public void setVisibleColumns(String[] ids) { + if (ids != null && ids.length == 0) { + ids = null; + } + IColumnPresentation presentation = getColumnPresentation(); + if (presentation != null) { + fVisibleColumns.remove(presentation.getId()); + if (ids != null) { + // put back in table if not default + String[] columns = presentation.getInitialColumns(); + if (columns.length == ids.length) { + for (int i = 0; i < columns.length; i++) { + if (!ids[i].equals(columns[i])) { + fVisibleColumns.put(presentation.getId(), ids); + break; + } + } + } else { + fVisibleColumns.put(presentation.getId(), ids); + } + } + PresentationContext presentationContext = (PresentationContext) getPresentationContext(); + presentationContext.setColumns(getVisibleColumns()); + refreshColumns(); + } + } + + /** + * Returns the current column presentation for this viewer, or <code>null</code> + * if none. + * + * @return column presentation or <code>null</code> + */ + public IColumnPresentation getColumnPresentation() { + return fColumnPresentation; + } + + /** + * Save viewer state into the given memento. + * + * @param memento Memento to write state to. + */ + public void saveState(IMemento memento) { + if (!fShowColumns.isEmpty()) { for (Entry<String, Boolean> entry : fShowColumns.entrySet()) { - IMemento sizes = memento.createChild(SHOW_COLUMNS, entry.getKey()); - sizes.putString(SHOW_COLUMNS, entry.getValue().toString()); - } - } - if (!fVisibleColumns.isEmpty()) { + IMemento sizes = memento.createChild(SHOW_COLUMNS, entry.getKey()); + sizes.putString(SHOW_COLUMNS, entry.getValue().toString()); + } + } + if (!fVisibleColumns.isEmpty()) { for (Entry<String, String[]> entry : fVisibleColumns.entrySet()) { IMemento visible = memento.createChild(VISIBLE_COLUMNS, entry.getKey()); - String[] columns = entry.getValue(); - visible.putInteger(SIZE, columns.length); - for (int i = 0; i < columns.length; i++) { - visible.putString(COLUMN+Integer.toString(i), columns[i]); - } - } - } - // save presentation context properties - IPresentationContext context = getPresentationContext(); - if (context instanceof PresentationContext) { - PresentationContext pc = (PresentationContext) context; - pc.saveProperites(memento); - - } - } - - /** - * Initializes viewer state from the memento - * - * @param memento Memento to read state from. - */ - public void initState(IMemento memento) { - IMemento[] mementos = memento.getChildren(SHOW_COLUMNS); - for (int i = 0; i < mementos.length; i++) { - IMemento child = mementos[i]; - String id = child.getID(); - Boolean bool = Boolean.valueOf(child.getString(SHOW_COLUMNS)); - if (!bool.booleanValue()) { - fShowColumns.put(id, bool); - } - } - mementos = memento.getChildren(VISIBLE_COLUMNS); - for (int i = 0; i < mementos.length; i++) { - IMemento child = mementos[i]; - String id = child.getID(); - Integer integer = child.getInteger(SIZE); - if (integer != null) { - int length = integer.intValue(); - String[] columns = new String[length]; - for (int j = 0; j < length; j++) { - columns[j] = child.getString(COLUMN+Integer.toString(j)); - } - fVisibleColumns.put(id, columns); - } - } - // restore presentation context properties - // save presentation context properties - IPresentationContext context = getPresentationContext(); - if (context instanceof PresentationContext) { - PresentationContext pc = (PresentationContext) context; - pc.initProperties(memento); - } - } - - @Override + String[] columns = entry.getValue(); + visible.putInteger(SIZE, columns.length); + for (int i = 0; i < columns.length; i++) { + visible.putString(COLUMN+Integer.toString(i), columns[i]); + } + } + } + // save presentation context properties + IPresentationContext context = getPresentationContext(); + if (context instanceof PresentationContext) { + PresentationContext pc = (PresentationContext) context; + pc.saveProperites(memento); + + } + } + + /** + * Initializes viewer state from the memento + * + * @param memento Memento to read state from. + */ + public void initState(IMemento memento) { + IMemento[] mementos = memento.getChildren(SHOW_COLUMNS); + for (int i = 0; i < mementos.length; i++) { + IMemento child = mementos[i]; + String id = child.getID(); + Boolean bool = Boolean.valueOf(child.getString(SHOW_COLUMNS)); + if (!bool.booleanValue()) { + fShowColumns.put(id, bool); + } + } + mementos = memento.getChildren(VISIBLE_COLUMNS); + for (int i = 0; i < mementos.length; i++) { + IMemento child = mementos[i]; + String id = child.getID(); + Integer integer = child.getInteger(SIZE); + if (integer != null) { + int length = integer.intValue(); + String[] columns = new String[length]; + for (int j = 0; j < length; j++) { + columns[j] = child.getString(COLUMN+Integer.toString(j)); + } + fVisibleColumns.put(id, columns); + } + } + // restore presentation context properties + // save presentation context properties + IPresentationContext context = getPresentationContext(); + if (context instanceof PresentationContext) { + PresentationContext pc = (PresentationContext) context; + pc.initProperties(memento); + } + } + + @Override public void addViewerUpdateListener(IViewerUpdateListener listener) { - getContentProvider().addViewerUpdateListener(listener); - } + getContentProvider().addViewerUpdateListener(listener); + } - @Override + @Override public void removeViewerUpdateListener(IViewerUpdateListener listener) { - ITreeModelContentProvider cp = getContentProvider(); - if (cp != null) { - cp.removeViewerUpdateListener(listener); - } - } + ITreeModelContentProvider cp = getContentProvider(); + if (cp != null) { + cp.removeViewerUpdateListener(listener); + } + } - @Override + @Override public void addModelChangedListener(IModelChangedListener listener) { - getContentProvider().addModelChangedListener(listener); - } + getContentProvider().addModelChangedListener(listener); + } - @Override + @Override public void removeModelChangedListener(IModelChangedListener listener) { - ITreeModelContentProvider cp = getContentProvider(); - if (cp != null) { - cp.removeModelChangedListener(listener); - } - } + ITreeModelContentProvider cp = getContentProvider(); + if (cp != null) { + cp.removeModelChangedListener(listener); + } + } - @Override + @Override public void addStateUpdateListener(IStateUpdateListener listener) { - getContentProvider().addStateUpdateListener(listener); - } + getContentProvider().addStateUpdateListener(listener); + } - @Override + @Override public void removeStateUpdateListener(IStateUpdateListener listener) { - ITreeModelContentProvider cp = getContentProvider(); - if (cp != null) { - cp.removeStateUpdateListener(listener); - } - } + ITreeModelContentProvider cp = getContentProvider(); + if (cp != null) { + cp.removeStateUpdateListener(listener); + } + } @Override public void addLabelUpdateListener(ILabelUpdateListener listener) { - getLabelProvider().addLabelUpdateListener(listener); - } + getLabelProvider().addLabelUpdateListener(listener); + } - @Override + @Override public void removeLabelUpdateListener(ILabelUpdateListener listener) { - getLabelProvider().removeLabelUpdateListener(listener); - } - - /** - * Performs auto expand on an element at the specified path if the auto expand - * level dictates the element should be expanded. - * - * @param elementPath tree path to element to consider for expansion - */ - @Override + getLabelProvider().removeLabelUpdateListener(listener); + } + + /** + * Performs auto expand on an element at the specified path if the auto expand + * level dictates the element should be expanded. + * + * @param elementPath tree path to element to consider for expansion + */ + @Override public void autoExpand(TreePath elementPath) { - int level = getAutoExpandLevel(); - if (level > 0 || level == org.eclipse.debug.internal.ui.viewers.model.provisional.ITreeModelViewer.ALL_LEVELS) { - if (level == org.eclipse.debug.internal.ui.viewers.model.provisional.ITreeModelViewer.ALL_LEVELS || level > elementPath.getSegmentCount()) { - expandToLevel(elementPath, 1); - } - } - } - - @Override + int level = getAutoExpandLevel(); + if (level > 0 || level == org.eclipse.debug.internal.ui.viewers.model.provisional.ITreeModelViewer.ALL_LEVELS) { + if (level == org.eclipse.debug.internal.ui.viewers.model.provisional.ITreeModelViewer.ALL_LEVELS || level > elementPath.getSegmentCount()) { + expandToLevel(elementPath, 1); + } + } + } + + @Override public int getChildCount(TreePath path) { - int childCount = -1; - VirtualItem[] items = findItems(path); - if (items.length > 0) { - childCount = items[0].getItemCount(); - // Mimic the jface viewer behavior which returns 1 for child count - // for an item that has children but is not yet expanded. - // Return 0, if we do not know if the item has children. - if (childCount == -1) { - childCount = items[0].hasItems() ? 1 : 0; - } - } - return childCount; - } - - @Override + int childCount = -1; + VirtualItem[] items = findItems(path); + if (items.length > 0) { + childCount = items[0].getItemCount(); + // Mimic the jface viewer behavior which returns 1 for child count + // for an item that has children but is not yet expanded. + // Return 0, if we do not know if the item has children. + if (childCount == -1) { + childCount = items[0].hasItems() ? 1 : 0; + } + } + return childCount; + } + + @Override public Object getChildElement(TreePath path, int index) { - VirtualItem[] items = findItems(path); - if (items.length > 0) { - if (index < items[0].getItemCount()) { - return items[0].getItem(new VirtualItem.Index(index)).getData(); - } - } - return null; - } - - @Override + VirtualItem[] items = findItems(path); + if (items.length > 0) { + if (index < items[0].getItemCount()) { + return items[0].getItem(new VirtualItem.Index(index)).getData(); + } + } + return null; + } + + @Override public TreePath getTopElementPath() { - return null; - } + return null; + } - @Override + @Override public boolean saveElementState(TreePath path, ModelDelta delta, int flagsToSave) { - VirtualTree tree = getTree(); - VirtualItem[] selection = tree.getSelection(); + VirtualTree tree = getTree(); + VirtualItem[] selection = tree.getSelection(); Set<VirtualItem> set = new HashSet<>(); - for (int i = 0; i < selection.length; i++) { - set.add(selection[i]); - } - - VirtualItem[] items = null; - VirtualItem parent = findItem(path); - - if (parent != null) { - delta.setChildCount(((TreeModelContentProvider)getContentProvider()).viewToModelCount(path, parent.getItemCount())); - if (parent.getExpanded()) { - if ((flagsToSave & IModelDelta.EXPAND) != 0) { - delta.setFlags(delta.getFlags() | IModelDelta.EXPAND); - } - } else if ((flagsToSave & IModelDelta.COLLAPSE) != 0 && parent.hasItems()){ - delta.setFlags(delta.getFlags() | IModelDelta.COLLAPSE); - } - - if (set.contains(parent) && (flagsToSave & IModelDelta.SELECT) != 0) { - delta.setFlags(delta.getFlags() | IModelDelta.SELECT); - } - - items = parent.getItems(); - for (int i = 0; i < items.length; i++) { - doSaveElementState(path, delta, items[i], set, flagsToSave); - } - return true; - } else { - return false; - } - } + for (int i = 0; i < selection.length; i++) { + set.add(selection[i]); + } + + VirtualItem[] items = null; + VirtualItem parent = findItem(path); + + if (parent != null) { + delta.setChildCount(((TreeModelContentProvider)getContentProvider()).viewToModelCount(path, parent.getItemCount())); + if (parent.getExpanded()) { + if ((flagsToSave & IModelDelta.EXPAND) != 0) { + delta.setFlags(delta.getFlags() | IModelDelta.EXPAND); + } + } else if ((flagsToSave & IModelDelta.COLLAPSE) != 0 && parent.hasItems()){ + delta.setFlags(delta.getFlags() | IModelDelta.COLLAPSE); + } + + if (set.contains(parent) && (flagsToSave & IModelDelta.SELECT) != 0) { + delta.setFlags(delta.getFlags() | IModelDelta.SELECT); + } + + items = parent.getItems(); + for (int i = 0; i < items.length; i++) { + doSaveElementState(path, delta, items[i], set, flagsToSave); + } + return true; + } else { + return false; + } + } private void doSaveElementState(TreePath parentPath, ModelDelta delta, VirtualItem item, Collection<VirtualItem> set, int flagsToSave) { - Object element = item.getData(); - if (element != null) { - boolean expanded = item.getExpanded(); - boolean selected = set.contains(item); - int flags = IModelDelta.NO_CHANGE; - if (expanded && (flagsToSave & IModelDelta.EXPAND) != 0) { - flags = flags | IModelDelta.EXPAND; - } - if (!expanded && (flagsToSave & IModelDelta.COLLAPSE) != 0 && item.hasItems()){ - flags = flags | IModelDelta.COLLAPSE; - } - if (selected && (flagsToSave & IModelDelta.SELECT) != 0) { - flags = flags | IModelDelta.SELECT; - } - if (expanded || flags != IModelDelta.NO_CHANGE) { - int modelIndex = ((TreeModelContentProvider)getContentProvider()).viewToModelIndex(parentPath, item.getIndex().intValue()); - TreePath elementPath = parentPath.createChildPath(element); - int numChildren = ((TreeModelContentProvider)getContentProvider()).viewToModelCount(elementPath, item.getItemCount()); - ModelDelta childDelta = delta.addNode(element, modelIndex, flags, numChildren); - if (expanded) { - VirtualItem[] items = item.getItems(); - for (int i = 0; i < items.length; i++) { - doSaveElementState(elementPath, childDelta, items[i], set, flagsToSave); - } - } - } - } - } - - @Override + Object element = item.getData(); + if (element != null) { + boolean expanded = item.getExpanded(); + boolean selected = set.contains(item); + int flags = IModelDelta.NO_CHANGE; + if (expanded && (flagsToSave & IModelDelta.EXPAND) != 0) { + flags = flags | IModelDelta.EXPAND; + } + if (!expanded && (flagsToSave & IModelDelta.COLLAPSE) != 0 && item.hasItems()){ + flags = flags | IModelDelta.COLLAPSE; + } + if (selected && (flagsToSave & IModelDelta.SELECT) != 0) { + flags = flags | IModelDelta.SELECT; + } + if (expanded || flags != IModelDelta.NO_CHANGE) { + int modelIndex = ((TreeModelContentProvider)getContentProvider()).viewToModelIndex(parentPath, item.getIndex().intValue()); + TreePath elementPath = parentPath.createChildPath(element); + int numChildren = ((TreeModelContentProvider)getContentProvider()).viewToModelCount(elementPath, item.getItemCount()); + ModelDelta childDelta = delta.addNode(element, modelIndex, flags, numChildren); + if (expanded) { + VirtualItem[] items = item.getItems(); + for (int i = 0; i < items.length; i++) { + doSaveElementState(elementPath, childDelta, items[i], set, flagsToSave); + } + } + } + } + } + + @Override public void updateViewer(IModelDelta delta) { - getContentProvider().updateModel(delta, ITreeModelContentProvider.ALL_MODEL_DELTA_FLAGS); - } + getContentProvider().updateModel(delta, ITreeModelContentProvider.ALL_MODEL_DELTA_FLAGS); + } - @Override + @Override public ViewerLabel getElementLabel(TreePath path, String columnId) { - if (path.getSegmentCount() == 0) { - return null; - } - - int columnIdx = -1; - String[] visibleColumns = getVisibleColumns(); - if (columnId != null && visibleColumns != null) { - int i = 0; - for (i = 0; i < visibleColumns.length; i++) { - if (columnId.equals(getVisibleColumns()[i])) { - columnIdx = i; - break; - } - } - if (i == visibleColumns.length) { - return null; - } - } else { - columnIdx = 0; - } - VirtualItem item = findItem(path); - - if (item != null) { - ViewerLabel label = new ViewerLabel(getText(item, columnIdx), getImage(item, columnIdx)); - label.setFont(getFont(item, columnIdx)); - label.setBackground(getBackground(item, columnIdx)); - label.setForeground(getForeground(item, columnIdx)); - return label; - } - return null; - } - - @Override + if (path.getSegmentCount() == 0) { + return null; + } + + int columnIdx = -1; + String[] visibleColumns = getVisibleColumns(); + if (columnId != null && visibleColumns != null) { + int i = 0; + for (i = 0; i < visibleColumns.length; i++) { + if (columnId.equals(getVisibleColumns()[i])) { + columnIdx = i; + break; + } + } + if (i == visibleColumns.length) { + return null; + } + } else { + columnIdx = 0; + } + VirtualItem item = findItem(path); + + if (item != null) { + ViewerLabel label = new ViewerLabel(getText(item, columnIdx), getImage(item, columnIdx)); + label.setFont(getFont(item, columnIdx)); + label.setBackground(getBackground(item, columnIdx)); + label.setForeground(getForeground(item, columnIdx)); + return label; + } + return null; + } + + @Override public TreePath[] getElementPaths(Object element) { - VirtualItem[] items = findItems(element); - TreePath[] paths = new TreePath[items.length]; - for (int i = 0; i < items.length; i++) { - paths[i] = getTreePathFromItem(items[i]); - } - return paths; - } - - - public String getText(VirtualItem item, int columnIdx) { - String[] texts = (String[])item.getData(VirtualItem.LABEL_KEY); - if (texts != null && texts.length > columnIdx) { - return texts[columnIdx]; - } - return null; - } - - public Image getImage(VirtualItem item, int columnIdx) { - ImageDescriptor[] imageDescriptors = (ImageDescriptor[]) item.getData(VirtualItem.IMAGE_KEY); - if (imageDescriptors != null && imageDescriptors.length > columnIdx) { - return getLabelProvider().getImage(imageDescriptors[columnIdx]); - } - return null; - } - - public Font getFont(VirtualItem item, int columnIdx) { - FontData[] fontDatas = (FontData[]) item.getData(VirtualItem.FONT_KEY); - if (fontDatas != null) { - return getLabelProvider().getFont(fontDatas[columnIdx]); - } - return null; - } - - public Color getForeground(VirtualItem item, int columnIdx) { - RGB[] rgbs = (RGB[]) item.getData(VirtualItem.FOREGROUND_KEY); - if (rgbs != null) { - return getLabelProvider().getColor(rgbs[columnIdx]); - } - return null; - } - - public Color getBackground(VirtualItem item, int columnIdx) { - RGB[] rgbs = (RGB[]) item.getData(VirtualItem.BACKGROUND_KEY); - if (rgbs != null) { - return getLabelProvider().getColor(rgbs[columnIdx]); - } - return null; - } - - @Override + VirtualItem[] items = findItems(element); + TreePath[] paths = new TreePath[items.length]; + for (int i = 0; i < items.length; i++) { + paths[i] = getTreePathFromItem(items[i]); + } + return paths; + } + + + public String getText(VirtualItem item, int columnIdx) { + String[] texts = (String[])item.getData(VirtualItem.LABEL_KEY); + if (texts != null && texts.length > columnIdx) { + return texts[columnIdx]; + } + return null; + } + + public Image getImage(VirtualItem item, int columnIdx) { + ImageDescriptor[] imageDescriptors = (ImageDescriptor[]) item.getData(VirtualItem.IMAGE_KEY); + if (imageDescriptors != null && imageDescriptors.length > columnIdx) { + return getLabelProvider().getImage(imageDescriptors[columnIdx]); + } + return null; + } + + public Font getFont(VirtualItem item, int columnIdx) { + FontData[] fontDatas = (FontData[]) item.getData(VirtualItem.FONT_KEY); + if (fontDatas != null) { + return getLabelProvider().getFont(fontDatas[columnIdx]); + } + return null; + } + + public Color getForeground(VirtualItem item, int columnIdx) { + RGB[] rgbs = (RGB[]) item.getData(VirtualItem.FOREGROUND_KEY); + if (rgbs != null) { + return getLabelProvider().getColor(rgbs[columnIdx]); + } + return null; + } + + public Color getBackground(VirtualItem item, int columnIdx) { + RGB[] rgbs = (RGB[]) item.getData(VirtualItem.BACKGROUND_KEY); + if (rgbs != null) { + return getLabelProvider().getColor(rgbs[columnIdx]); + } + return null; + } + + @Override public void clearSelectionQuiet() { - getTree().setSelection(EMPTY_ITEMS_ARRAY); - } + getTree().setSelection(EMPTY_ITEMS_ARRAY); + } - @Override + @Override public boolean getElementChecked(TreePath path) { - // Not supported - return false; - } + // Not supported + return false; + } - @Override + @Override public boolean getElementGrayed(TreePath path) { - // Not supported - return false; - } + // Not supported + return false; + } - @Override + @Override public void setElementChecked(TreePath path, boolean checked, boolean grayed) { - // Not supported - } + // Not supported + } - @Override + @Override public String toString() { - return getTree().toString(); - } + return getTree().toString(); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/LabelUpdate.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/LabelUpdate.java index 4ece51019..984ca2e6e 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/LabelUpdate.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/LabelUpdate.java @@ -137,7 +137,7 @@ class LabelUpdate extends Request implements ILabelUpdate, ICheckUpdate { * Applies settings to viewer cell */ public void performUpdate() { - fProvider.setElementData(fElementPath, fNumColumns, fLabels, fImageDescriptors, fFontDatas, fForegrounds, fBackgrounds, fChecked, fGrayed); + fProvider.setElementData(fElementPath, fNumColumns, fLabels, fImageDescriptors, fFontDatas, fForegrounds, fBackgrounds, fChecked, fGrayed); fProvider.updateComplete(this); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/MementoUpdate.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/MementoUpdate.java index 329cac20b..0e718ba2e 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/MementoUpdate.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/MementoUpdate.java @@ -33,12 +33,12 @@ abstract class MementoUpdate extends Request implements IViewerUpdate { /** * Constructs a viewer state request. - * @param provider the content provider to use for the update - * @param viewerInput the current input - * @param elementPath the path of the element to update - * @param element the element to update - * @param memento Memento to update - * @param context the presentation context + * @param provider the content provider to use for the update + * @param viewerInput the current input + * @param elementPath the path of the element to update + * @param element the element to update + * @param memento Memento to update + * @param context the presentation context * */ public MementoUpdate(TreeModelContentProvider provider, Object viewerInput, IPresentationContext context, Object element, TreePath elementPath, IMemento memento) { diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/SubTreeModelViewer.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/SubTreeModelViewer.java index 8886c18d8..00a70d498 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/SubTreeModelViewer.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/SubTreeModelViewer.java @@ -45,545 +45,545 @@ import org.eclipse.swt.widgets.Display; */ public class SubTreeModelViewer extends TreeModelViewer { - /** - * The tree path in the model to the root element of this viewer. - */ - private TreePath fRootPath = TreePath.EMPTY; - - /** - * Viewer delegate that content and label providers refer to for viewer data. - */ - private DelegatingTreeModelViewer fDelegatingViewer; - - /** - * @return Returns the root element's model tree path. - */ - public TreePath getRootPath() { - return fRootPath; - } - - public SubTreeModelViewer(Composite parent, int style, IPresentationContext context) { - super(parent, style, context); - } - - /** - * Sets the viewer's input and root element's path - * - * @param input New viewer input. - * @param rootPath New root element path. - */ - public void setInput(Object input, TreePath rootPath) { - fRootPath = rootPath; - super.setInput(input); - } - - /** - * A proxy for the sub tree viewer which is given to the content and - * label providers. It translates the sub-tree paths in the viewer to the - * full model paths that the providers expect. - */ - public class DelegatingTreeModelViewer extends Viewer - implements IInternalTreeModelViewer - { - @Override + /** + * The tree path in the model to the root element of this viewer. + */ + private TreePath fRootPath = TreePath.EMPTY; + + /** + * Viewer delegate that content and label providers refer to for viewer data. + */ + private DelegatingTreeModelViewer fDelegatingViewer; + + /** + * @return Returns the root element's model tree path. + */ + public TreePath getRootPath() { + return fRootPath; + } + + public SubTreeModelViewer(Composite parent, int style, IPresentationContext context) { + super(parent, style, context); + } + + /** + * Sets the viewer's input and root element's path + * + * @param input New viewer input. + * @param rootPath New root element path. + */ + public void setInput(Object input, TreePath rootPath) { + fRootPath = rootPath; + super.setInput(input); + } + + /** + * A proxy for the sub tree viewer which is given to the content and + * label providers. It translates the sub-tree paths in the viewer to the + * full model paths that the providers expect. + */ + public class DelegatingTreeModelViewer extends Viewer + implements IInternalTreeModelViewer + { + @Override public void reveal(TreePath path, int index) { - if (path.startsWith(fRootPath, null)) { - SubTreeModelViewer.this.reveal(createSubPath(path), index); - } - } + if (path.startsWith(fRootPath, null)) { + SubTreeModelViewer.this.reveal(createSubPath(path), index); + } + } - @Override + @Override public void replace(Object parentOrTreePath, int index, Object element) { - if (parentOrTreePath instanceof TreePath) { - TreePath path = (TreePath)parentOrTreePath; - if (path.startsWith(fRootPath, null)) { - SubTreeModelViewer.this.replace(createSubPath(path), index, element); - } - } else { - SubTreeModelViewer.this.replace(parentOrTreePath, index, element); - } - } - - @Override + if (parentOrTreePath instanceof TreePath) { + TreePath path = (TreePath)parentOrTreePath; + if (path.startsWith(fRootPath, null)) { + SubTreeModelViewer.this.replace(createSubPath(path), index, element); + } + } else { + SubTreeModelViewer.this.replace(parentOrTreePath, index, element); + } + } + + @Override public void setChildCount(Object elementOrTreePath, int count) { - if (elementOrTreePath instanceof TreePath) { - TreePath path = (TreePath)elementOrTreePath; - if (path.startsWith(fRootPath, null)) { - SubTreeModelViewer.this.setChildCount(createSubPath(path), count); - } - } else { - SubTreeModelViewer.this.setChildCount(elementOrTreePath, count); - } - } - - @Override + if (elementOrTreePath instanceof TreePath) { + TreePath path = (TreePath)elementOrTreePath; + if (path.startsWith(fRootPath, null)) { + SubTreeModelViewer.this.setChildCount(createSubPath(path), count); + } + } else { + SubTreeModelViewer.this.setChildCount(elementOrTreePath, count); + } + } + + @Override public void setHasChildren(Object elementOrTreePath, boolean hasChildren) { - if (elementOrTreePath instanceof TreePath) { - TreePath path = (TreePath)elementOrTreePath; - if (path.startsWith(fRootPath, null)) { - SubTreeModelViewer.this.setHasChildren(createSubPath(path), hasChildren); - } - } else { - SubTreeModelViewer.this.setHasChildren(elementOrTreePath, hasChildren); - } - } - - @Override + if (elementOrTreePath instanceof TreePath) { + TreePath path = (TreePath)elementOrTreePath; + if (path.startsWith(fRootPath, null)) { + SubTreeModelViewer.this.setHasChildren(createSubPath(path), hasChildren); + } + } else { + SubTreeModelViewer.this.setHasChildren(elementOrTreePath, hasChildren); + } + } + + @Override public void autoExpand(TreePath elementPath) { - // not supported - } + // not supported + } - @Override + @Override public void setExpandedState(Object elementOrTreePath, boolean expanded) { - if (elementOrTreePath instanceof TreePath) { - TreePath path = (TreePath)elementOrTreePath; - if (path.startsWith(fRootPath, null)) { - SubTreeModelViewer.this.setExpandedState(createSubPath(path), expanded); - } - } else { - SubTreeModelViewer.this.setExpandedState(elementOrTreePath, expanded); - } - } - - @Override + if (elementOrTreePath instanceof TreePath) { + TreePath path = (TreePath)elementOrTreePath; + if (path.startsWith(fRootPath, null)) { + SubTreeModelViewer.this.setExpandedState(createSubPath(path), expanded); + } + } else { + SubTreeModelViewer.this.setExpandedState(elementOrTreePath, expanded); + } + } + + @Override public void expandToLevel(Object elementOrTreePath, int level) { - if (elementOrTreePath instanceof TreePath) { - TreePath path = (TreePath)elementOrTreePath; - if (path.startsWith(fRootPath, null)) { - SubTreeModelViewer.this.expandToLevel(createSubPath(path), level); - } - } else { - SubTreeModelViewer.this.expandToLevel(elementOrTreePath, level); - } - } - - @Override + if (elementOrTreePath instanceof TreePath) { + TreePath path = (TreePath)elementOrTreePath; + if (path.startsWith(fRootPath, null)) { + SubTreeModelViewer.this.expandToLevel(createSubPath(path), level); + } + } else { + SubTreeModelViewer.this.expandToLevel(elementOrTreePath, level); + } + } + + @Override public void remove(Object elementOrTreePath) { - if (elementOrTreePath instanceof TreePath) { - TreePath path = (TreePath)elementOrTreePath; - if (path.startsWith(fRootPath, null)) { - SubTreeModelViewer.this.remove(createSubPath(path)); - } - } else { - SubTreeModelViewer.this.remove(elementOrTreePath); - } - } - - @Override + if (elementOrTreePath instanceof TreePath) { + TreePath path = (TreePath)elementOrTreePath; + if (path.startsWith(fRootPath, null)) { + SubTreeModelViewer.this.remove(createSubPath(path)); + } + } else { + SubTreeModelViewer.this.remove(elementOrTreePath); + } + } + + @Override public void remove(Object parentOrTreePath, final int index) { - if (parentOrTreePath instanceof TreePath) { - TreePath path = (TreePath)parentOrTreePath; - if (path.startsWith(fRootPath, null)) { - SubTreeModelViewer.this.remove(createSubPath(path), index); - } - } else { - SubTreeModelViewer.this.remove(parentOrTreePath, index); - } - } - - @Override + if (parentOrTreePath instanceof TreePath) { + TreePath path = (TreePath)parentOrTreePath; + if (path.startsWith(fRootPath, null)) { + SubTreeModelViewer.this.remove(createSubPath(path), index); + } + } else { + SubTreeModelViewer.this.remove(parentOrTreePath, index); + } + } + + @Override public void insert(Object parentOrTreePath, Object element, int position) { - if (parentOrTreePath instanceof TreePath) { - TreePath path = (TreePath)parentOrTreePath; - if (path.startsWith(fRootPath, null)) { - SubTreeModelViewer.this.insert(createSubPath(path), element, position); - } - } else { - SubTreeModelViewer.this.insert(parentOrTreePath, element, position); - } - } - - @Override + if (parentOrTreePath instanceof TreePath) { + TreePath path = (TreePath)parentOrTreePath; + if (path.startsWith(fRootPath, null)) { + SubTreeModelViewer.this.insert(createSubPath(path), element, position); + } + } else { + SubTreeModelViewer.this.insert(parentOrTreePath, element, position); + } + } + + @Override public boolean getExpandedState(Object elementOrTreePath) { - if (elementOrTreePath instanceof TreePath) { - TreePath path = (TreePath)elementOrTreePath; - if (path.startsWith(fRootPath, null)) { - return SubTreeModelViewer.this.getExpandedState(createSubPath(path)); - } - } else { - return SubTreeModelViewer.this.getExpandedState(elementOrTreePath); - } - return false; - } - - @Override + if (elementOrTreePath instanceof TreePath) { + TreePath path = (TreePath)elementOrTreePath; + if (path.startsWith(fRootPath, null)) { + return SubTreeModelViewer.this.getExpandedState(createSubPath(path)); + } + } else { + return SubTreeModelViewer.this.getExpandedState(elementOrTreePath); + } + return false; + } + + @Override public int getChildCount(TreePath path) { - if (path.startsWith(fRootPath, null)) { - return SubTreeModelViewer.this.getChildCount(createSubPath(path)); - } - return -1; - } + if (path.startsWith(fRootPath, null)) { + return SubTreeModelViewer.this.getChildCount(createSubPath(path)); + } + return -1; + } - @Override + @Override public boolean getHasChildren(Object elementOrTreePath) { - if (elementOrTreePath instanceof TreePath) { - TreePath path = (TreePath)elementOrTreePath; - if (path.startsWith(fRootPath, null)) { - return SubTreeModelViewer.this.getHasChildren(createSubPath(path)); - } - } else { - return SubTreeModelViewer.this.getHasChildren(elementOrTreePath); - } - return false; - } - - @Override + if (elementOrTreePath instanceof TreePath) { + TreePath path = (TreePath)elementOrTreePath; + if (path.startsWith(fRootPath, null)) { + return SubTreeModelViewer.this.getHasChildren(createSubPath(path)); + } + } else { + return SubTreeModelViewer.this.getHasChildren(elementOrTreePath); + } + return false; + } + + @Override public Object getChildElement(TreePath path, int index) { - if (path.startsWith(fRootPath, null)) { - return SubTreeModelViewer.this.getChildElement(createSubPath(path), index); - } - return null; - } + if (path.startsWith(fRootPath, null)) { + return SubTreeModelViewer.this.getChildElement(createSubPath(path), index); + } + return null; + } - @Override + @Override public TreePath getTopElementPath() { - return createFullPath(SubTreeModelViewer.this.getTopElementPath()); - } + return createFullPath(SubTreeModelViewer.this.getTopElementPath()); + } - @Override + @Override public int findElementIndex(TreePath parentPath, Object element) { - if (parentPath.startsWith(fRootPath, null)) { - return SubTreeModelViewer.this.findElementIndex(createSubPath(parentPath), element); - } - return -1; - } + if (parentPath.startsWith(fRootPath, null)) { + return SubTreeModelViewer.this.findElementIndex(createSubPath(parentPath), element); + } + return -1; + } - @Override + @Override public boolean getElementChildrenRealized(TreePath parentPath) { - if (parentPath.startsWith(fRootPath, null)) { - return SubTreeModelViewer.this.getElementChildrenRealized(createSubPath(parentPath)); - } - return true; - } + if (parentPath.startsWith(fRootPath, null)) { + return SubTreeModelViewer.this.getElementChildrenRealized(createSubPath(parentPath)); + } + return true; + } - @Override + @Override public void setElementData(TreePath path, int numColumns, String[] labels, ImageDescriptor[] images, FontData[] fontDatas, RGB[] foregrounds, RGB[] backgrounds) { - if (path.startsWith(fRootPath, null)) { - SubTreeModelViewer.this.setElementData(createSubPath(path), numColumns, labels, images, fontDatas, foregrounds, backgrounds); - } - } + if (path.startsWith(fRootPath, null)) { + SubTreeModelViewer.this.setElementData(createSubPath(path), numColumns, labels, images, fontDatas, foregrounds, backgrounds); + } + } - @Override + @Override public Control getControl() { - return SubTreeModelViewer.this.getControl(); - } + return SubTreeModelViewer.this.getControl(); + } - @Override + @Override public Object getInput() { - return SubTreeModelViewer.this.getInput(); - } + return SubTreeModelViewer.this.getInput(); + } - @Override + @Override public ISelection getSelection() { - return SubTreeModelViewer.this.getSelection(); - } + return SubTreeModelViewer.this.getSelection(); + } - @Override + @Override public void refresh() { - SubTreeModelViewer.this.refresh(); - } + SubTreeModelViewer.this.refresh(); + } - @Override + @Override public void setInput(Object input) { - SubTreeModelViewer.this.setInput(input); - } + SubTreeModelViewer.this.setInput(input); + } - @Override + @Override public void setSelection(ISelection selection, boolean reveal) { - SubTreeModelViewer.this.setSelection(selection, reveal); - } + SubTreeModelViewer.this.setSelection(selection, reveal); + } - @Override + @Override public String[] getVisibleColumns() { - return SubTreeModelViewer.this.getVisibleColumns(); - } + return SubTreeModelViewer.this.getVisibleColumns(); + } - @Override + @Override public void addLabelUpdateListener(ILabelUpdateListener listener) { - SubTreeModelViewer.this.addLabelUpdateListener(listener); - } + SubTreeModelViewer.this.addLabelUpdateListener(listener); + } - @Override + @Override public void addModelChangedListener(IModelChangedListener listener) { - SubTreeModelViewer.this.addModelChangedListener(listener); - } + SubTreeModelViewer.this.addModelChangedListener(listener); + } - @Override + @Override public void addStateUpdateListener(IStateUpdateListener listener) { - SubTreeModelViewer.this.addStateUpdateListener(listener); - } + SubTreeModelViewer.this.addStateUpdateListener(listener); + } - @Override + @Override public void addViewerUpdateListener(IViewerUpdateListener listener) { - SubTreeModelViewer.this.addViewerUpdateListener(listener); - } + SubTreeModelViewer.this.addViewerUpdateListener(listener); + } - @Override + @Override public int getAutoExpandLevel() { - return SubTreeModelViewer.this.getAutoExpandLevel(); - } + return SubTreeModelViewer.this.getAutoExpandLevel(); + } - @Override + @Override public Display getDisplay() { - return SubTreeModelViewer.this.getDisplay(); - } + return SubTreeModelViewer.this.getDisplay(); + } - @Override + @Override public ViewerLabel getElementLabel(TreePath path, String columnId) { - return SubTreeModelViewer.this.getElementLabel(path, columnId); - } + return SubTreeModelViewer.this.getElementLabel(path, columnId); + } - @Override + @Override public IPresentationContext getPresentationContext() { - return SubTreeModelViewer.this.getPresentationContext(); - } + return SubTreeModelViewer.this.getPresentationContext(); + } - @Override + @Override public void removeLabelUpdateListener(ILabelUpdateListener listener) { - SubTreeModelViewer.this.removeLabelUpdateListener(listener); - } + SubTreeModelViewer.this.removeLabelUpdateListener(listener); + } - @Override + @Override public void removeModelChangedListener(IModelChangedListener listener) { - SubTreeModelViewer.this.removeModelChangedListener(listener); - } + SubTreeModelViewer.this.removeModelChangedListener(listener); + } - @Override + @Override public void removeStateUpdateListener(IStateUpdateListener listener) { - SubTreeModelViewer.this.removeStateUpdateListener(listener); - } + SubTreeModelViewer.this.removeStateUpdateListener(listener); + } - @Override + @Override public void removeViewerUpdateListener(IViewerUpdateListener listener) { - SubTreeModelViewer.this.removeViewerUpdateListener(listener); - } + SubTreeModelViewer.this.removeViewerUpdateListener(listener); + } - @Override + @Override public boolean saveElementState(TreePath path, ModelDelta delta, int deltaFlags) { - return SubTreeModelViewer.this.saveElementState(path, delta, deltaFlags); - } + return SubTreeModelViewer.this.saveElementState(path, delta, deltaFlags); + } - @Override + @Override public void setAutoExpandLevel(int level) { - SubTreeModelViewer.this.setAutoExpandLevel(level); - } + SubTreeModelViewer.this.setAutoExpandLevel(level); + } - @Override + @Override public void setSelection(ISelection selection, boolean reveal, boolean force) { - SubTreeModelViewer.this.setSelection(selection, reveal, force); - } + SubTreeModelViewer.this.setSelection(selection, reveal, force); + } - @Override + @Override public boolean trySelection(ISelection selection, boolean reveal, boolean force) { - return SubTreeModelViewer.this.trySelection(selection, reveal, force); - } + return SubTreeModelViewer.this.trySelection(selection, reveal, force); + } - @Override + @Override public void updateViewer(IModelDelta delta) { - SubTreeModelViewer.this.updateViewer(delta); - } + SubTreeModelViewer.this.updateViewer(delta); + } - @Override + @Override public ViewerFilter[] getFilters() { - return SubTreeModelViewer.this.getFilters(); - } + return SubTreeModelViewer.this.getFilters(); + } - @Override + @Override public void addFilter(ViewerFilter filter) { - SubTreeModelViewer.this.addFilter(filter); - } + SubTreeModelViewer.this.addFilter(filter); + } - @Override + @Override public void setFilters(ViewerFilter... filters) { - SubTreeModelViewer.this.setFilters(filters); - } + SubTreeModelViewer.this.setFilters(filters); + } - @Override + @Override public boolean overrideSelection(ISelection current, ISelection candidate) { - return SubTreeModelViewer.this.overrideSelection(current, candidate); - } + return SubTreeModelViewer.this.overrideSelection(current, candidate); + } - @Override + @Override public void refresh(Object element) { - SubTreeModelViewer.this.refresh(element); - } + SubTreeModelViewer.this.refresh(element); + } - @Override + @Override public void update(Object element) { - SubTreeModelViewer.this.update(element); - } + SubTreeModelViewer.this.update(element); + } - @Override + @Override public void clearSelectionQuiet() { - SubTreeModelViewer.this.clearSelectionQuiet(); - } + SubTreeModelViewer.this.clearSelectionQuiet(); + } - @Override + @Override public TreePath[] getElementPaths(Object element) { - TreePath[] subViewerPaths = SubTreeModelViewer.this.getElementPaths(element); - TreePath[] retVal = new TreePath[subViewerPaths.length]; - for (int i = 0; i < subViewerPaths.length; i++) { - retVal[i] = createFullPath(subViewerPaths[i]); - } - return retVal; - } - - @Override + TreePath[] subViewerPaths = SubTreeModelViewer.this.getElementPaths(element); + TreePath[] retVal = new TreePath[subViewerPaths.length]; + for (int i = 0; i < subViewerPaths.length; i++) { + retVal[i] = createFullPath(subViewerPaths[i]); + } + return retVal; + } + + @Override public boolean getElementChecked(TreePath path) { - return SubTreeModelViewer.this.getElementChecked(createSubPath(path)); - } + return SubTreeModelViewer.this.getElementChecked(createSubPath(path)); + } - @Override + @Override public boolean getElementGrayed(TreePath path) { - return SubTreeModelViewer.this.getElementGrayed(createSubPath(path)); - } + return SubTreeModelViewer.this.getElementGrayed(createSubPath(path)); + } - @Override + @Override public void setElementChecked(TreePath path, boolean checked, boolean grayed) { - SubTreeModelViewer.this.setElementChecked(createSubPath(path), checked, grayed); - } - } + SubTreeModelViewer.this.setElementChecked(createSubPath(path), checked, grayed); + } + } - /** - * Delegating content provider. It translates all the calls to the - * underlying content provider to use full model tree paths. - */ - private class SubTreeModelContentProvider implements ITreeModelContentProvider { + /** + * Delegating content provider. It translates all the calls to the + * underlying content provider to use full model tree paths. + */ + private class SubTreeModelContentProvider implements ITreeModelContentProvider { - private TreeModelContentProvider fBaseProvider; + private TreeModelContentProvider fBaseProvider; - public SubTreeModelContentProvider() { - fBaseProvider = new TreeModelContentProvider(); - } + public SubTreeModelContentProvider() { + fBaseProvider = new TreeModelContentProvider(); + } - @Override + @Override public void updateHasChildren(TreePath path) { - fBaseProvider.updateHasChildren(createFullPath(path)); - } + fBaseProvider.updateHasChildren(createFullPath(path)); + } - @Override + @Override public void updateChildCount(TreePath path, int currentChildCount) { - fBaseProvider.updateChildCount(createFullPath(path), currentChildCount); - } + fBaseProvider.updateChildCount(createFullPath(path), currentChildCount); + } - @Override + @Override public void updateElement(TreePath parentPath, int viewIndex) { - fBaseProvider.updateElement(createFullPath(parentPath), viewIndex); - } + fBaseProvider.updateElement(createFullPath(parentPath), viewIndex); + } - @Override + @Override public int viewToModelCount(TreePath parentPath, int count) { - return fBaseProvider.viewToModelCount(createFullPath(parentPath), count); - } + return fBaseProvider.viewToModelCount(createFullPath(parentPath), count); + } - @Override + @Override public int viewToModelIndex(TreePath parentPath, int index) { - return fBaseProvider.viewToModelIndex(createFullPath(parentPath), index); - } + return fBaseProvider.viewToModelIndex(createFullPath(parentPath), index); + } - @Override + @Override public void addModelChangedListener(IModelChangedListener listener) { - fBaseProvider.addModelChangedListener(listener); - } + fBaseProvider.addModelChangedListener(listener); + } - @Override + @Override public void preserveState(TreePath subPath) { - fBaseProvider.preserveState(createFullPath(subPath)); - } + fBaseProvider.preserveState(createFullPath(subPath)); + } - @Override + @Override public void addStateUpdateListener(IStateUpdateListener listener) { - fBaseProvider.addStateUpdateListener(listener); - } + fBaseProvider.addStateUpdateListener(listener); + } - @Override + @Override public void addViewerUpdateListener(IViewerUpdateListener listener) { - fBaseProvider.addViewerUpdateListener(listener); - } + fBaseProvider.addViewerUpdateListener(listener); + } - @Override + @Override public int getModelDeltaMask() { - return fBaseProvider.getModelDeltaMask(); - } + return fBaseProvider.getModelDeltaMask(); + } - @Override + @Override public int modelToViewChildCount(TreePath parentPath, int count) { - return fBaseProvider.modelToViewChildCount(createFullPath(parentPath), count); - } + return fBaseProvider.modelToViewChildCount(createFullPath(parentPath), count); + } - @Override + @Override public int modelToViewIndex(TreePath parentPath, int index) { - return fBaseProvider.modelToViewIndex(createFullPath(parentPath), index); - } + return fBaseProvider.modelToViewIndex(createFullPath(parentPath), index); + } - @Override + @Override public void removeModelChangedListener(IModelChangedListener listener) { - fBaseProvider.removeModelChangedListener(listener); - } + fBaseProvider.removeModelChangedListener(listener); + } - @Override + @Override public void removeStateUpdateListener(IStateUpdateListener listener) { - fBaseProvider.removeStateUpdateListener(listener); - } + fBaseProvider.removeStateUpdateListener(listener); + } - @Override + @Override public void removeViewerUpdateListener(IViewerUpdateListener listener) { - fBaseProvider.removeViewerUpdateListener(listener); - } + fBaseProvider.removeViewerUpdateListener(listener); + } - @Override + @Override public void setModelDeltaMask(int mask) { - fBaseProvider.setModelDeltaMask(mask); - } + fBaseProvider.setModelDeltaMask(mask); + } - @Override + @Override public boolean areTreeModelViewerFiltersApplicable(Object parentElement) { - return fBaseProvider.areTreeModelViewerFiltersApplicable(parentElement); - } + return fBaseProvider.areTreeModelViewerFiltersApplicable(parentElement); + } - @Override + @Override public boolean shouldFilter(Object parentElementOrTreePath, Object element) { - if (parentElementOrTreePath instanceof TreePath) { - TreePath path = (TreePath)parentElementOrTreePath; - return fBaseProvider.shouldFilter(createFullPath(path), element); - } else { - return fBaseProvider.shouldFilter(parentElementOrTreePath, element); - } + if (parentElementOrTreePath instanceof TreePath) { + TreePath path = (TreePath)parentElementOrTreePath; + return fBaseProvider.shouldFilter(createFullPath(path), element); + } else { + return fBaseProvider.shouldFilter(parentElementOrTreePath, element); + } - } + } - @Override + @Override public void unmapPath(TreePath path) { - fBaseProvider.unmapPath(createFullPath(path)); - } + fBaseProvider.unmapPath(createFullPath(path)); + } - @Override + @Override public void updateModel(IModelDelta delta, int mask) { - fBaseProvider.updateModel(delta, mask); - } + fBaseProvider.updateModel(delta, mask); + } - @Override + @Override public TreePath[] getParents(Object element) { - // Not used - return null; - } + // Not used + return null; + } - @Override + @Override public void cancelRestore(TreePath path, int flags) { - fBaseProvider.cancelRestore(createFullPath(path), flags); - } + fBaseProvider.cancelRestore(createFullPath(path), flags); + } - @Override + @Override public void dispose() { - fBaseProvider.dispose(); - } + fBaseProvider.dispose(); + } - @Override + @Override public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { - fBaseProvider.inputChanged(fDelegatingViewer, oldInput, newInput); - } + fBaseProvider.inputChanged(fDelegatingViewer, oldInput, newInput); + } @Override public void postInputChanged(IInternalTreeModelViewer viewer, @@ -591,125 +591,125 @@ public class SubTreeModelViewer extends TreeModelViewer { fBaseProvider.postInputChanged(viewer, oldInput, newInput); } - @Override + @Override public boolean setChecked(TreePath path, boolean checked) { - return fBaseProvider.setChecked(createFullPath(path), checked); - } + return fBaseProvider.setChecked(createFullPath(path), checked); + } - } + } - /** - * Delegating label provider. It translates all the calls to the - * underlying label provider to use full model tree paths. - */ - private class SubTreeModelLabelProvider extends ColumnLabelProvider - implements ITreeModelLabelProvider - { + /** + * Delegating label provider. It translates all the calls to the + * underlying label provider to use full model tree paths. + */ + private class SubTreeModelLabelProvider extends ColumnLabelProvider + implements ITreeModelLabelProvider + { - private TreeModelLabelProvider fBaseProvider; + private TreeModelLabelProvider fBaseProvider; - public SubTreeModelLabelProvider(IInternalTreeModelViewer viewer) { - fBaseProvider = new TreeModelLabelProvider(viewer); - } + public SubTreeModelLabelProvider(IInternalTreeModelViewer viewer) { + fBaseProvider = new TreeModelLabelProvider(viewer); + } - @Override + @Override public boolean update(TreePath elementPath) { - return fBaseProvider.update( createFullPath(elementPath) ); - } + return fBaseProvider.update( createFullPath(elementPath) ); + } - @Override + @Override public void addLabelUpdateListener(ILabelUpdateListener listener) { - fBaseProvider.addLabelUpdateListener(listener); - } + fBaseProvider.addLabelUpdateListener(listener); + } - @Override + @Override public Color getColor(RGB rgb) { - return fBaseProvider.getColor(rgb); - } + return fBaseProvider.getColor(rgb); + } - @Override + @Override public Font getFont(FontData fontData) { - return fBaseProvider.getFont(fontData); - } + return fBaseProvider.getFont(fontData); + } - @Override + @Override public Image getImage(ImageDescriptor descriptor) { - return fBaseProvider.getImage(descriptor); - } + return fBaseProvider.getImage(descriptor); + } - @Override + @Override public void removeLabelUpdateListener(ILabelUpdateListener listener) { - fBaseProvider.removeLabelUpdateListener(listener); - } + fBaseProvider.removeLabelUpdateListener(listener); + } - @Override + @Override public void addListener(ILabelProviderListener listener) { - fBaseProvider.addListener(listener); - } + fBaseProvider.addListener(listener); + } - @Override + @Override public void dispose() { - fBaseProvider.dispose(); - super.dispose(); - } + fBaseProvider.dispose(); + super.dispose(); + } - @Override + @Override public boolean isLabelProperty(Object element, String property) { - return fBaseProvider.isLabelProperty(element, property); - } + return fBaseProvider.isLabelProperty(element, property); + } - @Override + @Override public void removeListener(ILabelProviderListener listener) { - fBaseProvider.removeListener(listener); - } - } - - private TreePath createFullPath(TreePath subPath) { - if (fRootPath == null) { - return TreePath.EMPTY; - } - - Object[] segments = new Object[fRootPath.getSegmentCount() + subPath.getSegmentCount()]; - for (int i = 0; i < fRootPath.getSegmentCount(); i++) { - segments[i] = fRootPath.getSegment(i); - } - for (int i = 0; i < subPath.getSegmentCount(); i++) { - segments[i + fRootPath.getSegmentCount()] = subPath.getSegment(i); - } - return new TreePath(segments); - } - - private TreePath createSubPath(TreePath fullPath) { - if (fRootPath == null) { - return TreePath.EMPTY; - } - - if (fullPath.getSegmentCount() <= fRootPath.getSegmentCount()) { - return TreePath.EMPTY; - } - Object[] segments = new Object[fullPath.getSegmentCount() - fRootPath.getSegmentCount()]; - for (int i = 0; i < segments.length; i++) { - segments[i] = fullPath.getSegment(i + fRootPath.getSegmentCount()); - } - return new TreePath(segments); - } - - private DelegatingTreeModelViewer getDelegatingViewer() { - if (fDelegatingViewer == null) { - fDelegatingViewer = new DelegatingTreeModelViewer(); - } - return fDelegatingViewer; - } - - @Override + fBaseProvider.removeListener(listener); + } + } + + private TreePath createFullPath(TreePath subPath) { + if (fRootPath == null) { + return TreePath.EMPTY; + } + + Object[] segments = new Object[fRootPath.getSegmentCount() + subPath.getSegmentCount()]; + for (int i = 0; i < fRootPath.getSegmentCount(); i++) { + segments[i] = fRootPath.getSegment(i); + } + for (int i = 0; i < subPath.getSegmentCount(); i++) { + segments[i + fRootPath.getSegmentCount()] = subPath.getSegment(i); + } + return new TreePath(segments); + } + + private TreePath createSubPath(TreePath fullPath) { + if (fRootPath == null) { + return TreePath.EMPTY; + } + + if (fullPath.getSegmentCount() <= fRootPath.getSegmentCount()) { + return TreePath.EMPTY; + } + Object[] segments = new Object[fullPath.getSegmentCount() - fRootPath.getSegmentCount()]; + for (int i = 0; i < segments.length; i++) { + segments[i] = fullPath.getSegment(i + fRootPath.getSegmentCount()); + } + return new TreePath(segments); + } + + private DelegatingTreeModelViewer getDelegatingViewer() { + if (fDelegatingViewer == null) { + fDelegatingViewer = new DelegatingTreeModelViewer(); + } + return fDelegatingViewer; + } + + @Override protected ITreeModelContentProvider createContentProvider() { - return new SubTreeModelContentProvider(); - } + return new SubTreeModelContentProvider(); + } - @Override + @Override protected ITreeModelLabelProvider createLabelProvider() { - return new SubTreeModelLabelProvider(getDelegatingViewer()); - } + return new SubTreeModelLabelProvider(getDelegatingViewer()); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/TimeTriggeredProgressMonitorDialog.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/TimeTriggeredProgressMonitorDialog.java index 22bc2da8e..38b2c2903 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/TimeTriggeredProgressMonitorDialog.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/TimeTriggeredProgressMonitorDialog.java @@ -69,94 +69,94 @@ public class TimeTriggeredProgressMonitorDialog extends ProgressMonitorDialog { this.longOperationTime = longOperationTime; } - /** + /** * Create a monitor for the receiver that wrappers the superclasses monitor. * */ - public void createWrapperedMonitor() { - wrapperedMonitor = new IProgressMonitor() { + public void createWrapperedMonitor() { + wrapperedMonitor = new IProgressMonitor() { - IProgressMonitor superMonitor = TimeTriggeredProgressMonitorDialog.super - .getProgressMonitor(); + IProgressMonitor superMonitor = TimeTriggeredProgressMonitorDialog.super + .getProgressMonitor(); - @Override + @Override public void beginTask(String name, int totalWork) { - superMonitor.beginTask(name, totalWork); - checkTicking(); - } + superMonitor.beginTask(name, totalWork); + checkTicking(); + } - /** + /** * Check if we have ticked in the last 800ms. */ - private void checkTicking() { - if (triggerTime < 0) { + private void checkTicking() { + if (triggerTime < 0) { triggerTime = System.currentTimeMillis() + longOperationTime; } - if (!dialogOpened && System.currentTimeMillis() > triggerTime) { - open(); - dialogOpened = true; - } - } + if (!dialogOpened && System.currentTimeMillis() > triggerTime) { + open(); + dialogOpened = true; + } + } - @Override + @Override public void done() { - superMonitor.done(); - checkTicking(); - } + superMonitor.done(); + checkTicking(); + } - @Override + @Override public void internalWorked(double work) { - superMonitor.internalWorked(work); - checkTicking(); - } + superMonitor.internalWorked(work); + checkTicking(); + } - @Override + @Override public boolean isCanceled() { - return superMonitor.isCanceled(); - } + return superMonitor.isCanceled(); + } - @Override + @Override public void setCanceled(boolean value) { - superMonitor.setCanceled(value); + superMonitor.setCanceled(value); - } + } - @Override + @Override public void setTaskName(String name) { - superMonitor.setTaskName(name); - checkTicking(); + superMonitor.setTaskName(name); + checkTicking(); - } + } - @Override + @Override public void subTask(String name) { - superMonitor.subTask(name); - checkTicking(); - } + superMonitor.subTask(name); + checkTicking(); + } - @Override + @Override public void worked(int work) { - superMonitor.worked(work); - checkTicking(); + superMonitor.worked(work); + checkTicking(); - } - }; - } + } + }; + } - @Override + @Override public IProgressMonitor getProgressMonitor() { - if (wrapperedMonitor == null) { + if (wrapperedMonitor == null) { createWrapperedMonitor(); } - return wrapperedMonitor; - } + return wrapperedMonitor; + } - @Override + @Override public void run(final boolean fork, final boolean cancelable, - final IRunnableWithProgress runnable) throws InvocationTargetException, - InterruptedException { - final InvocationTargetException[] invokes = new InvocationTargetException[1]; - final InterruptedException[] interrupt = new InterruptedException[1]; + final IRunnableWithProgress runnable) throws InvocationTargetException, + InterruptedException { + final InvocationTargetException[] invokes = new InvocationTargetException[1]; + final InterruptedException[] interrupt = new InterruptedException[1]; Runnable dialogWaitRunnable = () -> { try { TimeTriggeredProgressMonitorDialog.super.run(fork, cancelable, runnable); @@ -166,17 +166,17 @@ public class TimeTriggeredProgressMonitorDialog extends ProgressMonitorDialog { interrupt[0] = e2; } }; - final Display display = PlatformUI.getWorkbench().getDisplay(); - if (display == null) { + final Display display = PlatformUI.getWorkbench().getDisplay(); + if (display == null) { return; } - //show a busy cursor until the dialog opens - BusyIndicator.showWhile(display, dialogWaitRunnable); - if (invokes[0] != null) { - throw invokes[0]; - } - if (interrupt[0] != null) { - throw interrupt[0]; - } - } + //show a busy cursor until the dialog opens + BusyIndicator.showWhile(display, dialogWaitRunnable); + if (invokes[0] != null) { + throw invokes[0]; + } + if (interrupt[0] != null) { + throw interrupt[0]; + } + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/TreeModelContentProvider.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/TreeModelContentProvider.java index 4608c48b0..80c487b76 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/TreeModelContentProvider.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/TreeModelContentProvider.java @@ -67,327 +67,327 @@ import org.eclipse.ui.progress.WorkbenchJob; */ public class TreeModelContentProvider implements ITreeModelContentProvider, IContentProvider, IModelChangedListener { - /** - * Tree model viewer that this content provider is used with. - */ - private IInternalTreeModelViewer fViewer; - - /** - * Mask used to filter delta updates coming from the model. - */ - private int fModelDeltaMask = ~0; - - /** - * Map tree paths to model proxy responsible for element - * - * Used to install different model proxy instances for one element depending - * on the tree path. - */ + /** + * Tree model viewer that this content provider is used with. + */ + private IInternalTreeModelViewer fViewer; + + /** + * Mask used to filter delta updates coming from the model. + */ + private int fModelDeltaMask = ~0; + + /** + * Map tree paths to model proxy responsible for element + * + * Used to install different model proxy instances for one element depending + * on the tree path. + */ private Map<TreePath, IModelProxy> fTreeModelProxies = new HashMap<>(); // tree // model // proxy // by // element tree path - /** - * Map element to model proxy responsible for it. - * - * Used to install a single model proxy which is responsible for all - * instances of an element in the model tree. - */ + /** + * Map element to model proxy responsible for it. + * + * Used to install a single model proxy which is responsible for all + * instances of an element in the model tree. + */ private Map<Object, IModelProxy> fModelProxies = new HashMap<>(); // model // proxy // by // element - /** - * Map of nodes that have been filtered from the viewer. - */ - private FilterTransform fTransform = new FilterTransform(); + /** + * Map of nodes that have been filtered from the viewer. + */ + private FilterTransform fTransform = new FilterTransform(); - /** - * Model listeners - */ + /** + * Model listeners + */ private ListenerList<IModelChangedListener> fModelListeners = new ListenerList<>(); - /** - * Viewer update listeners - */ + /** + * Viewer update listeners + */ private ListenerList<IViewerUpdateListener> fUpdateListeners = new ListenerList<>(); - /** - * Flag indicating whether we are currently in a model sequence. - * @see IViewerUpdateListener - */ - private boolean fModelSequenceRunning = false; + /** + * Flag indicating whether we are currently in a model sequence. + * @see IViewerUpdateListener + */ + private boolean fModelSequenceRunning = false; - /** - * Map of updates in progress: element path -> list of requests - */ + /** + * Map of updates in progress: element path -> list of requests + */ private Map<TreePath, List<ViewerUpdateMonitor>> fRequestsInProgress = new HashMap<>(); - /** - * Map of dependent requests waiting for parent requests to complete: - * element path -> list of requests - */ + /** + * Map of dependent requests waiting for parent requests to complete: + * element path -> list of requests + */ private Map<TreePath, List<ViewerUpdateMonitor>> fWaitingRequests = new HashMap<>(); private List<ViewerUpdateMonitor> fCompletedUpdates = new ArrayList<>(); - private Runnable fCompletedUpdatesRunnable; + private Runnable fCompletedUpdatesRunnable; - private ViewerStateTracker fStateTracker = new ViewerStateTracker(this); + private ViewerStateTracker fStateTracker = new ViewerStateTracker(this); private TreePath fRevealPath; private int fRevealIndex; - /** - * Update type constants - */ - static final int UPDATE_SEQUENCE_BEGINS = 0; + /** + * Update type constants + */ + static final int UPDATE_SEQUENCE_BEGINS = 0; - static final int UPDATE_SEQUENCE_COMPLETE = 1; + static final int UPDATE_SEQUENCE_COMPLETE = 1; - static final int UPDATE_BEGINS = 2; + static final int UPDATE_BEGINS = 2; - static final int UPDATE_COMPLETE = 3; + static final int UPDATE_COMPLETE = 3; - /** - * Constant for an empty tree path. - */ - static final TreePath EMPTY_TREE_PATH = new TreePath(new Object[] {}); + /** + * Constant for an empty tree path. + */ + static final TreePath EMPTY_TREE_PATH = new TreePath(new Object[] {}); - @Override + @Override public void dispose() { - if (fViewer == null) { + if (fViewer == null) { return; } fDelayedDoModelChangeJob.shutdown(); - Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); + Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); - // cancel pending updates + // cancel pending updates for (List<ViewerUpdateMonitor> requests : fRequestsInProgress.values()) { for (ViewerUpdateMonitor vu : requests) { vu.cancel(); - } - } - fWaitingRequests.clear(); - - fStateTracker.dispose(); - fModelListeners.clear(); - fUpdateListeners.clear(); - disposeAllModelProxies(); - - synchronized(this) { - fViewer = null; - } - } - - /** - * @return Returns whether the content provider is disposed. - */ - boolean isDisposed() { - synchronized(this) { - return fViewer == null; - } - } - - @Override + } + } + fWaitingRequests.clear(); + + fStateTracker.dispose(); + fModelListeners.clear(); + fUpdateListeners.clear(); + disposeAllModelProxies(); + + synchronized(this) { + fViewer = null; + } + } + + /** + * @return Returns whether the content provider is disposed. + */ + boolean isDisposed() { + synchronized(this) { + return fViewer == null; + } + } + + @Override public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { - synchronized(this) { - fViewer = (IInternalTreeModelViewer) viewer; - } + synchronized(this) { + fViewer = (IInternalTreeModelViewer) viewer; + } - Assert.isTrue( fViewer.getDisplay().getThread() == Thread.currentThread() ); + Assert.isTrue( fViewer.getDisplay().getThread() == Thread.currentThread() ); - if (oldInput != null) { - fStateTracker.saveViewerState(oldInput); - } - } + if (oldInput != null) { + fStateTracker.saveViewerState(oldInput); + } + } - @Override + @Override public void postInputChanged(IInternalTreeModelViewer viewer, Object oldInput, Object newInput) { - Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); - - cancelSubtreeUpdates(TreePath.EMPTY); - disposeAllModelProxies(); - cancelSubtreeUpdates(TreePath.EMPTY); - fTransform.clear(); - if (newInput != null) { - installModelProxy(newInput, TreePath.EMPTY); - fStateTracker.restoreViewerState(newInput); - } - } - - @Override + Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); + + cancelSubtreeUpdates(TreePath.EMPTY); + disposeAllModelProxies(); + cancelSubtreeUpdates(TreePath.EMPTY); + fTransform.clear(); + if (newInput != null) { + installModelProxy(newInput, TreePath.EMPTY); + fStateTracker.restoreViewerState(newInput); + } + } + + @Override public void addViewerUpdateListener(IViewerUpdateListener listener) { - fUpdateListeners.add(listener); - } + fUpdateListeners.add(listener); + } - @Override + @Override public void removeViewerUpdateListener(IViewerUpdateListener listener) { - fUpdateListeners.remove(listener); - } + fUpdateListeners.remove(listener); + } - @Override + @Override public void addStateUpdateListener(IStateUpdateListener listener) { - fStateTracker.addStateUpdateListener(listener); - } + fStateTracker.addStateUpdateListener(listener); + } - @Override + @Override public void preserveState(TreePath path) { - fStateTracker.appendToPendingStateDelta(path); - } + fStateTracker.appendToPendingStateDelta(path); + } - @Override + @Override public void removeStateUpdateListener(IStateUpdateListener listener) { - fStateTracker.removeStateUpdateListener(listener); - } + fStateTracker.removeStateUpdateListener(listener); + } - @Override + @Override public void addModelChangedListener(IModelChangedListener listener) { - fModelListeners.add(listener); - } + fModelListeners.add(listener); + } - @Override + @Override public void removeModelChangedListener(IModelChangedListener listener) { - fModelListeners.remove(listener); - } + fModelListeners.remove(listener); + } - @Override + @Override public void cancelRestore(final TreePath path, final int flags) { - fStateTracker.cancelRestore(path, flags); - } + fStateTracker.cancelRestore(path, flags); + } - @Override + @Override public boolean setChecked(TreePath path, boolean checked) { - IModelProxy elementProxy = getElementProxy(path); - if (elementProxy instanceof ICheckboxModelProxy) { - return ((ICheckboxModelProxy) elementProxy).setChecked(getPresentationContext(), getViewer().getInput(), path, checked); - } - return false; - } - - /** - * Installs the model proxy for the given element into this content provider - * if not already installed. - * @param input the input to install the model proxy on - * @param path the {@link TreePath} to install the proxy for - */ - private void installModelProxy(Object input, TreePath path) { - - if (!fTreeModelProxies.containsKey(path) && !fModelProxies.containsKey(path.getLastSegment())) { - Object element = path.getSegmentCount() != 0 ? path.getLastSegment() : input; - IModelProxy proxy = null; - IModelProxyFactory2 modelProxyFactory2 = ViewerAdapterService.getModelProxyFactory2(element); - if (modelProxyFactory2 != null) { - proxy = modelProxyFactory2.createTreeModelProxy(input, path, getPresentationContext()); - if (proxy != null) { - fTreeModelProxies.put(path, proxy); - } - } - if (proxy == null) { - IModelProxyFactory modelProxyFactory = ViewerAdapterService.getModelProxyFactory(element); - if (modelProxyFactory != null) { - proxy = modelProxyFactory.createModelProxy(element, getPresentationContext()); - if (proxy != null) { - fModelProxies.put(element, proxy); - } - } - } - - if (proxy instanceof IModelProxy2) { - proxy.addModelChangedListener(this); - ((IModelProxy2)proxy).initialize(getViewer()); - } else if (proxy != null) { - final IModelProxy finalProxy = proxy; - Job job = new Job("Model Proxy installed notification job") {//$NON-NLS-1$ - @Override + IModelProxy elementProxy = getElementProxy(path); + if (elementProxy instanceof ICheckboxModelProxy) { + return ((ICheckboxModelProxy) elementProxy).setChecked(getPresentationContext(), getViewer().getInput(), path, checked); + } + return false; + } + + /** + * Installs the model proxy for the given element into this content provider + * if not already installed. + * @param input the input to install the model proxy on + * @param path the {@link TreePath} to install the proxy for + */ + private void installModelProxy(Object input, TreePath path) { + + if (!fTreeModelProxies.containsKey(path) && !fModelProxies.containsKey(path.getLastSegment())) { + Object element = path.getSegmentCount() != 0 ? path.getLastSegment() : input; + IModelProxy proxy = null; + IModelProxyFactory2 modelProxyFactory2 = ViewerAdapterService.getModelProxyFactory2(element); + if (modelProxyFactory2 != null) { + proxy = modelProxyFactory2.createTreeModelProxy(input, path, getPresentationContext()); + if (proxy != null) { + fTreeModelProxies.put(path, proxy); + } + } + if (proxy == null) { + IModelProxyFactory modelProxyFactory = ViewerAdapterService.getModelProxyFactory(element); + if (modelProxyFactory != null) { + proxy = modelProxyFactory.createModelProxy(element, getPresentationContext()); + if (proxy != null) { + fModelProxies.put(element, proxy); + } + } + } + + if (proxy instanceof IModelProxy2) { + proxy.addModelChangedListener(this); + ((IModelProxy2)proxy).initialize(getViewer()); + } else if (proxy != null) { + final IModelProxy finalProxy = proxy; + Job job = new Job("Model Proxy installed notification job") {//$NON-NLS-1$ + @Override protected IStatus run(IProgressMonitor monitor) { - if (!monitor.isCanceled()) { - IPresentationContext context = null; - Viewer viewer = null; - synchronized (TreeModelContentProvider.this) { - if (!isDisposed()) { - context = getPresentationContext(); - viewer = (Viewer) getViewer(); - } - } - if (viewer != null && context != null && !finalProxy.isDisposed()) { - finalProxy.init(context); - finalProxy.addModelChangedListener(TreeModelContentProvider.this); - finalProxy.installed(viewer); - } - } - return Status.OK_STATUS; - } - - @Override + if (!monitor.isCanceled()) { + IPresentationContext context = null; + Viewer viewer = null; + synchronized (TreeModelContentProvider.this) { + if (!isDisposed()) { + context = getPresentationContext(); + viewer = (Viewer) getViewer(); + } + } + if (viewer != null && context != null && !finalProxy.isDisposed()) { + finalProxy.init(context); + finalProxy.addModelChangedListener(TreeModelContentProvider.this); + finalProxy.installed(viewer); + } + } + return Status.OK_STATUS; + } + + @Override public boolean shouldRun() { - return !isDisposed(); - } - }; - job.setSystem(true); - job.schedule(); - } - } - } - - /** - * Finds the model proxy that an element with a given path is associated with. - * @param path Path of the element. - * @return Element's model proxy. - */ - private IModelProxy getElementProxy(TreePath path) { - while (path != null) { - IModelProxy proxy = fTreeModelProxies.get(path); - if (proxy != null) { - return proxy; - } - - Object element = path.getSegmentCount() == 0 ? getViewer().getInput() : path.getLastSegment(); - proxy = fModelProxies.get(element); - if (proxy != null) { - return proxy; - } - - path = path.getParentPath(); - } - return null; - } - - /** - * Removes all model proxies - */ - private void disposeAllModelProxies() { - Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); + return !isDisposed(); + } + }; + job.setSystem(true); + job.schedule(); + } + } + } + + /** + * Finds the model proxy that an element with a given path is associated with. + * @param path Path of the element. + * @return Element's model proxy. + */ + private IModelProxy getElementProxy(TreePath path) { + while (path != null) { + IModelProxy proxy = fTreeModelProxies.get(path); + if (proxy != null) { + return proxy; + } + + Object element = path.getSegmentCount() == 0 ? getViewer().getInput() : path.getLastSegment(); + proxy = fModelProxies.get(element); + if (proxy != null) { + return proxy; + } + + path = path.getParentPath(); + } + return null; + } + + /** + * Removes all model proxies + */ + private void disposeAllModelProxies() { + Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); for (IModelProxy proxy : fModelProxies.values()) { - proxy.dispose(); - } - fModelProxies.clear(); + proxy.dispose(); + } + fModelProxies.clear(); for (IModelProxy proxy : fTreeModelProxies.values()) { - proxy.dispose(); - } - fTreeModelProxies.clear(); - } - - /** - * Removes the model proxy installed for the given element, if any. - * @param path the {@link TreePath} to dispose the model proxy for - */ - private void disposeModelProxy(TreePath path) { - IModelProxy proxy = fTreeModelProxies.remove(path); - if (proxy != null) { - proxy.dispose(); - } - proxy = fModelProxies.remove(path.getLastSegment()); - if (proxy != null) { - proxy.dispose(); - } - } + proxy.dispose(); + } + fTreeModelProxies.clear(); + } + + /** + * Removes the model proxy installed for the given element, if any. + * @param path the {@link TreePath} to dispose the model proxy for + */ + private void disposeModelProxy(TreePath path) { + IModelProxy proxy = fTreeModelProxies.remove(path); + if (proxy != null) { + proxy.dispose(); + } + proxy = fModelProxies.remove(path.getLastSegment()); + if (proxy != null) { + proxy.dispose(); + } + } private static class DelayedDoModelChange { public final IModelDelta delta; @@ -488,280 +488,280 @@ public class TreeModelContentProvider implements ITreeModelContentProvider, ICon private final DelayedDoModelChangedJob fDelayedDoModelChangeJob = new DelayedDoModelChangedJob(); - @Override + @Override public void modelChanged(final IModelDelta delta, final IModelProxy proxy) { - Display display = null; - - // Check if the viewer is still available, i.e. if the content provider - // is not disposed. - synchronized(this) { - if (fViewer != null && !proxy.isDisposed()) { - display = fViewer.getDisplay(); - } - } - if (display != null) { - // If we're in display thread, process the delta immediately to - // avoid "skid" in processing events. - if (Thread.currentThread().equals(display.getThread())) { - doModelChanged(delta, proxy); - } - else { + Display display = null; + + // Check if the viewer is still available, i.e. if the content provider + // is not disposed. + synchronized(this) { + if (fViewer != null && !proxy.isDisposed()) { + display = fViewer.getDisplay(); + } + } + if (display != null) { + // If we're in display thread, process the delta immediately to + // avoid "skid" in processing events. + if (Thread.currentThread().equals(display.getThread())) { + doModelChanged(delta, proxy); + } + else { try { Job.getJobManager().join(ElementContentProvider.class, null); } catch (OperationCanceledException | InterruptedException e) { DebugUIPlugin.log(new Status(IStatus.WARNING, DebugUIPlugin.getUniqueIdentifier(), "Interrupted while waiting on ElementContentProvider jobs", e)); //$NON-NLS-1$ } fDelayedDoModelChangeJob.runDelayed(delta, proxy); - } - } - } - - /** - * Executes the model proxy in UI thread. - * @param delta Delta to process - * @param proxy Proxy that fired the delta. - */ - private void doModelChanged(IModelDelta delta, IModelProxy proxy) { - if (!proxy.isDisposed()) { - if (DebugUIPlugin.DEBUG_DELTAS && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(getPresentationContext())) { - DebugUIPlugin.trace("RECEIVED DELTA: " + delta.toString()); //$NON-NLS-1$ - } - - updateModel(delta, getModelDeltaMask()); - - // Initiate model update sequence before notifying of the model changed. - trigger(null); - - // Call model listeners after updating the viewer model. + } + } + } + + /** + * Executes the model proxy in UI thread. + * @param delta Delta to process + * @param proxy Proxy that fired the delta. + */ + private void doModelChanged(IModelDelta delta, IModelProxy proxy) { + if (!proxy.isDisposed()) { + if (DebugUIPlugin.DEBUG_DELTAS && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(getPresentationContext())) { + DebugUIPlugin.trace("RECEIVED DELTA: " + delta.toString()); //$NON-NLS-1$ + } + + updateModel(delta, getModelDeltaMask()); + + // Initiate model update sequence before notifying of the model changed. + trigger(null); + + // Call model listeners after updating the viewer model. for (IModelChangedListener iModelChangedListener : fModelListeners) { iModelChangedListener.modelChanged(delta, proxy); } - } - } + } + } - @Override + @Override public void setModelDeltaMask(int mask) { - fModelDeltaMask = mask; - } + fModelDeltaMask = mask; + } - @Override + @Override public int getModelDeltaMask() { - return fModelDeltaMask; - } + return fModelDeltaMask; + } - @Override + @Override public void updateModel(IModelDelta delta, int mask) { - // Processing deltas with null input leads to NPEs - // (Bug 380288 - NPE switching to the Breakpoints View) - if (getViewer() == null || getViewer().getInput() == null) { + // Processing deltas with null input leads to NPEs + // (Bug 380288 - NPE switching to the Breakpoints View) + if (getViewer() == null || getViewer().getInput() == null) { return; } fRevealPath = null; - IModelDelta[] deltaArray = new IModelDelta[] { delta }; - updateNodes(deltaArray, mask & (IModelDelta.REMOVED | IModelDelta.UNINSTALL)); - updateNodes(deltaArray, mask & ITreeModelContentProvider.UPDATE_MODEL_DELTA_FLAGS - & ~(IModelDelta.REMOVED | IModelDelta.UNINSTALL)); - updateNodes(deltaArray, mask & ITreeModelContentProvider.CONTROL_MODEL_DELTA_FLAGS); - - fStateTracker.checkIfRestoreComplete(); - } - - /** - * Returns a tree path for the node including the root element. - * - * @param node - * model delta - * @return corresponding tree path - */ - TreePath getFullTreePath(IModelDelta node) { + IModelDelta[] deltaArray = new IModelDelta[] { delta }; + updateNodes(deltaArray, mask & (IModelDelta.REMOVED | IModelDelta.UNINSTALL)); + updateNodes(deltaArray, mask & ITreeModelContentProvider.UPDATE_MODEL_DELTA_FLAGS + & ~(IModelDelta.REMOVED | IModelDelta.UNINSTALL)); + updateNodes(deltaArray, mask & ITreeModelContentProvider.CONTROL_MODEL_DELTA_FLAGS); + + fStateTracker.checkIfRestoreComplete(); + } + + /** + * Returns a tree path for the node including the root element. + * + * @param node + * model delta + * @return corresponding tree path + */ + TreePath getFullTreePath(IModelDelta node) { ArrayList<Object> list = new ArrayList<>(); - while (node.getParentDelta() != null) { - list.add(0, node.getElement()); - node = node.getParentDelta(); - } - return new TreePath(list.toArray()); - } - - /** - * Returns a tree path for the node, *not* including the root element. - * - * @param node - * model delta - * @return corresponding tree path - */ - TreePath getViewerTreePath(IModelDelta node) { + while (node.getParentDelta() != null) { + list.add(0, node.getElement()); + node = node.getParentDelta(); + } + return new TreePath(list.toArray()); + } + + /** + * Returns a tree path for the node, *not* including the root element. + * + * @param node + * model delta + * @return corresponding tree path + */ + TreePath getViewerTreePath(IModelDelta node) { ArrayList<Object> list = new ArrayList<>(); - IModelDelta parentDelta = node.getParentDelta(); - while (parentDelta != null) { - list.add(0, node.getElement()); - node = parentDelta; - parentDelta = node.getParentDelta(); - } - return new TreePath(list.toArray()); - } - - /** - * Returns the viewer this content provider is working for. - * - * @return viewer - */ - protected IInternalTreeModelViewer getViewer() { - synchronized(this) { - return fViewer; - } - } - - @Override + IModelDelta parentDelta = node.getParentDelta(); + while (parentDelta != null) { + list.add(0, node.getElement()); + node = parentDelta; + parentDelta = node.getParentDelta(); + } + return new TreePath(list.toArray()); + } + + /** + * Returns the viewer this content provider is working for. + * + * @return viewer + */ + protected IInternalTreeModelViewer getViewer() { + synchronized(this) { + return fViewer; + } + } + + @Override public int viewToModelIndex(TreePath parentPath, int index) { - return fTransform.viewToModelIndex(parentPath, index); - } + return fTransform.viewToModelIndex(parentPath, index); + } - @Override + @Override public int viewToModelCount(TreePath parentPath, int count) { - return fTransform.viewToModelCount(parentPath, count); - } + return fTransform.viewToModelCount(parentPath, count); + } - @Override + @Override public int modelToViewIndex(TreePath parentPath, int index) { - return fTransform.modelToViewIndex(parentPath, index); - } + return fTransform.modelToViewIndex(parentPath, index); + } - @Override + @Override public int modelToViewChildCount(TreePath parentPath, int count) { - return fTransform.modelToViewCount(parentPath, count); - } + return fTransform.modelToViewCount(parentPath, count); + } - @Override + @Override public boolean areTreeModelViewerFiltersApplicable(Object parentElement) { - ViewerFilter[] filters = fViewer.getFilters(); - if (filters.length > 0) { - for (int j = 0; j < filters.length; j++) { - if (filters[j] instanceof TreeModelViewerFilter && - ((TreeModelViewerFilter)filters[j]).isApplicable(fViewer, parentElement)) - { - return true; - } - } - } - return false; - } - - @Override + ViewerFilter[] filters = fViewer.getFilters(); + if (filters.length > 0) { + for (int j = 0; j < filters.length; j++) { + if (filters[j] instanceof TreeModelViewerFilter && + ((TreeModelViewerFilter)filters[j]).isApplicable(fViewer, parentElement)) + { + return true; + } + } + } + return false; + } + + @Override public boolean shouldFilter(Object parentElementOrTreePath, Object element) { - ViewerFilter[] filters = fViewer.getFilters(); - if (filters.length > 0) { - for (int j = 0; j < filters.length; j++) { - if (filters[j] instanceof TreeModelViewerFilter) { - // Skip the filter if not applicable to parent element - Object parentElement = parentElementOrTreePath instanceof TreePath - ? ((TreePath)parentElementOrTreePath).getLastSegment() : parentElementOrTreePath; - if (parentElement == null) { + ViewerFilter[] filters = fViewer.getFilters(); + if (filters.length > 0) { + for (int j = 0; j < filters.length; j++) { + if (filters[j] instanceof TreeModelViewerFilter) { + // Skip the filter if not applicable to parent element + Object parentElement = parentElementOrTreePath instanceof TreePath + ? ((TreePath)parentElementOrTreePath).getLastSegment() : parentElementOrTreePath; + if (parentElement == null) { parentElement = fViewer.getInput(); } - if (!((TreeModelViewerFilter)filters[j]).isApplicable(fViewer, parentElement)) { - continue; - } - } - - if (!(filters[j].select((Viewer) fViewer, parentElementOrTreePath, element))) { - return true; - } - } - } - return false; - } - - @Override + if (!((TreeModelViewerFilter)filters[j]).isApplicable(fViewer, parentElement)) { + continue; + } + } + + if (!(filters[j].select((Viewer) fViewer, parentElementOrTreePath, element))) { + return true; + } + } + } + return false; + } + + @Override public void unmapPath(TreePath path) { - Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); - fTransform.clear(path); - cancelSubtreeUpdates(path); - } - - - boolean addFilteredIndex(TreePath parentPath, int index, Object element) { - Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); - return fTransform.addFilteredIndex(parentPath, index, element); - } - - void removeElementFromFilters(TreePath parentPath, int index) { - Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); - fTransform.removeElementFromFilters(parentPath, index); - } - - boolean removeElementFromFilters(TreePath parentPath, Object element) { - Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); - return fTransform.removeElementFromFilters(parentPath, element); - } - - void setModelChildCount(TreePath parentPath, int childCount) { - Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); - fTransform.setModelChildCount(parentPath, childCount); - } - - boolean isFiltered(TreePath parentPath, int index) { - Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); - return fTransform.isFiltered(parentPath, index); - } - - int[] getFilteredChildren(TreePath parent) { - Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); - return fTransform.getFilteredChildren(parent); - } - - void clearFilteredChild(TreePath parent, int modelIndex) { - Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); - fTransform.clear(parent, modelIndex); - } - - void clearFilters(TreePath parent) { - Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); - fTransform.clear(parent); - } - - /** - * Notification an update request has started - * - * @param update the update to notify about - */ - void updateStarted(ViewerUpdateMonitor update) { - Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); + Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); + fTransform.clear(path); + cancelSubtreeUpdates(path); + } + + + boolean addFilteredIndex(TreePath parentPath, int index, Object element) { + Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); + return fTransform.addFilteredIndex(parentPath, index, element); + } + + void removeElementFromFilters(TreePath parentPath, int index) { + Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); + fTransform.removeElementFromFilters(parentPath, index); + } + + boolean removeElementFromFilters(TreePath parentPath, Object element) { + Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); + return fTransform.removeElementFromFilters(parentPath, element); + } + + void setModelChildCount(TreePath parentPath, int childCount) { + Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); + fTransform.setModelChildCount(parentPath, childCount); + } + + boolean isFiltered(TreePath parentPath, int index) { + Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); + return fTransform.isFiltered(parentPath, index); + } + + int[] getFilteredChildren(TreePath parent) { + Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); + return fTransform.getFilteredChildren(parent); + } + + void clearFilteredChild(TreePath parent, int modelIndex) { + Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); + fTransform.clear(parent, modelIndex); + } + + void clearFilters(TreePath parent) { + Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); + fTransform.clear(parent); + } + + /** + * Notification an update request has started + * + * @param update the update to notify about + */ + void updateStarted(ViewerUpdateMonitor update) { + Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); List<ViewerUpdateMonitor> requests = fRequestsInProgress.get(update.getSchedulingPath()); - if (requests == null) { + if (requests == null) { requests = new ArrayList<>(); - fRequestsInProgress.put(update.getSchedulingPath(), requests); - } - requests.add(update); - if (!fModelSequenceRunning) { - fModelSequenceRunning = true; - if (DebugUIPlugin.DEBUG_UPDATE_SEQUENCE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(getPresentationContext())) { - DebugUIPlugin.trace("MODEL SEQUENCE BEGINS"); //$NON-NLS-1$ - } - notifyUpdate(UPDATE_SEQUENCE_BEGINS, null); - } - if (DebugUIPlugin.DEBUG_UPDATE_SEQUENCE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(getPresentationContext())) { - DebugUIPlugin.trace("\tBEGIN - " + update); //$NON-NLS-1$ - } - notifyUpdate(UPDATE_BEGINS, update); - } - - /** - * Notification an update request has completed - * - * @param updates the updates to notify - */ + fRequestsInProgress.put(update.getSchedulingPath(), requests); + } + requests.add(update); + if (!fModelSequenceRunning) { + fModelSequenceRunning = true; + if (DebugUIPlugin.DEBUG_UPDATE_SEQUENCE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(getPresentationContext())) { + DebugUIPlugin.trace("MODEL SEQUENCE BEGINS"); //$NON-NLS-1$ + } + notifyUpdate(UPDATE_SEQUENCE_BEGINS, null); + } + if (DebugUIPlugin.DEBUG_UPDATE_SEQUENCE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(getPresentationContext())) { + DebugUIPlugin.trace("\tBEGIN - " + update); //$NON-NLS-1$ + } + notifyUpdate(UPDATE_BEGINS, update); + } + + /** + * Notification an update request has completed + * + * @param updates the updates to notify + */ void updatesComplete(final List<ViewerUpdateMonitor> updates) { - for (int i = 0; i < updates.size(); i++) { - ViewerUpdateMonitor update = updates.get(i); - notifyUpdate(UPDATE_COMPLETE, update); - if (DebugUIPlugin.DEBUG_UPDATE_SEQUENCE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(getPresentationContext())) { - DebugUIPlugin.trace("\tEND - " + update); //$NON-NLS-1$ - } - } - - // Wait a single cycle to allow viewer to queue requests triggered by completed updates. + for (int i = 0; i < updates.size(); i++) { + ViewerUpdateMonitor update = updates.get(i); + notifyUpdate(UPDATE_COMPLETE, update); + if (DebugUIPlugin.DEBUG_UPDATE_SEQUENCE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(getPresentationContext())) { + DebugUIPlugin.trace("\tEND - " + update); //$NON-NLS-1$ + } + } + + // Wait a single cycle to allow viewer to queue requests triggered by completed updates. getViewer().getDisplay().asyncExec(() -> { if (isDisposed()) { return; @@ -811,355 +811,355 @@ public class TreeModelContentProvider implements ITreeModelContentProvider, ICon } }); - } - - /** - * @return Returns true if there are outstanding updates in the viewer. - */ - boolean areRequestsPending() { - return !fRequestsInProgress.isEmpty() || !fWaitingRequests.isEmpty(); - } - - /** - * @return Returns the state tracker for the content provider. - */ - ViewerStateTracker getStateTracker() { - return fStateTracker; - } - - /** - * Notifies listeners about given update. - * @param type Type of update to call listeners with. - * @param update Update to notify about. - */ - private void notifyUpdate(final int type, final IViewerUpdate update) { - if (!fUpdateListeners.isEmpty()) { + } + + /** + * @return Returns true if there are outstanding updates in the viewer. + */ + boolean areRequestsPending() { + return !fRequestsInProgress.isEmpty() || !fWaitingRequests.isEmpty(); + } + + /** + * @return Returns the state tracker for the content provider. + */ + ViewerStateTracker getStateTracker() { + return fStateTracker; + } + + /** + * Notifies listeners about given update. + * @param type Type of update to call listeners with. + * @param update Update to notify about. + */ + private void notifyUpdate(final int type, final IViewerUpdate update) { + if (!fUpdateListeners.isEmpty()) { for (IViewerUpdateListener iViewerUpdateListener : fUpdateListeners) { final IViewerUpdateListener listener = iViewerUpdateListener; - SafeRunner.run(new ISafeRunnable() { - @Override + SafeRunner.run(new ISafeRunnable() { + @Override public void run() throws Exception { - switch (type) { - case UPDATE_SEQUENCE_BEGINS: - listener.viewerUpdatesBegin(); - break; - case UPDATE_SEQUENCE_COMPLETE: - listener.viewerUpdatesComplete(); - break; - case UPDATE_BEGINS: - listener.updateStarted(update); - break; - case UPDATE_COMPLETE: - listener.updateComplete(update); - break; + switch (type) { + case UPDATE_SEQUENCE_BEGINS: + listener.viewerUpdatesBegin(); + break; + case UPDATE_SEQUENCE_COMPLETE: + listener.viewerUpdatesComplete(); + break; + case UPDATE_BEGINS: + listener.updateStarted(update); + break; + case UPDATE_COMPLETE: + listener.updateComplete(update); + break; default: break; - } - } + } + } - @Override + @Override public void handleException(Throwable exception) { - DebugUIPlugin.log(exception); - } - }); - } - } - } - - /** - * Cancels outstanding updates for the element at given path and its - * children. - * @param path Path of element. - */ - private void cancelSubtreeUpdates(TreePath path) { - Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); + DebugUIPlugin.log(exception); + } + }); + } + } + } + + /** + * Cancels outstanding updates for the element at given path and its + * children. + * @param path Path of element. + */ + private void cancelSubtreeUpdates(TreePath path) { + Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); for (Entry<TreePath, List<ViewerUpdateMonitor>> entry : fRequestsInProgress.entrySet()) { - TreePath entryPath = entry.getKey(); - if (entryPath.startsWith(path, null)) { + TreePath entryPath = entry.getKey(); + if (entryPath.startsWith(path, null)) { List<ViewerUpdateMonitor> requests = entry.getValue(); Iterator<ViewerUpdateMonitor> reqIter = requests.iterator(); - while (reqIter.hasNext()) { - // Cancel update and remove from requests list. Removing from - // fRequestsInProgress ensures that isRequestBlocked() won't be triggered - // by a canceled update. + while (reqIter.hasNext()) { + // Cancel update and remove from requests list. Removing from + // fRequestsInProgress ensures that isRequestBlocked() won't be triggered + // by a canceled update. reqIter.next().cancel(); - reqIter.remove(); - } - } - } + reqIter.remove(); + } + } + } List<TreePath> purge = new ArrayList<>(); for (TreePath entryPath : fWaitingRequests.keySet()) { - if (entryPath.startsWith(path, null)) { - purge.add(entryPath); - } - } + if (entryPath.startsWith(path, null)) { + purge.add(entryPath); + } + } for (TreePath tp : purge) { fWaitingRequests.remove(tp); - } + } - fStateTracker.cancelStateSubtreeUpdates(path); - } + fStateTracker.cancelStateSubtreeUpdates(path); + } - /** - * Returns whether this given request should be run, or should wait for - * parent update to complete. - * - * @param update the update the schedule - */ - private void schedule(final ViewerUpdateMonitor update) { - Assert.isTrue(getViewer().getDisplay().getThread() == Thread.currentThread()); + /** + * Returns whether this given request should be run, or should wait for + * parent update to complete. + * + * @param update the update the schedule + */ + private void schedule(final ViewerUpdateMonitor update) { + Assert.isTrue(getViewer().getDisplay().getThread() == Thread.currentThread()); - TreePath schedulingPath = update.getSchedulingPath(); + TreePath schedulingPath = update.getSchedulingPath(); List<ViewerUpdateMonitor> requests = fWaitingRequests.get(schedulingPath); - if (requests == null) { + if (requests == null) { requests = new LinkedList<>(); - requests.add(update); - fWaitingRequests.put(schedulingPath, requests); + requests.add(update); + fWaitingRequests.put(schedulingPath, requests); List<ViewerUpdateMonitor> inProgressList = fRequestsInProgress.get(schedulingPath); - if (inProgressList != null) { - int staleUpdateIndex = inProgressList.indexOf(update); - if (staleUpdateIndex >= 0) { - // Cancel update and remove from requests list. Removing from - // fRequestsInProgress ensures that isRequestBlocked() won't be triggered - // by a canceled update. - ViewerUpdateMonitor staleUpdate = inProgressList.remove(staleUpdateIndex); - staleUpdate.cancel(); - // Note: Do not reset the inProgressList to null. This would cause the - // updateStarted() method to think that a new update sequence is - // being started. Since there are waiting requests for this scheduling - // path, the list will be cleaned up later. - } - } - if (inProgressList == null || inProgressList.isEmpty()) { + if (inProgressList != null) { + int staleUpdateIndex = inProgressList.indexOf(update); + if (staleUpdateIndex >= 0) { + // Cancel update and remove from requests list. Removing from + // fRequestsInProgress ensures that isRequestBlocked() won't be triggered + // by a canceled update. + ViewerUpdateMonitor staleUpdate = inProgressList.remove(staleUpdateIndex); + staleUpdate.cancel(); + // Note: Do not reset the inProgressList to null. This would cause the + // updateStarted() method to think that a new update sequence is + // being started. Since there are waiting requests for this scheduling + // path, the list will be cleaned up later. + } + } + if (inProgressList == null || inProgressList.isEmpty()) { getViewer().getDisplay().asyncExec(() -> { if (isDisposed()) { return; } trigger(update.getSchedulingPath()); }); - } - } else { - // there are waiting requests: coalesce with existing request and add to list - requests.add(coalesce(requests, update)); - } - } - - /** - * Tries to coalesce the given request with any request in the list. If a match is found, - * the resulting request is then coalesced again with candidates in list. - * @param requests List of waiting requests to coalesce with - * @param toCoalesce request to coalesce - * @return Returns either the coalesced request. If no match was found it returns the - * toCoalesce parameter request. Either way the returned request needs to be added to the - * waiting requests list. - */ + } + } else { + // there are waiting requests: coalesce with existing request and add to list + requests.add(coalesce(requests, update)); + } + } + + /** + * Tries to coalesce the given request with any request in the list. If a match is found, + * the resulting request is then coalesced again with candidates in list. + * @param requests List of waiting requests to coalesce with + * @param toCoalesce request to coalesce + * @return Returns either the coalesced request. If no match was found it returns the + * toCoalesce parameter request. Either way the returned request needs to be added to the + * waiting requests list. + */ private ViewerUpdateMonitor coalesce(List<ViewerUpdateMonitor> requests, ViewerUpdateMonitor toCoalesce) { for (ViewerUpdateMonitor waiting : requests) { - if (waiting.coalesce(toCoalesce)) { - requests.remove(waiting); - // coalesced with existing request, done - // try to coalesce the combined requests with other waiting requests - return coalesce(requests, waiting); - } - } - return toCoalesce; - } - - /** - * Returns whether there are outstanding ChildrenUpdate updates for the given path. - * This method is expected to be called during processing of a ChildrenRequest, - * therefore one running children request is ignored. - * @param path Path of element to check. - * @return True if there are outstanding children updates for given element. - */ - boolean areChildrenUpdatesPending(TreePath path) { - Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); + if (waiting.coalesce(toCoalesce)) { + requests.remove(waiting); + // coalesced with existing request, done + // try to coalesce the combined requests with other waiting requests + return coalesce(requests, waiting); + } + } + return toCoalesce; + } + + /** + * Returns whether there are outstanding ChildrenUpdate updates for the given path. + * This method is expected to be called during processing of a ChildrenRequest, + * therefore one running children request is ignored. + * @param path Path of element to check. + * @return True if there are outstanding children updates for given element. + */ + boolean areChildrenUpdatesPending(TreePath path) { + Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); List<ViewerUpdateMonitor> requests = fWaitingRequests.get(path); - if (requests != null) { - for (int i = 0; i < requests.size(); i++) { - if (requests.get(i) instanceof ChildrenUpdate) { - return true; - } - } - } - requests = fRequestsInProgress.get(path); - if (requests != null) { - int numChildrenUpdateRequests = 0; - for (int i = 0; i < requests.size(); i++) { - if (requests.get(i) instanceof ChildrenUpdate) { - if (++numChildrenUpdateRequests > 1) { - return true; - } - } - } - } - return false; - } - - /** - * Triggers waiting requests based on the given request that just - * completed. - * <p> - * Requests are processed in order such that updates to - * children are delayed until updates for parent elements are completed. - * This allows the expansion/selection state of the elements to be - * properly restored as new elements are retrieved from model. - * </p> - * @param schedulingPath schedulingPath path or requests to start processing. May - * be <code>null</code> to start the shortest path request. - */ - private void trigger(TreePath schedulingPath) { - Assert.isTrue(getViewer().getDisplay().getThread() == Thread.currentThread()); - - if (fWaitingRequests.isEmpty()) { - return; - } + if (requests != null) { + for (int i = 0; i < requests.size(); i++) { + if (requests.get(i) instanceof ChildrenUpdate) { + return true; + } + } + } + requests = fRequestsInProgress.get(path); + if (requests != null) { + int numChildrenUpdateRequests = 0; + for (int i = 0; i < requests.size(); i++) { + if (requests.get(i) instanceof ChildrenUpdate) { + if (++numChildrenUpdateRequests > 1) { + return true; + } + } + } + } + return false; + } + + /** + * Triggers waiting requests based on the given request that just + * completed. + * <p> + * Requests are processed in order such that updates to + * children are delayed until updates for parent elements are completed. + * This allows the expansion/selection state of the elements to be + * properly restored as new elements are retrieved from model. + * </p> + * @param schedulingPath schedulingPath path or requests to start processing. May + * be <code>null</code> to start the shortest path request. + */ + private void trigger(TreePath schedulingPath) { + Assert.isTrue(getViewer().getDisplay().getThread() == Thread.currentThread()); + + if (fWaitingRequests.isEmpty()) { + return; + } List<ViewerUpdateMonitor> waiting = fWaitingRequests.get(schedulingPath); - if (waiting == null) { - // no waiting, update the entry with the shortest path - int length = Integer.MAX_VALUE; + if (waiting == null) { + // no waiting, update the entry with the shortest path + int length = Integer.MAX_VALUE; Entry<TreePath, List<ViewerUpdateMonitor>> candidate = null; for (Entry<TreePath, List<ViewerUpdateMonitor>> entry : fWaitingRequests.entrySet()) { - TreePath key = entry.getKey(); - if (key.getSegmentCount() < length && !isRequestBlocked(key)) { - candidate = entry; - length = key.getSegmentCount(); - } - } - if (candidate != null) { - startHighestPriorityRequest(candidate.getKey(), candidate.getValue()); - } - } else if (!isRequestBlocked(schedulingPath)) { - // start the highest priority request - startHighestPriorityRequest(schedulingPath, waiting); - } - } - - /** - * Returns true if there are running requests for any parent element of - * the given tree path. - * @param requestPath Path of element to check. - * @return Returns true if requests are running. - */ - private boolean isRequestBlocked(TreePath requestPath) { - TreePath parentPath = requestPath; + TreePath key = entry.getKey(); + if (key.getSegmentCount() < length && !isRequestBlocked(key)) { + candidate = entry; + length = key.getSegmentCount(); + } + } + if (candidate != null) { + startHighestPriorityRequest(candidate.getKey(), candidate.getValue()); + } + } else if (!isRequestBlocked(schedulingPath)) { + // start the highest priority request + startHighestPriorityRequest(schedulingPath, waiting); + } + } + + /** + * Returns true if there are running requests for any parent element of + * the given tree path. + * @param requestPath Path of element to check. + * @return Returns true if requests are running. + */ + private boolean isRequestBlocked(TreePath requestPath) { + TreePath parentPath = requestPath; List<ViewerUpdateMonitor> parentRequests = fRequestsInProgress.get(parentPath); - while (parentRequests == null || parentRequests.isEmpty()) { - parentPath = parentPath.getParentPath(); - if (parentPath == null) { - // no running requests: start request - return false; - } - parentRequests = fRequestsInProgress.get(parentPath); - } - return true; - } - - /** - * @param key the {@link TreePath} - * @param waiting the list of waiting requests - */ + while (parentRequests == null || parentRequests.isEmpty()) { + parentPath = parentPath.getParentPath(); + if (parentPath == null) { + // no running requests: start request + return false; + } + parentRequests = fRequestsInProgress.get(parentPath); + } + return true; + } + + /** + * @param key the {@link TreePath} + * @param waiting the list of waiting requests + */ private void startHighestPriorityRequest(TreePath key, List<ViewerUpdateMonitor> waiting) { - int priority = 4; - ViewerUpdateMonitor next = null; + int priority = 4; + ViewerUpdateMonitor next = null; for (ViewerUpdateMonitor vu : waiting) { - if (vu.getPriority() < priority) { - next = vu; - priority = next.getPriority(); - } - } - if (next != null) { - waiting.remove(next); - if (waiting.isEmpty()) { - fWaitingRequests.remove(key); - } - next.start(); - } - } - - /** - * Returns the element corresponding to the given tree path. - * - * @param path - * tree path - * @return model element - */ - protected Object getElement(TreePath path) { - if (path.getSegmentCount() > 0) { - return path.getLastSegment(); - } - return getViewer().getInput(); - } - - /** - * Reschedule any children updates in progress for the given parent that - * have a start index greater than the given index. An element has been - * removed at this index, invalidating updates in progress. - * - * @param parentPath - * view tree path to parent element - * @param modelIndex - * index at which an element was removed - */ - private void rescheduleUpdates(TreePath parentPath, int modelIndex) { - Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); + if (vu.getPriority() < priority) { + next = vu; + priority = next.getPriority(); + } + } + if (next != null) { + waiting.remove(next); + if (waiting.isEmpty()) { + fWaitingRequests.remove(key); + } + next.start(); + } + } + + /** + * Returns the element corresponding to the given tree path. + * + * @param path + * tree path + * @return model element + */ + protected Object getElement(TreePath path) { + if (path.getSegmentCount() > 0) { + return path.getLastSegment(); + } + return getViewer().getInput(); + } + + /** + * Reschedule any children updates in progress for the given parent that + * have a start index greater than the given index. An element has been + * removed at this index, invalidating updates in progress. + * + * @param parentPath + * view tree path to parent element + * @param modelIndex + * index at which an element was removed + */ + private void rescheduleUpdates(TreePath parentPath, int modelIndex) { + Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); List<ViewerUpdateMonitor> requests = fRequestsInProgress.get(parentPath); List<IChildrenUpdate> reCreate = null; - if (requests != null) { + if (requests != null) { Iterator<ViewerUpdateMonitor> iterator = requests.iterator(); - while (iterator.hasNext()) { + while (iterator.hasNext()) { ViewerUpdateMonitor update = iterator.next(); - if (update instanceof IChildrenUpdate) { - IChildrenUpdate childrenUpdate = (IChildrenUpdate) update; - if (childrenUpdate.getOffset() > modelIndex) { - // Cancel update and remove from requests list. Removing from - // fRequestsInProgress ensures that isRequestBlocked() won't be triggered - // by a canceled update. - childrenUpdate.cancel(); - iterator.remove(); - if (reCreate == null) { + if (update instanceof IChildrenUpdate) { + IChildrenUpdate childrenUpdate = (IChildrenUpdate) update; + if (childrenUpdate.getOffset() > modelIndex) { + // Cancel update and remove from requests list. Removing from + // fRequestsInProgress ensures that isRequestBlocked() won't be triggered + // by a canceled update. + childrenUpdate.cancel(); + iterator.remove(); + if (reCreate == null) { reCreate = new ArrayList<>(); - } - reCreate.add(childrenUpdate); - if (DebugUIPlugin.DEBUG_CONTENT_PROVIDER && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(getPresentationContext())) { - DebugUIPlugin.trace("canceled update in progress handling REMOVE: " + childrenUpdate); //$NON-NLS-1$ - } - } - } - } - } - requests = fWaitingRequests.get(parentPath); - if (requests != null) { + } + reCreate.add(childrenUpdate); + if (DebugUIPlugin.DEBUG_CONTENT_PROVIDER && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(getPresentationContext())) { + DebugUIPlugin.trace("canceled update in progress handling REMOVE: " + childrenUpdate); //$NON-NLS-1$ + } + } + } + } + } + requests = fWaitingRequests.get(parentPath); + if (requests != null) { for (ViewerUpdateMonitor update : requests) { - if (update instanceof IChildrenUpdate) { - IChildrenUpdate childrenUpdate = (IChildrenUpdate) update; - if (childrenUpdate.getOffset() > modelIndex) { - ((ChildrenUpdate) childrenUpdate).setOffset(childrenUpdate.getOffset() - 1); - if (DebugUIPlugin.DEBUG_CONTENT_PROVIDER && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(getPresentationContext())) { - DebugUIPlugin.trace("modified waiting update handling REMOVE: " + childrenUpdate); //$NON-NLS-1$ - } - } - } - } - } - // re-schedule canceled updates at new position. - // have to do this last else the requests would be waiting and - // get modified. - if (reCreate != null) { + if (update instanceof IChildrenUpdate) { + IChildrenUpdate childrenUpdate = (IChildrenUpdate) update; + if (childrenUpdate.getOffset() > modelIndex) { + ((ChildrenUpdate) childrenUpdate).setOffset(childrenUpdate.getOffset() - 1); + if (DebugUIPlugin.DEBUG_CONTENT_PROVIDER && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(getPresentationContext())) { + DebugUIPlugin.trace("modified waiting update handling REMOVE: " + childrenUpdate); //$NON-NLS-1$ + } + } + } + } + } + // re-schedule canceled updates at new position. + // have to do this last else the requests would be waiting and + // get modified. + if (reCreate != null) { for (IChildrenUpdate childrenUpdate : reCreate) { - int start = childrenUpdate.getOffset() - 1; - int end = start + childrenUpdate.getLength(); - for (int i = start; i < end; i++) { - doUpdateElement(parentPath, i); - } - } - } - } + int start = childrenUpdate.getOffset() - 1; + int end = start + childrenUpdate.getLength(); + for (int i = start; i < end; i++) { + doUpdateElement(parentPath, i); + } + } + } + } private void doUpdateChildCount(TreePath path) { - Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); + Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); Object element = getElement(path); IElementContentProvider contentAdapter = ViewerAdapterService.getContentProvider(element); @@ -1170,7 +1170,7 @@ public class TreeModelContentProvider implements ITreeModelContentProvider, ICon } void doUpdateElement(TreePath parentPath, int modelIndex) { - Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); + Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); Object parent = getElement(parentPath); IElementContentProvider contentAdapter = ViewerAdapterService.getContentProvider(parent); @@ -1181,7 +1181,7 @@ public class TreeModelContentProvider implements ITreeModelContentProvider, ICon } private void doUpdateHasChildren(TreePath path) { - Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); + Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); Object element = getElement(path); IElementContentProvider contentAdapter = ViewerAdapterService.getContentProvider(element); @@ -1197,73 +1197,73 @@ public class TreeModelContentProvider implements ITreeModelContentProvider, ICon * @param path Path of element to check. * @return Returns true if there are outstanding updates. */ - boolean areElementUpdatesPending(TreePath path) { - Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); + boolean areElementUpdatesPending(TreePath path) { + Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); - TreePath parentPath = path.getParentPath(); + TreePath parentPath = path.getParentPath(); List<ViewerUpdateMonitor> requests = fWaitingRequests.get(path); - if (requests != null) { - for (int i = 0; i < requests.size(); i++) { - ViewerUpdateMonitor update = requests.get(i); - if (update instanceof ChildrenUpdate) { - return true; - } - } - } - requests = fWaitingRequests.get(parentPath); - if (requests != null) { - for (int i = 0; i < requests.size(); i++) { - ViewerUpdateMonitor update = requests.get(i); - if (update.containsUpdate(path)) { - return true; - } - } - } - requests = fRequestsInProgress.get(path); - if (requests != null) { - for (int i = 0; i < requests.size(); i++) { - ViewerUpdateMonitor update = requests.get(i); - if (update instanceof ChildrenUpdate) { - return true; - } - } - } - requests = fRequestsInProgress.get(parentPath); - if (requests != null) { - for (int i = 0; i < requests.size(); i++) { - ViewerUpdateMonitor update = requests.get(i); - if (update.getElement().equals(path.getLastSegment())) { - return true; - } - } - } - return false; - } - - /** - * Returns the presentation context for this content provider. - * - * @return presentation context - */ + if (requests != null) { + for (int i = 0; i < requests.size(); i++) { + ViewerUpdateMonitor update = requests.get(i); + if (update instanceof ChildrenUpdate) { + return true; + } + } + } + requests = fWaitingRequests.get(parentPath); + if (requests != null) { + for (int i = 0; i < requests.size(); i++) { + ViewerUpdateMonitor update = requests.get(i); + if (update.containsUpdate(path)) { + return true; + } + } + } + requests = fRequestsInProgress.get(path); + if (requests != null) { + for (int i = 0; i < requests.size(); i++) { + ViewerUpdateMonitor update = requests.get(i); + if (update instanceof ChildrenUpdate) { + return true; + } + } + } + requests = fRequestsInProgress.get(parentPath); + if (requests != null) { + for (int i = 0; i < requests.size(); i++) { + ViewerUpdateMonitor update = requests.get(i); + if (update.getElement().equals(path.getLastSegment())) { + return true; + } + } + } + return false; + } + + /** + * Returns the presentation context for this content provider. + * + * @return presentation context + */ protected IPresentationContext getPresentationContext() { - ITreeModelViewer viewer = getViewer(); - if (viewer != null) { - return viewer.getPresentationContext(); - } - return null; - } - - /** - * Updates the viewer with the following deltas. - * - * @param nodes Model deltas to be processed. - * @param mask the model delta mask - * @see IModelDelta for a list of masks - */ - protected void updateNodes(IModelDelta[] nodes, int mask) { - for (int i = 0; i < nodes.length; i++) { - IModelDelta node = nodes[i]; - int flags = node.getFlags() & mask; + ITreeModelViewer viewer = getViewer(); + if (viewer != null) { + return viewer.getPresentationContext(); + } + return null; + } + + /** + * Updates the viewer with the following deltas. + * + * @param nodes Model deltas to be processed. + * @param mask the model delta mask + * @see IModelDelta for a list of masks + */ + protected void updateNodes(IModelDelta[] nodes, int mask) { + for (int i = 0; i < nodes.length; i++) { + IModelDelta node = nodes[i]; + int flags = node.getFlags() & mask; if (flags != 0) { if ((flags & IModelDelta.ADDED) != 0) { handleAdd(node); @@ -1301,36 +1301,36 @@ public class TreeModelContentProvider implements ITreeModelContentProvider, ICon if ((flags & IModelDelta.REVEAL) != 0) { handleReveal(node); } - } - updateNodes(node.getChildDeltas(), mask); - } - } + } + updateNodes(node.getChildDeltas(), mask); + } + } - protected void handleInstall(IModelDelta delta) { - installModelProxy(getViewer().getInput(), getFullTreePath(delta)); - } + protected void handleInstall(IModelDelta delta) { + installModelProxy(getViewer().getInput(), getFullTreePath(delta)); + } - protected void handleUninstall(IModelDelta delta) { - disposeModelProxy(getFullTreePath(delta)); - } + protected void handleUninstall(IModelDelta delta) { + disposeModelProxy(getFullTreePath(delta)); + } - protected void handleAdd(IModelDelta delta) { + protected void handleAdd(IModelDelta delta) { IModelDelta parentDelta = delta.getParentDelta(); if (parentDelta == null) { - DebugUIPlugin.log(new Status(IStatus.ERROR, DebugUIPlugin.getUniqueIdentifier(), "Invalid viewer update: " + delta + ", in " + getPresentationContext().getId(), null )); //$NON-NLS-1$ //$NON-NLS-2$ - return; + DebugUIPlugin.log(new Status(IStatus.ERROR, DebugUIPlugin.getUniqueIdentifier(), "Invalid viewer update: " + delta + ", in " + getPresentationContext().getId(), null )); //$NON-NLS-1$ //$NON-NLS-2$ + return; } TreePath parentPath = getViewerTreePath(parentDelta); Object element = delta.getElement(); int count = parentDelta.getChildCount(); if (count > 0) { - setModelChildCount(parentPath, count); - int modelIndex = count - 1; - if (delta.getIndex() != -1) { - // assume addition at end, unless index specified by delta - modelIndex = delta.getIndex(); - } + setModelChildCount(parentPath, count); + int modelIndex = count - 1; + if (delta.getIndex() != -1) { + // assume addition at end, unless index specified by delta + modelIndex = delta.getIndex(); + } if (shouldFilter(parentPath, element)) { addFilteredIndex(parentPath, modelIndex, element); if (DebugUIPlugin.DEBUG_CONTENT_PROVIDER && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(getPresentationContext())) { @@ -1341,7 +1341,7 @@ public class TreeModelContentProvider implements ITreeModelContentProvider, ICon if (isFiltered(parentPath, modelIndex)) { clearFilteredChild(parentPath, modelIndex); } - int viewIndex = modelToViewIndex(parentPath, modelIndex); + int viewIndex = modelToViewIndex(parentPath, modelIndex); int viewCount = modelToViewChildCount(parentPath, count); if (DebugUIPlugin.DEBUG_CONTENT_PROVIDER && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(getPresentationContext())) { DebugUIPlugin.trace("handleAdd(" + delta.getElement() + ") viewIndex: " + viewIndex + " modelIndex: " + modelIndex + " viewCount: " + viewCount + " modelCount: " + count); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ @@ -1357,11 +1357,11 @@ public class TreeModelContentProvider implements ITreeModelContentProvider, ICon if (DebugUIPlugin.DEBUG_CONTENT_PROVIDER && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(getPresentationContext())) { DebugUIPlugin.trace("handleAdd(" + delta.getElement() + ")"); //$NON-NLS-1$ //$NON-NLS-2$ } - doUpdateChildCount(getViewerTreePath(delta.getParentDelta())); + doUpdateChildCount(getViewerTreePath(delta.getParentDelta())); } } - protected void handleContent(IModelDelta delta) { + protected void handleContent(IModelDelta delta) { if (delta.getParentDelta() == null && delta.getChildCount() == 0) { // if the delta is for the root, ensure the root still matches viewer input if (!delta.getElement().equals(getViewer().getInput())) { @@ -1373,13 +1373,13 @@ public class TreeModelContentProvider implements ITreeModelContentProvider, ICon getViewer().refresh(getElement(treePath)); } - protected void handleCollapse(IModelDelta delta) { + protected void handleCollapse(IModelDelta delta) { TreePath elementPath = getViewerTreePath(delta); getViewer().setExpandedState(elementPath, false); - cancelRestore(elementPath, IModelDelta.EXPAND); + cancelRestore(elementPath, IModelDelta.EXPAND); } - protected void handleExpand(IModelDelta delta) { + protected void handleExpand(IModelDelta delta) { // expand each parent, then this node IModelDelta parentDelta = delta.getParentDelta(); if (parentDelta != null) { @@ -1388,22 +1388,22 @@ public class TreeModelContentProvider implements ITreeModelContentProvider, ICon } expand(delta); } else { - int childCount = delta.getChildCount(); - TreePath elementPath = getViewerTreePath(delta); - if (childCount > 0) { - int viewCount = modelToViewChildCount(elementPath, childCount); - if (DebugUIPlugin.DEBUG_CONTENT_PROVIDER && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(getPresentationContext())) { - DebugUIPlugin.trace("[expand] setChildCount(" + delta.getElement() + ", (model) " + childCount + " (view) " + viewCount); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ - } - getViewer().setChildCount(elementPath, viewCount); - } - } - } - - /** - * Expands the element pointed to by given delta. - * @param delta Delta that points to the element to expand. - */ + int childCount = delta.getChildCount(); + TreePath elementPath = getViewerTreePath(delta); + if (childCount > 0) { + int viewCount = modelToViewChildCount(elementPath, childCount); + if (DebugUIPlugin.DEBUG_CONTENT_PROVIDER && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(getPresentationContext())) { + DebugUIPlugin.trace("[expand] setChildCount(" + delta.getElement() + ", (model) " + childCount + " (view) " + viewCount); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + } + getViewer().setChildCount(elementPath, viewCount); + } + } + } + + /** + * Expands the element pointed to by given delta. + * @param delta Delta that points to the element to expand. + */ private void expand(IModelDelta delta) { int childCount = delta.getChildCount(); int modelIndex = delta.getIndex(); @@ -1435,9 +1435,9 @@ public class TreeModelContentProvider implements ITreeModelContentProvider, ICon DebugUIPlugin.trace("[expand] setChildCount(" + delta.getElement() + ", (model) " + childCount + " (view) " + viewCount); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ } treeViewer.setChildCount(elementPath, viewCount); - if (!treeViewer.getExpandedState(elementPath)) { - treeViewer.expandToLevel(elementPath, 1); - } + if (!treeViewer.getExpandedState(elementPath)) { + treeViewer.expandToLevel(elementPath, 1); + } cancelRestore(elementPath, IModelDelta.COLLAPSE); } } @@ -1451,7 +1451,7 @@ public class TreeModelContentProvider implements ITreeModelContentProvider, ICon * @param element element to insert * @param modelIndex index of the element in the model * @return Returns the view index of the newly inserted element - * or -1 if not inserted. + * or -1 if not inserted. */ private int unfilterElement(TreePath parentPath, Object element, int modelIndex) { // Element is filtered - if no longer filtered, insert the element @@ -1478,11 +1478,11 @@ public class TreeModelContentProvider implements ITreeModelContentProvider, ICon } protected void handleInsert(IModelDelta delta) { - IModelDelta parentDelta = delta.getParentDelta(); - if (parentDelta == null) { - DebugUIPlugin.log(new Status(IStatus.ERROR, DebugUIPlugin.getUniqueIdentifier(), "Invalid viewer update: " + delta + ", in " + getPresentationContext().getId(), null )); //$NON-NLS-1$ //$NON-NLS-2$ - return; - } + IModelDelta parentDelta = delta.getParentDelta(); + if (parentDelta == null) { + DebugUIPlugin.log(new Status(IStatus.ERROR, DebugUIPlugin.getUniqueIdentifier(), "Invalid viewer update: " + delta + ", in " + getPresentationContext().getId(), null )); //$NON-NLS-1$ //$NON-NLS-2$ + return; + } TreePath parentPath = getViewerTreePath(delta.getParentDelta()); Object element = delta.getElement(); @@ -1505,7 +1505,7 @@ public class TreeModelContentProvider implements ITreeModelContentProvider, ICon if (DebugUIPlugin.DEBUG_CONTENT_PROVIDER && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(getPresentationContext())) { DebugUIPlugin.trace("handleInsert(" + delta.getElement() + ")"); //$NON-NLS-1$ //$NON-NLS-2$ } - doUpdateChildCount(getViewerTreePath(delta.getParentDelta())); + doUpdateChildCount(getViewerTreePath(delta.getParentDelta())); } } @@ -1515,8 +1515,8 @@ public class TreeModelContentProvider implements ITreeModelContentProvider, ICon } IModelDelta parentDelta = delta.getParentDelta(); if (parentDelta == null) { - DebugUIPlugin.log(new Status(IStatus.ERROR, DebugUIPlugin.getUniqueIdentifier(), "Invalid viewer update: " + delta + ", in " + getPresentationContext().getId(), null )); //$NON-NLS-1$ //$NON-NLS-2$ - return; + DebugUIPlugin.log(new Status(IStatus.ERROR, DebugUIPlugin.getUniqueIdentifier(), "Invalid viewer update: " + delta + ", in " + getPresentationContext().getId(), null )); //$NON-NLS-1$ //$NON-NLS-2$ + return; } IInternalTreeModelViewer treeViewer = getViewer(); TreePath parentPath = getViewerTreePath(parentDelta); @@ -1530,16 +1530,16 @@ public class TreeModelContentProvider implements ITreeModelContentProvider, ICon int unmappedIndex = -1; int itemCount = -1; if (modelIndex < 0) { - itemCount = treeViewer.getChildCount(parentPath); - if (itemCount == -1) { - clearFilters(parentPath); - } - viewIndex = treeViewer.findElementIndex(parentPath, element); - if (viewIndex >= 0) { - modelIndex = viewToModelIndex(parentPath, viewIndex); - } else { - unmappedIndex = treeViewer.findElementIndex(parentPath, null); - } + itemCount = treeViewer.getChildCount(parentPath); + if (itemCount == -1) { + clearFilters(parentPath); + } + viewIndex = treeViewer.findElementIndex(parentPath, element); + if (viewIndex >= 0) { + modelIndex = viewToModelIndex(parentPath, viewIndex); + } else { + unmappedIndex = treeViewer.findElementIndex(parentPath, null); + } } else { viewIndex = modelToViewIndex(parentPath, modelIndex); } @@ -1583,41 +1583,41 @@ public class TreeModelContentProvider implements ITreeModelContentProvider, ICon } protected void handleReplace(IModelDelta delta) { - IModelDelta parentDelta = delta.getParentDelta(); - if (parentDelta == null) { - DebugUIPlugin.log(new Status(IStatus.ERROR, DebugUIPlugin.getUniqueIdentifier(), "Invalid viewer update: " + delta + ", in " + getPresentationContext().getId(), null )); //$NON-NLS-1$ //$NON-NLS-2$ - return; - } + IModelDelta parentDelta = delta.getParentDelta(); + if (parentDelta == null) { + DebugUIPlugin.log(new Status(IStatus.ERROR, DebugUIPlugin.getUniqueIdentifier(), "Invalid viewer update: " + delta + ", in " + getPresentationContext().getId(), null )); //$NON-NLS-1$ //$NON-NLS-2$ + return; + } TreePath parentPath = getViewerTreePath(parentDelta); int index = delta.getIndex(); if (index < 0) { - index = fTransform.indexOfFilteredElement(parentPath, delta.getElement()); + index = fTransform.indexOfFilteredElement(parentPath, delta.getElement()); } if (index >= 0) { - boolean filtered = isFiltered(parentPath, index); - boolean shouldFilter = shouldFilter(parentPath, delta.getReplacementElement()); - - // Update the filter transform - if (filtered) { - clearFilteredChild(parentPath, index); - } - if (shouldFilter) { - addFilteredIndex(parentPath, index, delta.getElement()); - } - - // Update the viewer - if (filtered) { - if (!shouldFilter) { - getViewer().insert(parentPath, delta.getReplacementElement(), modelToViewIndex(parentPath, index)); - } - //else do nothing - } else { - if (shouldFilter) { - getViewer().remove(parentPath, modelToViewIndex(parentPath, index)); - } else { - getViewer().replace(parentPath, delta.getIndex(), delta.getReplacementElement()); - } - } + boolean filtered = isFiltered(parentPath, index); + boolean shouldFilter = shouldFilter(parentPath, delta.getReplacementElement()); + + // Update the filter transform + if (filtered) { + clearFilteredChild(parentPath, index); + } + if (shouldFilter) { + addFilteredIndex(parentPath, index, delta.getElement()); + } + + // Update the viewer + if (filtered) { + if (!shouldFilter) { + getViewer().insert(parentPath, delta.getReplacementElement(), modelToViewIndex(parentPath, index)); + } + //else do nothing + } else { + if (shouldFilter) { + getViewer().remove(parentPath, modelToViewIndex(parentPath, index)); + } else { + getViewer().replace(parentPath, delta.getIndex(), delta.getReplacementElement()); + } + } } } @@ -1627,18 +1627,18 @@ public class TreeModelContentProvider implements ITreeModelContentProvider, ICon // check if selection is allowed IStructuredSelection candidate = new TreeSelection(getViewerTreePath(delta)); if ((delta.getFlags() & IModelDelta.FORCE) == 0 && - !treeViewer.overrideSelection(treeViewer.getSelection(), candidate)) + !treeViewer.overrideSelection(treeViewer.getSelection(), candidate)) { return; } // empty the selection before replacing elements to avoid materializing elements (@see bug 305739) treeViewer.clearSelectionQuiet(); if (modelIndex >= 0) { - IModelDelta parentDelta = delta.getParentDelta(); - if (parentDelta == null) { - DebugUIPlugin.log(new Status(IStatus.ERROR, DebugUIPlugin.getUniqueIdentifier(), "Invalid viewer update: " + delta + ", in " + getPresentationContext().getId(), null )); //$NON-NLS-1$ //$NON-NLS-2$ - return; - } + IModelDelta parentDelta = delta.getParentDelta(); + if (parentDelta == null) { + DebugUIPlugin.log(new Status(IStatus.ERROR, DebugUIPlugin.getUniqueIdentifier(), "Invalid viewer update: " + delta + ", in " + getPresentationContext().getId(), null )); //$NON-NLS-1$ //$NON-NLS-2$ + return; + } TreePath parentPath = getViewerTreePath(parentDelta); int viewIndex = modelToViewIndex(parentPath, modelIndex); if (viewIndex >= 0) { @@ -1659,7 +1659,7 @@ public class TreeModelContentProvider implements ITreeModelContentProvider, ICon } TreePath selectionPath = getViewerTreePath(delta); if (treeViewer.trySelection(new TreeSelection(selectionPath), false, (delta.getFlags() | IModelDelta.FORCE) == 0)) { - cancelRestore(selectionPath, IModelDelta.SELECT); + cancelRestore(selectionPath, IModelDelta.SELECT); } } @@ -1669,13 +1669,13 @@ public class TreeModelContentProvider implements ITreeModelContentProvider, ICon protected void handleReveal(IModelDelta delta) { IModelDelta parentDelta = delta.getParentDelta(); - if (parentDelta == null) { - DebugUIPlugin.log(new Status(IStatus.ERROR, DebugUIPlugin.getUniqueIdentifier(), "Invalid viewer update: " + delta + ", in " + getPresentationContext().getId(), null )); //$NON-NLS-1$ //$NON-NLS-2$ - return; - } - handleExpand(parentDelta); - reveal(delta); - cancelRestore(getViewerTreePath(delta), IModelDelta.REVEAL); + if (parentDelta == null) { + DebugUIPlugin.log(new Status(IStatus.ERROR, DebugUIPlugin.getUniqueIdentifier(), "Invalid viewer update: " + delta + ", in " + getPresentationContext().getId(), null )); //$NON-NLS-1$ //$NON-NLS-2$ + return; + } + handleExpand(parentDelta); + reveal(delta); + cancelRestore(getViewerTreePath(delta), IModelDelta.REVEAL); } /** @@ -1708,7 +1708,7 @@ public class TreeModelContentProvider implements ITreeModelContentProvider, ICon // only move tree based on force flag and selection policy if ((delta.getFlags() & IModelDelta.FORCE) != 0 || - treeViewer.overrideSelection(treeViewer.getSelection(), new TreeSelection(elementPath))) + treeViewer.overrideSelection(treeViewer.getSelection(), new TreeSelection(elementPath))) { /* * Bug 438724 - Save reveal parameters and redo reveal on @@ -1717,7 +1717,7 @@ public class TreeModelContentProvider implements ITreeModelContentProvider, ICon */ fRevealPath = parentPath; fRevealIndex = viewIndex; - treeViewer.reveal(parentPath, viewIndex); + treeViewer.reveal(parentPath, viewIndex); } } } @@ -1729,7 +1729,7 @@ public class TreeModelContentProvider implements ITreeModelContentProvider, ICon @Override public void updateChildCount(TreePath treePath, int currentChildCount) { - Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); + Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); if (DebugUIPlugin.DEBUG_CONTENT_PROVIDER && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(getPresentationContext())) { DebugUIPlugin.trace("updateChildCount(" + getElement(treePath) + ", " + currentChildCount + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ @@ -1739,7 +1739,7 @@ public class TreeModelContentProvider implements ITreeModelContentProvider, ICon @Override public void updateElement(TreePath parentPath, int viewIndex) { - Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); + Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); int modelIndex = viewToModelIndex(parentPath, viewIndex); if (DebugUIPlugin.DEBUG_CONTENT_PROVIDER && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(getPresentationContext())) { @@ -1750,7 +1750,7 @@ public class TreeModelContentProvider implements ITreeModelContentProvider, ICon @Override public void updateHasChildren(TreePath path) { - Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); + Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); if (DebugUIPlugin.DEBUG_CONTENT_PROVIDER && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(getPresentationContext())) { DebugUIPlugin.trace("updateHasChildren(" + getElement(path)); //$NON-NLS-1$ @@ -1765,61 +1765,61 @@ public class TreeModelContentProvider implements ITreeModelContentProvider, ICon * @param update Update to perform. */ void scheduleViewerUpdate(ViewerUpdateMonitor update) { - Display display; - Runnable updateJob = null; - synchronized(this) { - if (isDisposed()) { + Display display; + Runnable updateJob = null; + synchronized(this) { + if (isDisposed()) { return; } - display = getViewer().getDisplay(); - fCompletedUpdates.add(update); - if (fCompletedUpdatesRunnable == null) { + display = getViewer().getDisplay(); + fCompletedUpdates.add(update); + if (fCompletedUpdatesRunnable == null) { fCompletedUpdatesRunnable = () -> { if (!isDisposed()) { performUpdates(); } }; - updateJob = fCompletedUpdatesRunnable; - } - } - - if (updateJob != null) { - if (Thread.currentThread() == display.getThread()) { - performUpdates(); - } else { + updateJob = fCompletedUpdatesRunnable; + } + } + + if (updateJob != null) { + if (Thread.currentThread() == display.getThread()) { + performUpdates(); + } else { fDelayedDoModelChangeJob.runDelayed(updateJob); - } - } + } + } } /** * Perform the updates pointed to by given array on the viewer. */ private void performUpdates() { - Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); + Assert.isTrue( getViewer().getDisplay().getThread() == Thread.currentThread() ); List<ViewerUpdateMonitor> jobCompletedUpdates; - synchronized(this) { - if (isDisposed()) { - return; - } - jobCompletedUpdates = fCompletedUpdates; - fCompletedUpdatesRunnable = null; + synchronized(this) { + if (isDisposed()) { + return; + } + jobCompletedUpdates = fCompletedUpdates; + fCompletedUpdatesRunnable = null; fCompletedUpdates = new ArrayList<>(); - } - // necessary to check if viewer is disposed - try { - for (int i = 0; i < jobCompletedUpdates.size(); i++) { - ViewerUpdateMonitor completedUpdate = jobCompletedUpdates.get(i); - if (!completedUpdate.isCanceled() && !isDisposed()) { - IStatus status = completedUpdate.getStatus(); - if (status == null || status.isOK()) { - completedUpdate.performUpdate(); - } - } - } - } finally { - updatesComplete(jobCompletedUpdates); - } + } + // necessary to check if viewer is disposed + try { + for (int i = 0; i < jobCompletedUpdates.size(); i++) { + ViewerUpdateMonitor completedUpdate = jobCompletedUpdates.get(i); + if (!completedUpdate.isCanceled() && !isDisposed()) { + IStatus status = completedUpdate.getStatus(); + if (status == null || status.isOK()) { + completedUpdate.performUpdate(); + } + } + } + } finally { + updatesComplete(jobCompletedUpdates); + } } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/TreeModelLabelProvider.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/TreeModelLabelProvider.java index dbf6f53c2..bbde049f8 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/TreeModelLabelProvider.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/TreeModelLabelProvider.java @@ -49,7 +49,7 @@ import org.eclipse.swt.widgets.Display; * @since 3.3 */ public class TreeModelLabelProvider extends ColumnLabelProvider - implements ITreeModelLabelProvider, IModelChangedListener + implements ITreeModelLabelProvider, IModelChangedListener { private IInternalTreeModelViewer fViewer; @@ -103,28 +103,28 @@ public class TreeModelLabelProvider extends ColumnLabelProvider */ private List<ILabelUpdate> fUpdatesInProgress = new ArrayList<>(); - /** - * Delta visitor actively cancels the outstanding label updates for - * elements that are changed and are about to be updated. - */ - class CancelPendingUpdatesVisitor implements IModelDeltaVisitor { - @Override + /** + * Delta visitor actively cancels the outstanding label updates for + * elements that are changed and are about to be updated. + */ + class CancelPendingUpdatesVisitor implements IModelDeltaVisitor { + @Override public boolean visit(IModelDelta delta, int depth) { - if ((delta.getFlags() & IModelDelta.CONTENT) > 0) { - cancelElementUpdates(delta.getElement(), true); - return false; - } else if ((delta.getFlags() & IModelDelta.STATE) > 0) { - cancelElementUpdates(delta.getElement(), false); - return true; - } - return true; - } - } - - /** - * Delta visitor - */ - private CancelPendingUpdatesVisitor fCancelPendingUpdatesVisitor = new CancelPendingUpdatesVisitor(); + if ((delta.getFlags() & IModelDelta.CONTENT) > 0) { + cancelElementUpdates(delta.getElement(), true); + return false; + } else if ((delta.getFlags() & IModelDelta.STATE) > 0) { + cancelElementUpdates(delta.getElement(), false); + return true; + } + return true; + } + } + + /** + * Delta visitor + */ + private CancelPendingUpdatesVisitor fCancelPendingUpdatesVisitor = new CancelPendingUpdatesVisitor(); /** * Constructs a new label provider on the given display @@ -206,21 +206,21 @@ public class TreeModelLabelProvider extends ColumnLabelProvider @Override public void dispose() { - Assert.isTrue(fViewer.getDisplay().getThread() == Thread.currentThread()); + Assert.isTrue(fViewer.getDisplay().getThread() == Thread.currentThread()); - fViewer.removeModelChangedListener(this); - fViewer = null; + fViewer.removeModelChangedListener(this); + fViewer = null; List<ILabelUpdate> complete = null; - synchronized(this) { - complete = fComplete; - fComplete = null; - } - if (complete != null) { + synchronized(this) { + complete = fComplete; + fComplete = null; + } + if (complete != null) { for (ILabelUpdate update : complete) { update.cancel(); } - } + } for (ILabelUpdate currentUpdate : fUpdatesInProgress) { currentUpdate.cancel(); } @@ -231,7 +231,7 @@ public class TreeModelLabelProvider extends ColumnLabelProvider for (List<ILabelUpdate> updateList : fPendingUpdates.values()) { for (ILabelUpdate update : updateList) { update.cancel(); - } + } } fPendingUpdates.clear(); for (Image image : fImageCache.values()) { @@ -250,7 +250,7 @@ public class TreeModelLabelProvider extends ColumnLabelProvider } private boolean isDisposed() { - return fViewer == null; + return fViewer == null; } @Override @@ -260,120 +260,120 @@ public class TreeModelLabelProvider extends ColumnLabelProvider @Override public boolean update(TreePath elementPath) { - Assert.isTrue(fViewer.getDisplay().getThread() == Thread.currentThread()); + Assert.isTrue(fViewer.getDisplay().getThread() == Thread.currentThread()); - cancelPathUpdates(elementPath); + cancelPathUpdates(elementPath); String[] visibleColumns = fViewer.getVisibleColumns(); Object element = elementPath.getLastSegment(); IElementLabelProvider presentation = ViewerAdapterService.getLabelProvider(element); if (presentation != null) { List<ILabelUpdate> updates = fPendingUpdates.get(presentation); - if (updates == null) { + if (updates == null) { updates = new LinkedList<>(); - fPendingUpdates.put(presentation, updates); - } - updates.add(new LabelUpdate(fViewer.getInput(), elementPath, this, visibleColumns, fViewer.getPresentationContext())); - fPendingUpdatesRunnable = new Runnable() { - @Override + fPendingUpdates.put(presentation, updates); + } + updates.add(new LabelUpdate(fViewer.getInput(), elementPath, this, visibleColumns, fViewer.getPresentationContext())); + fPendingUpdatesRunnable = new Runnable() { + @Override public void run() { - if (isDisposed()) { + if (isDisposed()) { return; } - startRequests(this); - } - }; - fViewer.getDisplay().asyncExec(fPendingUpdatesRunnable); + startRequests(this); + } + }; + fViewer.getDisplay().asyncExec(fPendingUpdatesRunnable); return true; } else { - return false; + return false; } } /** - * Cancel any outstanding updates that are running for this element. + * Cancel any outstanding updates that are running for this element. * @param elementPath Element to cancel updates for. - */ - private void cancelPathUpdates(TreePath elementPath) { - Assert.isTrue(fViewer.getDisplay().getThread() == Thread.currentThread()); + */ + private void cancelPathUpdates(TreePath elementPath) { + Assert.isTrue(fViewer.getDisplay().getThread() == Thread.currentThread()); for (ILabelUpdate currentUpdate : fUpdatesInProgress) { - if (elementPath.equals(currentUpdate.getElementPath())) { - currentUpdate.cancel(); - } - } - } - - /** - * Sets the element's display information in the viewer. - * - * @param path Element path. - * @param numColumns Number of columns in the data. - * @param labels Array of labels. The array cannot to be - * <code>null</code>, but values within the array may be. - * @param images Array of image descriptors, may be <code>null</code>. - * @param fontDatas Array of fond data objects, may be <code>null</code>. - * @param foregrounds Array of RGB values for foreground colors, may be - * <code>null</code>. - * @param backgrounds Array of RGB values for background colors, may be - * <code>null</code>. - * @param checked Whether given item should be checked. - * @param grayed Whether given item's checkbox should be grayed. - */ - void setElementData(TreePath path, int numColumns, String[] labels, ImageDescriptor[] images, - FontData[] fontDatas, RGB[] foregrounds, RGB[] backgrounds, boolean checked, boolean grayed) - { - fViewer.setElementData(path, numColumns, labels, images, fontDatas, foregrounds, backgrounds); - fViewer.setElementChecked(path, checked, grayed); - } + if (elementPath.equals(currentUpdate.getElementPath())) { + currentUpdate.cancel(); + } + } + } + + /** + * Sets the element's display information in the viewer. + * + * @param path Element path. + * @param numColumns Number of columns in the data. + * @param labels Array of labels. The array cannot to be + * <code>null</code>, but values within the array may be. + * @param images Array of image descriptors, may be <code>null</code>. + * @param fontDatas Array of fond data objects, may be <code>null</code>. + * @param foregrounds Array of RGB values for foreground colors, may be + * <code>null</code>. + * @param backgrounds Array of RGB values for background colors, may be + * <code>null</code>. + * @param checked Whether given item should be checked. + * @param grayed Whether given item's checkbox should be grayed. + */ + void setElementData(TreePath path, int numColumns, String[] labels, ImageDescriptor[] images, + FontData[] fontDatas, RGB[] foregrounds, RGB[] backgrounds, boolean checked, boolean grayed) + { + fViewer.setElementData(path, numColumns, labels, images, fontDatas, foregrounds, backgrounds); + fViewer.setElementChecked(path, checked, grayed); + } private void startRequests(Runnable runnable) { - if (runnable != fPendingUpdatesRunnable) { - return; - } - if (!fPendingUpdates.isEmpty()) { + if (runnable != fPendingUpdatesRunnable) { + return; + } + if (!fPendingUpdates.isEmpty()) { List<ILabelUpdate> list = null; for (Entry<IElementLabelProvider, List<ILabelUpdate>> entry : fPendingUpdates.entrySet()) { list = entry.getValue(); for (ILabelUpdate update : list) { updateStarted(update); - } + } entry.getKey().update(list.toArray(new ILabelUpdate[list.size()])); - } - } - fPendingUpdates.clear(); - fPendingUpdatesRunnable = null; + } + } + fPendingUpdates.clear(); + fPendingUpdatesRunnable = null; } - /** - * Cancels all running updates for the given element. If seachFullPath is true, - * all updates will be canceled which have the given element anywhere in their - * patch. - * @param element element to search for. - * @param searchFullPath flag whether to look for the element in the full path - * of the update - */ - private void cancelElementUpdates(Object element, boolean searchFullPath) { + /** + * Cancels all running updates for the given element. If seachFullPath is true, + * all updates will be canceled which have the given element anywhere in their + * patch. + * @param element element to search for. + * @param searchFullPath flag whether to look for the element in the full path + * of the update + */ + private void cancelElementUpdates(Object element, boolean searchFullPath) { for (ILabelUpdate currentUpdate : fUpdatesInProgress) { - if (searchFullPath) { - if (element.equals(fViewer.getInput())) { - currentUpdate.cancel(); - } else { - TreePath updatePath = currentUpdate.getElementPath(); - for (int i = 0; i < updatePath.getSegmentCount(); i++) { - if (element.equals(updatePath.getSegment(i))) { - currentUpdate.cancel(); - break; // Exit the for loop, stay in the while loop - } - } - } - } else { - if (element.equals(currentUpdate.getElement())) { - currentUpdate.cancel(); - } - } - } - } + if (searchFullPath) { + if (element.equals(fViewer.getInput())) { + currentUpdate.cancel(); + } else { + TreePath updatePath = currentUpdate.getElementPath(); + for (int i = 0; i < updatePath.getSegmentCount(); i++) { + if (element.equals(updatePath.getSegment(i))) { + currentUpdate.cancel(); + break; // Exit the for loop, stay in the while loop + } + } + } + } else { + if (element.equals(currentUpdate.getElement())) { + currentUpdate.cancel(); + } + } + } + } /** * Returns the presentation context for this label provider. @@ -384,13 +384,13 @@ public class TreeModelLabelProvider extends ColumnLabelProvider return fViewer.getPresentationContext(); } - /** - * A label update is complete. - * - * @param update Update that is to be completed. - */ - synchronized void complete(ILabelUpdate update) { - if (fViewer == null) { + /** + * A label update is complete. + * + * @param update Update that is to be completed. + */ + synchronized void complete(ILabelUpdate update) { + if (fViewer == null) { return; } @@ -411,11 +411,11 @@ public class TreeModelLabelProvider extends ColumnLabelProvider } else { ((LabelUpdate) itrUpdate).performUpdate(); } - } + } }); } fComplete.add(update); - } + } @Override public void addLabelUpdateListener(ILabelUpdateListener listener) { @@ -433,7 +433,7 @@ public class TreeModelLabelProvider extends ColumnLabelProvider * @param update Update that was started */ void updateStarted(ILabelUpdate update) { - Assert.isTrue(fViewer.getDisplay().getThread() == Thread.currentThread()); + Assert.isTrue(fViewer.getDisplay().getThread() == Thread.currentThread()); boolean begin = fUpdatesInProgress.isEmpty(); fUpdatesInProgress.add(update); @@ -444,8 +444,8 @@ public class TreeModelLabelProvider extends ColumnLabelProvider } notifyUpdate(TreeModelContentProvider.UPDATE_SEQUENCE_BEGINS, null); } - if (DebugUIPlugin.DEBUG_UPDATE_SEQUENCE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(getPresentationContext())) { - DebugUIPlugin.trace("\tBEGIN - " + update); //$NON-NLS-1$ + if (DebugUIPlugin.DEBUG_UPDATE_SEQUENCE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(getPresentationContext())) { + DebugUIPlugin.trace("\tBEGIN - " + update); //$NON-NLS-1$ } notifyUpdate(TreeModelContentProvider.UPDATE_BEGINS, update); } @@ -458,13 +458,13 @@ public class TreeModelLabelProvider extends ColumnLabelProvider void updateComplete(ILabelUpdate update) { fUpdatesInProgress.remove(update); - if (DebugUIPlugin.DEBUG_UPDATE_SEQUENCE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(getPresentationContext())) { - DebugUIPlugin.trace("\tEND - " + update); //$NON-NLS-1$ + if (DebugUIPlugin.DEBUG_UPDATE_SEQUENCE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(getPresentationContext())) { + DebugUIPlugin.trace("\tEND - " + update); //$NON-NLS-1$ } notifyUpdate(TreeModelContentProvider.UPDATE_COMPLETE, update); if (fUpdatesInProgress.isEmpty()) { - if (DebugUIPlugin.DEBUG_UPDATE_SEQUENCE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(getPresentationContext())) { - DebugUIPlugin.trace("LABEL SEQUENCE ENDS"); //$NON-NLS-1$ + if (DebugUIPlugin.DEBUG_UPDATE_SEQUENCE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(getPresentationContext())) { + DebugUIPlugin.trace("LABEL SEQUENCE ENDS"); //$NON-NLS-1$ } notifyUpdate(TreeModelContentProvider.UPDATE_SEQUENCE_COMPLETE, null); } @@ -505,7 +505,7 @@ public class TreeModelLabelProvider extends ColumnLabelProvider @Override public void modelChanged(IModelDelta delta, IModelProxy proxy) { - delta.accept(fCancelPendingUpdatesVisitor); - } + delta.accept(fCancelPendingUpdatesVisitor); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ViewerAdapterService.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ViewerAdapterService.java index ad74f09e2..293f64366 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ViewerAdapterService.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ViewerAdapterService.java @@ -38,45 +38,45 @@ import org.eclipse.jface.viewers.IStructuredSelection; public class ViewerAdapterService { - /** - * Returns the content provider for the given element or - * <code>null</code> if none. - * - * @param element element to retrieve adapter for - * @return content provider or <code>null</code> - */ - public static IElementContentProvider getContentProvider(Object element) { - return (IElementContentProvider)getAdapter(element, IElementContentProvider.class); - } + /** + * Returns the content provider for the given element or + * <code>null</code> if none. + * + * @param element element to retrieve adapter for + * @return content provider or <code>null</code> + */ + public static IElementContentProvider getContentProvider(Object element) { + return (IElementContentProvider)getAdapter(element, IElementContentProvider.class); + } - /** - * Returns the label provider for the given element or - * <code>null</code> if none. - * - * @param element element to retrieve adapter for - * @return label provider or <code>null</code> - */ - public static IElementLabelProvider getLabelProvider(Object element) { - IElementLabelProvider lp = (IElementLabelProvider)getAdapter(element, IElementLabelProvider.class); - if (lp == null && element instanceof String) { - // there are no adapters registered for Strings - return new DebugElementAdapterFactory().getAdapter(element, IElementLabelProvider.class); - } - return lp; - } + /** + * Returns the label provider for the given element or + * <code>null</code> if none. + * + * @param element element to retrieve adapter for + * @return label provider or <code>null</code> + */ + public static IElementLabelProvider getLabelProvider(Object element) { + IElementLabelProvider lp = (IElementLabelProvider)getAdapter(element, IElementLabelProvider.class); + if (lp == null && element instanceof String) { + // there are no adapters registered for Strings + return new DebugElementAdapterFactory().getAdapter(element, IElementLabelProvider.class); + } + return lp; + } - /** - * Returns the column presentation factory for the given element or <code>null</code>. - * - * @param element element to retrieve adapter for - * @return column presentation factory of <code>null</code> - */ - public static IColumnPresentationFactory getColumnPresentationFactory(Object element) { - return (IColumnPresentationFactory)getAdapter(element, IColumnPresentationFactory.class); - } + /** + * Returns the column presentation factory for the given element or <code>null</code>. + * + * @param element element to retrieve adapter for + * @return column presentation factory of <code>null</code> + */ + public static IColumnPresentationFactory getColumnPresentationFactory(Object element) { + return (IColumnPresentationFactory)getAdapter(element, IColumnPresentationFactory.class); + } /** - * Returns the model proxy factory for the given element or + * Returns the model proxy factory for the given element or * <code>null</code> if none. * * @param element element to retrieve adapter for @@ -87,15 +87,15 @@ public class ViewerAdapterService { } /** - * Returns the model proxy factory v.2 for the given element or - * <code>null</code> if none. - * - * @param element element to retrieve adapter for - * @return model proxy factory or <code>null</code> - */ - public static IModelProxyFactory2 getModelProxyFactory2(Object element) { - return (IModelProxyFactory2)getAdapter(element, IModelProxyFactory2.class); - } + * Returns the model proxy factory v.2 for the given element or + * <code>null</code> if none. + * + * @param element element to retrieve adapter for + * @return model proxy factory or <code>null</code> + */ + public static IModelProxyFactory2 getModelProxyFactory2(Object element) { + return (IModelProxyFactory2)getAdapter(element, IModelProxyFactory2.class); + } /** * Returns the memento provider for the given element or @@ -108,15 +108,15 @@ public class ViewerAdapterService { return (IElementMementoProvider)getAdapter(element, IElementMementoProvider.class); } - /** - * Returns the element editor for the given element or <code>null</code>. - * - * @param element element to retrieve adapter for - * @return element editor or <code>null</code> - */ - public static IElementEditor getElementEditor(Object element) { - return (IElementEditor)getAdapter(element, IElementEditor.class); - } + /** + * Returns the element editor for the given element or <code>null</code>. + * + * @param element element to retrieve adapter for + * @return element editor or <code>null</code> + */ + public static IElementEditor getElementEditor(Object element) { + return (IElementEditor)getAdapter(element, IElementEditor.class); + } /** * Creates and returns the selection policy associated with the given selection @@ -138,16 +138,16 @@ public class ViewerAdapterService { return null; } - /** - * Returns the viewer input provider for the given element or - * <code>null</code> if none. - * - * @param element element to retrieve adapter for - * @return viewer input provider or <code>null</code> - */ - public static IViewerInputProvider getInputProvider(Object element) { - return (IViewerInputProvider)getAdapter(element, IViewerInputProvider.class); - } + /** + * Returns the viewer input provider for the given element or + * <code>null</code> if none. + * + * @param element element to retrieve adapter for + * @return viewer input provider or <code>null</code> + */ + public static IViewerInputProvider getInputProvider(Object element) { + return (IViewerInputProvider)getAdapter(element, IViewerInputProvider.class); + } /** * Returns an adapter of the specified type for the given object or <code>null</code> @@ -158,6 +158,6 @@ public class ViewerAdapterService { * @return adapter or <code>null</code> */ private static Object getAdapter(Object element, Class<?> type) { - return DebugPlugin.getAdapter(element, type); + return DebugPlugin.getAdapter(element, type); } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ViewerInputUpdate.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ViewerInputUpdate.java index 77ac587fd..60336ac97 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ViewerInputUpdate.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ViewerInputUpdate.java @@ -33,90 +33,90 @@ import org.eclipse.ui.progress.WorkbenchJob; */ public class ViewerInputUpdate extends Request implements IViewerInputUpdate { - /** - * Presentation context - */ - private IPresentationContext fContext; - - /** - * New viewer input - */ - private Object fSource; - - /** - * Whether this update is done - */ - private boolean fDone; - - /** - * Viewer input to use - */ - private Object fInputElement; - - /** - * Viewer input at the time the request was made - */ - private Object fViewerInput; - - /** - * Client making request - */ - private IViewerInputRequestor fRequestor; - - /** - * When <code>done()</code> is called, the viewer must be informed that the update is complete in the UI thread. - */ - protected WorkbenchJob fViewerInputUpdateJob = new WorkbenchJob("Asynchronous viewer input update") { //$NON-NLS-1$ - @Override + /** + * Presentation context + */ + private IPresentationContext fContext; + + /** + * New viewer input + */ + private Object fSource; + + /** + * Whether this update is done + */ + private boolean fDone; + + /** + * Viewer input to use + */ + private Object fInputElement; + + /** + * Viewer input at the time the request was made + */ + private Object fViewerInput; + + /** + * Client making request + */ + private IViewerInputRequestor fRequestor; + + /** + * When <code>done()</code> is called, the viewer must be informed that the update is complete in the UI thread. + */ + protected WorkbenchJob fViewerInputUpdateJob = new WorkbenchJob("Asynchronous viewer input update") { //$NON-NLS-1$ + @Override public IStatus runInUIThread(IProgressMonitor monitor) { - if (ViewerInputUpdate.this.isCanceled()){ - return Status.CANCEL_STATUS; - } - fRequestor.viewerInputComplete(ViewerInputUpdate.this); - return Status.OK_STATUS; - } - }; - - /** - * Constructs a viewer input update request. - * - * @param context presentation context - * @param viewerInput viewer input at the time the request was made - * @param requestor client making the request - * @param source source from which to derive a viewer input - */ - public ViewerInputUpdate(IPresentationContext context, Object viewerInput, IViewerInputRequestor requestor, Object source){ - fContext = context; - fSource = source; - fRequestor = requestor; - fViewerInputUpdateJob.setSystem(true); - fViewerInput = viewerInput; - } + if (ViewerInputUpdate.this.isCanceled()){ + return Status.CANCEL_STATUS; + } + fRequestor.viewerInputComplete(ViewerInputUpdate.this); + return Status.OK_STATUS; + } + }; + + /** + * Constructs a viewer input update request. + * + * @param context presentation context + * @param viewerInput viewer input at the time the request was made + * @param requestor client making the request + * @param source source from which to derive a viewer input + */ + public ViewerInputUpdate(IPresentationContext context, Object viewerInput, IViewerInputRequestor requestor, Object source){ + fContext = context; + fSource = source; + fRequestor = requestor; + fViewerInputUpdateJob.setSystem(true); + fViewerInput = viewerInput; + } @Override public IPresentationContext getPresentationContext() { return fContext; } - @Override + @Override public final void done() { - synchronized (this) { - if (isDone()) { - return; - } - fDone = true; + synchronized (this) { + if (isDone()) { + return; + } + fDone = true; } - fViewerInputUpdateJob.schedule(); + fViewerInputUpdateJob.schedule(); } - /** - * Returns whether this request is done yet. - * - * @return whether this request is done yet - */ - protected synchronized boolean isDone() { - return fDone; - } + /** + * Returns whether this request is done yet. + * + * @return whether this request is done yet + */ + protected synchronized boolean isDone() { + return fDone; + } @Override public Object getElement() { diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ViewerStateTracker.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ViewerStateTracker.java index 4fb884148..4ddb63f31 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ViewerStateTracker.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ViewerStateTracker.java @@ -77,208 +77,208 @@ import org.eclipse.ui.XMLMemento; */ class ViewerStateTracker { - // State update type constants used in notifying listeners - static final int STATE_SAVE_SEQUENCE_BEGINS = 4; - static final int STATE_SAVE_SEQUENCE_COMPLETE = 5; - static final int STATE_RESTORE_SEQUENCE_BEGINS = 6; - static final int STATE_RESTORE_SEQUENCE_COMPLETE = 7; - - /** - * Dummy marker element used in the state delta. The marker indicates that a - * given element in the pending state delta has been removed. It replaces - * the original element so that it may optionally be garbage collected. - */ - private final static String ELEMENT_REMOVED = "ELEMENT_REMOVED"; //$NON-NLS-1$ - - /** - * Collector of memento encoding requests. - */ - interface IElementMementoCollector { - - /** - * Adds the request to this manager. - * - * @param request to add - */ - void addRequest(ElementMementoRequest request); - - /** - * Notification the request is complete. - * - * @param request that was completed - */ - void requestComplete(ElementMementoRequest request); - - /** - * Process the queued requests. Accepts no more new requests. - */ - void processReqeusts(); - - /** - * Cancels the requests in progress. - */ - void cancel(); - } - - /** - * LRU cache for viewer states - */ + // State update type constants used in notifying listeners + static final int STATE_SAVE_SEQUENCE_BEGINS = 4; + static final int STATE_SAVE_SEQUENCE_COMPLETE = 5; + static final int STATE_RESTORE_SEQUENCE_BEGINS = 6; + static final int STATE_RESTORE_SEQUENCE_COMPLETE = 7; + + /** + * Dummy marker element used in the state delta. The marker indicates that a + * given element in the pending state delta has been removed. It replaces + * the original element so that it may optionally be garbage collected. + */ + private final static String ELEMENT_REMOVED = "ELEMENT_REMOVED"; //$NON-NLS-1$ + + /** + * Collector of memento encoding requests. + */ + interface IElementMementoCollector { + + /** + * Adds the request to this manager. + * + * @param request to add + */ + void addRequest(ElementMementoRequest request); + + /** + * Notification the request is complete. + * + * @param request that was completed + */ + void requestComplete(ElementMementoRequest request); + + /** + * Process the queued requests. Accepts no more new requests. + */ + void processReqeusts(); + + /** + * Cancels the requests in progress. + */ + void cancel(); + } + + /** + * LRU cache for viewer states + */ class LRUMap<K, V> extends LinkedHashMap<K, V> { - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; - private int fMaxSize; + private int fMaxSize; - LRUMap(int maxSize) { - super(); - fMaxSize = maxSize; - } + LRUMap(int maxSize) { + super(); + fMaxSize = maxSize; + } - @Override + @Override protected boolean removeEldestEntry(Entry<K, V> eldest) { - return size() > fMaxSize; - } - } - - /** - * Content provider that is using this state tracker. - */ - private TreeModelContentProvider fContentProvider; - - ViewerStateTracker(TreeModelContentProvider contentProvider) { - fContentProvider = contentProvider; - } - - /** - * Map of viewer states keyed by viewer input mementos - */ + return size() > fMaxSize; + } + } + + /** + * Content provider that is using this state tracker. + */ + private TreeModelContentProvider fContentProvider; + + ViewerStateTracker(TreeModelContentProvider contentProvider) { + fContentProvider = contentProvider; + } + + /** + * Map of viewer states keyed by viewer input mementos + */ private Map<String, ModelDelta> fViewerStates = new LRUMap<>(20); - /** - * Pending viewer state to be restored - */ - private ModelDelta fPendingState = null; + /** + * Pending viewer state to be restored + */ + private ModelDelta fPendingState = null; - /** - * Flag indicating that the content provider is performing - * state restore operations. - */ - private boolean fInStateRestore = false; + /** + * Flag indicating that the content provider is performing + * state restore operations. + */ + private boolean fInStateRestore = false; - /** - * State update listeners - */ + /** + * State update listeners + */ private ListenerList<IStateUpdateListener> fStateUpdateListeners = new ListenerList<>(); - /** - * Postpone restoring REVEAL element until the current updates are complete. - * See bug 324100 - */ - protected PendingRevealDelta fPendingSetTopItem = null; + /** + * Postpone restoring REVEAL element until the current updates are complete. + * See bug 324100 + */ + protected PendingRevealDelta fPendingSetTopItem = null; - /** - * Set of IMementoManager's that are currently saving state - */ + /** + * Set of IMementoManager's that are currently saving state + */ private Set<IElementMementoCollector> fPendingStateSaves = new HashSet<>(); - /** - * Used to queue a viewer input for state restore - */ - private Object fQueuedRestore = null; + /** + * Used to queue a viewer input for state restore + */ + private Object fQueuedRestore = null; - /** - * Object used to key compare requests in map. - */ - private static class CompareRequestKey { + /** + * Object used to key compare requests in map. + */ + private static class CompareRequestKey { - CompareRequestKey(TreePath path, IModelDelta delta) { - fPath = path; - fDelta = delta; - } + CompareRequestKey(TreePath path, IModelDelta delta) { + fPath = path; + fDelta = delta; + } - TreePath fPath; - IModelDelta fDelta; + TreePath fPath; + IModelDelta fDelta; - @Override + @Override public boolean equals(Object obj) { - if (obj instanceof CompareRequestKey) { - CompareRequestKey key = (CompareRequestKey) obj; - return key.fDelta.equals(fDelta) && key.fPath.equals(fPath); - } - return false; - } - - @Override + if (obj instanceof CompareRequestKey) { + CompareRequestKey key = (CompareRequestKey) obj; + return key.fDelta.equals(fDelta) && key.fPath.equals(fPath); + } + return false; + } + + @Override public int hashCode() { - return fDelta.hashCode() + fPath.hashCode(); - } - } + return fDelta.hashCode() + fPath.hashCode(); + } + } - /** - * Compare requests that are currently running. - */ + /** + * Compare requests that are currently running. + */ private Map<CompareRequestKey, ElementCompareRequest> fCompareRequestsInProgress = new LinkedHashMap<>(); - /** - * Cancels pending updates. - */ - void dispose() { - Assert.isTrue( fContentProvider.getViewer().getDisplay().getThread() == Thread.currentThread() ); + /** + * Cancels pending updates. + */ + void dispose() { + Assert.isTrue( fContentProvider.getViewer().getDisplay().getThread() == Thread.currentThread() ); for (IElementMementoCollector emc : fPendingStateSaves) { emc.cancel(); - } - fStateUpdateListeners.clear(); + } + fStateUpdateListeners.clear(); for (ElementCompareRequest ecr : fCompareRequestsInProgress.values()) { ecr.cancel(); - } - fCompareRequestsInProgress.clear(); - - if (fPendingSetTopItem != null) { - fPendingSetTopItem.dispose(); - } - } - - /** - * Restores viewer state for the given input - * - * @param input - * viewer input - */ - private void startRestoreViewerState(final Object input) { - Assert.isTrue( fContentProvider.getViewer().getDisplay().getThread() == Thread.currentThread() ); - - fPendingState = null; - final IElementMementoProvider defaultProvider = ViewerAdapterService.getMementoProvider(input); - if (defaultProvider != null) { - // build a model delta representing expansion and selection state - final ModelDelta delta = new ModelDelta(input, IModelDelta.NO_CHANGE); - final XMLMemento inputMemento = XMLMemento.createWriteRoot("VIEWER_INPUT_MEMENTO"); //$NON-NLS-1$ - final IElementMementoCollector manager = new IElementMementoCollector() { - - private IElementMementoRequest fRequest; - - @Override + } + fCompareRequestsInProgress.clear(); + + if (fPendingSetTopItem != null) { + fPendingSetTopItem.dispose(); + } + } + + /** + * Restores viewer state for the given input + * + * @param input + * viewer input + */ + private void startRestoreViewerState(final Object input) { + Assert.isTrue( fContentProvider.getViewer().getDisplay().getThread() == Thread.currentThread() ); + + fPendingState = null; + final IElementMementoProvider defaultProvider = ViewerAdapterService.getMementoProvider(input); + if (defaultProvider != null) { + // build a model delta representing expansion and selection state + final ModelDelta delta = new ModelDelta(input, IModelDelta.NO_CHANGE); + final XMLMemento inputMemento = XMLMemento.createWriteRoot("VIEWER_INPUT_MEMENTO"); //$NON-NLS-1$ + final IElementMementoCollector manager = new IElementMementoCollector() { + + private IElementMementoRequest fRequest; + + @Override public void requestComplete(ElementMementoRequest request) { - if (fContentProvider.isDisposed()) { + if (fContentProvider.isDisposed()) { return; } - notifyStateUpdate(input, TreeModelContentProvider.UPDATE_COMPLETE, request); - - if (!request.isCanceled() && (request.getStatus() == null || request.getStatus().isOK())) { - XMLMemento keyMemento = (XMLMemento) delta.getElement(); - StringWriter writer = new StringWriter(); - try { - keyMemento.save(writer); - final String keyMementoString = writer.toString(); - ModelDelta stateDelta = fViewerStates.get(keyMementoString); - if (stateDelta != null) { - if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { - DebugUIPlugin.trace("STATE RESTORE INPUT COMARE ENDED : " + fRequest + " - MATCHING STATE FOUND"); //$NON-NLS-1$ //$NON-NLS-2$ - } - - // Process start of restore in an async cycle because we may still be inside inputChanged() - // call. I.e. the "input.equals(fContentProvider.getViewer().getInput())" test may fail. + notifyStateUpdate(input, TreeModelContentProvider.UPDATE_COMPLETE, request); + + if (!request.isCanceled() && (request.getStatus() == null || request.getStatus().isOK())) { + XMLMemento keyMemento = (XMLMemento) delta.getElement(); + StringWriter writer = new StringWriter(); + try { + keyMemento.save(writer); + final String keyMementoString = writer.toString(); + ModelDelta stateDelta = fViewerStates.get(keyMementoString); + if (stateDelta != null) { + if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { + DebugUIPlugin.trace("STATE RESTORE INPUT COMARE ENDED : " + fRequest + " - MATCHING STATE FOUND"); //$NON-NLS-1$ //$NON-NLS-2$ + } + + // Process start of restore in an async cycle because we may still be inside inputChanged() + // call. I.e. the "input.equals(fContentProvider.getViewer().getInput())" test may fail. fContentProvider.getViewer().getDisplay().asyncExec(() -> { if (!fContentProvider.isDisposed() && input.equals(fContentProvider.getViewer().getInput())) { @@ -303,85 +303,85 @@ class ViewerStateTracker { } } }); - } else { - if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { - DebugUIPlugin.trace("STATE RESTORE INPUT COMARE ENDED : " + fRequest + " - NO MATCHING STATE"); //$NON-NLS-1$ //$NON-NLS-2$ - } - } - } catch (IOException e) { - DebugUIPlugin.log(e); - } - } else { - notifyStateUpdate(input, STATE_RESTORE_SEQUENCE_BEGINS, null); - } - } - - @Override + } else { + if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { + DebugUIPlugin.trace("STATE RESTORE INPUT COMARE ENDED : " + fRequest + " - NO MATCHING STATE"); //$NON-NLS-1$ //$NON-NLS-2$ + } + } + } catch (IOException e) { + DebugUIPlugin.log(e); + } + } else { + notifyStateUpdate(input, STATE_RESTORE_SEQUENCE_BEGINS, null); + } + } + + @Override public void processReqeusts() { - notifyStateUpdate(input, STATE_RESTORE_SEQUENCE_BEGINS, null); - if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { - DebugUIPlugin.trace("STATE RESTORE INPUT COMARE BEGIN : " + fRequest); //$NON-NLS-1$ - } - notifyStateUpdate(input, TreeModelContentProvider.UPDATE_BEGINS, fRequest); - defaultProvider.encodeElements(new IElementMementoRequest[] { fRequest }); - } - - @Override + notifyStateUpdate(input, STATE_RESTORE_SEQUENCE_BEGINS, null); + if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { + DebugUIPlugin.trace("STATE RESTORE INPUT COMARE BEGIN : " + fRequest); //$NON-NLS-1$ + } + notifyStateUpdate(input, TreeModelContentProvider.UPDATE_BEGINS, fRequest); + defaultProvider.encodeElements(new IElementMementoRequest[] { fRequest }); + } + + @Override public void addRequest(ElementMementoRequest req) { - fRequest = req; - } + fRequest = req; + } - @Override + @Override public void cancel() { - // not used - } - - }; - manager.addRequest( - new ElementMementoRequest(fContentProvider, fContentProvider.getViewer().getInput(), manager, - delta.getElement(), fContentProvider.getViewerTreePath(delta), inputMemento, delta)); - manager.processReqeusts(); - } else { - if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { - DebugUIPlugin.trace("STATE RESTORE: No input memento provider"); //$NON-NLS-1$ - } - } - } - - /** - * Appends the state of the given subtree to the current pending delta. - * @param path Path to subtree to restore. - */ - void appendToPendingStateDelta(final TreePath path) { - if (fContentProvider.getViewer() == null) + // not used + } + + }; + manager.addRequest( + new ElementMementoRequest(fContentProvider, fContentProvider.getViewer().getInput(), manager, + delta.getElement(), fContentProvider.getViewerTreePath(delta), inputMemento, delta)); + manager.processReqeusts(); + } else { + if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { + DebugUIPlugin.trace("STATE RESTORE: No input memento provider"); //$NON-NLS-1$ + } + } + } + + /** + * Appends the state of the given subtree to the current pending delta. + * @param path Path to subtree to restore. + */ + void appendToPendingStateDelta(final TreePath path) { + if (fContentProvider.getViewer() == null) { return; // Not initialized yet. } - if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { - DebugUIPlugin.trace("STATE APPEND BEGIN: " + path.getLastSegment()); //$NON-NLS-1$ - } - - // build a model delta representing expansion and selection state - final ModelDelta appendDeltaRoot = new ModelDelta(fContentProvider.getViewer().getInput(), IModelDelta.NO_CHANGE); - ModelDelta delta = appendDeltaRoot; - for (int i = 0; i < path.getSegmentCount(); i++) { - delta = delta.addNode(path.getSegment(i), IModelDelta.NO_CHANGE); - } - - if (!fContentProvider.getViewer().saveElementState(path, delta, IModelDelta.COLLAPSE | IModelDelta.EXPAND | IModelDelta.SELECT)) { - // Path to save the state was not found or there was no - // (expansion) state to save! Abort. - if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { - DebugUIPlugin.trace("STATE APPEND CANCEL: Element " + path.getLastSegment() + " not found."); //$NON-NLS-1$ //$NON-NLS-2$ - } - return; - } - - // Append a marker CONTENT flag to all the delta nodes that contain the - // EXPAND node. These - // markers are used by the restore logic to know when a delta node can - // be removed. + if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { + DebugUIPlugin.trace("STATE APPEND BEGIN: " + path.getLastSegment()); //$NON-NLS-1$ + } + + // build a model delta representing expansion and selection state + final ModelDelta appendDeltaRoot = new ModelDelta(fContentProvider.getViewer().getInput(), IModelDelta.NO_CHANGE); + ModelDelta delta = appendDeltaRoot; + for (int i = 0; i < path.getSegmentCount(); i++) { + delta = delta.addNode(path.getSegment(i), IModelDelta.NO_CHANGE); + } + + if (!fContentProvider.getViewer().saveElementState(path, delta, IModelDelta.COLLAPSE | IModelDelta.EXPAND | IModelDelta.SELECT)) { + // Path to save the state was not found or there was no + // (expansion) state to save! Abort. + if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { + DebugUIPlugin.trace("STATE APPEND CANCEL: Element " + path.getLastSegment() + " not found."); //$NON-NLS-1$ //$NON-NLS-2$ + } + return; + } + + // Append a marker CONTENT flag to all the delta nodes that contain the + // EXPAND node. These + // markers are used by the restore logic to know when a delta node can + // be removed. delta.accept((d, depth) -> { if ((d.getFlags() & IModelDelta.EXPAND) != 0) { ((ModelDelta) d).setFlags(d.getFlags() | IModelDelta.CONTENT); @@ -389,21 +389,21 @@ class ViewerStateTracker { return true; }); - if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { - DebugUIPlugin.trace("\tAPPEND DELTA: " + appendDeltaRoot); //$NON-NLS-1$ - } - - if (fPendingState != null) { - // If the restore for the current input was never completed, - // preserve - // that restore along with the restore that was completed. - if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { - DebugUIPlugin.trace("\tAPPEND OUTSTANDING RESTORE: " + fPendingState); //$NON-NLS-1$ - } - - // If the append delta is generated for a sub-tree, copy the pending delta - // attributes into the pending delta. - if (path.getSegmentCount() > 0) { + if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { + DebugUIPlugin.trace("\tAPPEND DELTA: " + appendDeltaRoot); //$NON-NLS-1$ + } + + if (fPendingState != null) { + // If the restore for the current input was never completed, + // preserve + // that restore along with the restore that was completed. + if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { + DebugUIPlugin.trace("\tAPPEND OUTSTANDING RESTORE: " + fPendingState); //$NON-NLS-1$ + } + + // If the append delta is generated for a sub-tree, copy the pending delta + // attributes into the pending delta. + if (path.getSegmentCount() > 0) { fPendingState.accept((pendingDeltaNode, depth) -> { TreePath pendingDeltaPath = fContentProvider.getViewerTreePath(pendingDeltaNode); if (path.startsWith(pendingDeltaPath, null)) { @@ -415,9 +415,9 @@ class ViewerStateTracker { } return false; }); - } + } - // Copy the pending state into the new appended state. + // Copy the pending state into the new appended state. fPendingState.accept((pendingDeltaNode, depth) -> { // Skip the top element if (pendingDeltaNode.getParentDelta() == null) { @@ -455,80 +455,80 @@ class ViewerStateTracker { return pendingDeltaNode.getChildCount() > 0; } }); - } - - if (appendDeltaRoot.getChildDeltas().length > 0) { - // Set the new delta root as the pending state delta. - if (fPendingState == null) { - notifyStateUpdate(appendDeltaRoot.getElement(), STATE_RESTORE_SEQUENCE_BEGINS, null); - } - fPendingState = appendDeltaRoot; - if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { - DebugUIPlugin.trace("STATE APPEND COMPLETE " + fPendingState); //$NON-NLS-1$ - } - } else { - if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { - DebugUIPlugin.trace("STATE APPEND CANCELED: No Data"); //$NON-NLS-1$ - } - } - } - - /** - * Saves the viewer's state for the previous input. * @param oldInput - * @param input the {@link ModelDelta} input - */ - protected void saveViewerState(Object input) { + } + + if (appendDeltaRoot.getChildDeltas().length > 0) { + // Set the new delta root as the pending state delta. + if (fPendingState == null) { + notifyStateUpdate(appendDeltaRoot.getElement(), STATE_RESTORE_SEQUENCE_BEGINS, null); + } + fPendingState = appendDeltaRoot; + if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { + DebugUIPlugin.trace("STATE APPEND COMPLETE " + fPendingState); //$NON-NLS-1$ + } + } else { + if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { + DebugUIPlugin.trace("STATE APPEND CANCELED: No Data"); //$NON-NLS-1$ + } + } + } + + /** + * Saves the viewer's state for the previous input. * @param oldInput + * @param input the {@link ModelDelta} input + */ + protected void saveViewerState(Object input) { for (Iterator<ElementCompareRequest> itr = fCompareRequestsInProgress.values().iterator(); itr.hasNext();) { - itr.next().cancel(); - itr.remove(); - } - - IElementMementoProvider stateProvider = ViewerAdapterService.getMementoProvider(input); - if (stateProvider != null) { - if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { - DebugUIPlugin.trace("STATE SAVE BEGIN: " + input); //$NON-NLS-1$ - } - - // build a model delta representing expansion and selection state - final ModelDelta saveDeltaRoot = new ModelDelta(input, IModelDelta.NO_CHANGE); - buildViewerState(saveDeltaRoot); - if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { - DebugUIPlugin.trace("\tSAVE DELTA FROM VIEW:\n" + saveDeltaRoot); //$NON-NLS-1$ - } - - // check if pending restore reveal - if (fPendingSetTopItem != null) { - // set back the pending reveal flag - ModelDelta revealDelta = fPendingSetTopItem.getDelta(); - revealDelta.setFlags(revealDelta.getFlags() | IModelDelta.REVEAL); - - fPendingSetTopItem.dispose(); - - ModelDelta saveDeltaNode = findSubDeltaParent(saveDeltaRoot, revealDelta); - if (saveDeltaNode != null) { - clearRevealFlag(saveDeltaRoot); - ModelDelta child = saveDeltaNode.getChildDelta(revealDelta.getElement(), revealDelta.getIndex()); - if (child != null) { - child.setFlags(child.getFlags() | IModelDelta.REVEAL); - } else { - // the node should be added if not found - saveDeltaNode.setChildCount(revealDelta.getParentDelta().getChildCount()); - copyIntoDelta(revealDelta, saveDeltaNode); - } - } else { - if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { - DebugUIPlugin.trace("\tSKIPPED: " + revealDelta.getElement()); //$NON-NLS-1$ - } - } - } - - if (fPendingState != null) { - // If the restore for the current input was never completed, - // preserve - // that restore along with the restore that was completed. - if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { - DebugUIPlugin.trace("\tSAVE OUTSTANDING RESTORE: " + fPendingState); //$NON-NLS-1$ - } + itr.next().cancel(); + itr.remove(); + } + + IElementMementoProvider stateProvider = ViewerAdapterService.getMementoProvider(input); + if (stateProvider != null) { + if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { + DebugUIPlugin.trace("STATE SAVE BEGIN: " + input); //$NON-NLS-1$ + } + + // build a model delta representing expansion and selection state + final ModelDelta saveDeltaRoot = new ModelDelta(input, IModelDelta.NO_CHANGE); + buildViewerState(saveDeltaRoot); + if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { + DebugUIPlugin.trace("\tSAVE DELTA FROM VIEW:\n" + saveDeltaRoot); //$NON-NLS-1$ + } + + // check if pending restore reveal + if (fPendingSetTopItem != null) { + // set back the pending reveal flag + ModelDelta revealDelta = fPendingSetTopItem.getDelta(); + revealDelta.setFlags(revealDelta.getFlags() | IModelDelta.REVEAL); + + fPendingSetTopItem.dispose(); + + ModelDelta saveDeltaNode = findSubDeltaParent(saveDeltaRoot, revealDelta); + if (saveDeltaNode != null) { + clearRevealFlag(saveDeltaRoot); + ModelDelta child = saveDeltaNode.getChildDelta(revealDelta.getElement(), revealDelta.getIndex()); + if (child != null) { + child.setFlags(child.getFlags() | IModelDelta.REVEAL); + } else { + // the node should be added if not found + saveDeltaNode.setChildCount(revealDelta.getParentDelta().getChildCount()); + copyIntoDelta(revealDelta, saveDeltaNode); + } + } else { + if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { + DebugUIPlugin.trace("\tSKIPPED: " + revealDelta.getElement()); //$NON-NLS-1$ + } + } + } + + if (fPendingState != null) { + // If the restore for the current input was never completed, + // preserve + // that restore along with the restore that was completed. + if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { + DebugUIPlugin.trace("\tSAVE OUTSTANDING RESTORE: " + fPendingState); //$NON-NLS-1$ + } IModelDeltaVisitor pendingStateVisitor = (pendingDeltaNode, depth) -> { // Ignore the top element. @@ -577,184 +577,184 @@ class ViewerStateTracker { return pendingDeltaNode.getChildCount() > 0; } }; - fPendingState.accept(pendingStateVisitor); - } - - if (saveDeltaRoot.getChildDeltas().length > 0) { - // encode delta with mementos in place of elements, in non-UI - // thread - encodeDelta(saveDeltaRoot, stateProvider); - } else { - if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { - DebugUIPlugin.trace("STATE SAVE CANCELED, NO DATA"); //$NON-NLS-1$ - } - } - } - } - - private void clearRevealFlag(ModelDelta saveRootDelta) { + fPendingState.accept(pendingStateVisitor); + } + + if (saveDeltaRoot.getChildDeltas().length > 0) { + // encode delta with mementos in place of elements, in non-UI + // thread + encodeDelta(saveDeltaRoot, stateProvider); + } else { + if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { + DebugUIPlugin.trace("STATE SAVE CANCELED, NO DATA"); //$NON-NLS-1$ + } + } + } + } + + private void clearRevealFlag(ModelDelta saveRootDelta) { IModelDeltaVisitor clearDeltaVisitor = (delta, depth) -> { if ((delta.getFlags() & IModelDelta.REVEAL) != 0) { ((ModelDelta) delta).setFlags(delta.getFlags() & ~IModelDelta.REVEAL); } return true; }; - saveRootDelta.accept(clearDeltaVisitor); - } + saveRootDelta.accept(clearDeltaVisitor); + } - private ModelDelta findSubDeltaParent(ModelDelta destinationDeltaRoot, IModelDelta subDelta) { - // Create a path of elements to the sub-delta. + private ModelDelta findSubDeltaParent(ModelDelta destinationDeltaRoot, IModelDelta subDelta) { + // Create a path of elements to the sub-delta. LinkedList<IModelDelta> deltaPath = new LinkedList<>(); - IModelDelta delta = subDelta; - while (delta.getParentDelta() != null) { - delta = delta.getParentDelta(); - deltaPath.addFirst(delta); - } - - // For each element in the path of the sub-delta, find the corresponding - // element in the destination delta + IModelDelta delta = subDelta; + while (delta.getParentDelta() != null) { + delta = delta.getParentDelta(); + deltaPath.addFirst(delta); + } + + // For each element in the path of the sub-delta, find the corresponding + // element in the destination delta Iterator<IModelDelta> itr = deltaPath.iterator(); - // Skip the root element - itr.next(); - ModelDelta saveDelta = destinationDeltaRoot; - while (saveDelta != null && itr.hasNext()) { - IModelDelta itrDelta = itr.next(); - saveDelta = saveDelta.getChildDelta(itrDelta.getElement(), itrDelta.getIndex()); - } - return saveDelta; - } - - private ModelDelta findDeltaForPath(ModelDelta root, TreePath path) { - ModelDelta delta = root; - for (int i = 0; i < path.getSegmentCount(); i++) { - delta = delta.getChildDelta(path.getSegment(i)); - if (delta == null) { - return null; - } - } - return delta; - } - - private boolean isDeltaInParent(IModelDelta delta, ModelDelta destParent) { - return destParent.getChildDelta(delta.getElement(), delta.getIndex()) != null; - } - - private void copyIntoDelta(IModelDelta delta, ModelDelta destParent) { - ModelDelta newDelta = destParent.addNode(delta.getElement(), delta.getIndex(), delta.getFlags(), delta - .getChildCount()); - for (int i = 0; i < delta.getChildDeltas().length; i++) { - copyIntoDelta(delta.getChildDeltas()[i], newDelta); - } - } - - /** - * Encodes delta elements into mementos using the given provider. - * @param rootDelta the {@link ModelDelta} to encode - * @param defaultProvider the default provider to use when processing the given delta - * - */ - protected void encodeDelta(final ModelDelta rootDelta, final IElementMementoProvider defaultProvider) { - final Object input = rootDelta.getElement(); - final XMLMemento inputMemento = XMLMemento.createWriteRoot("VIEWER_INPUT_MEMENTO"); //$NON-NLS-1$ - final XMLMemento childrenMemento = XMLMemento.createWriteRoot("CHILDREN_MEMENTO"); //$NON-NLS-1$ - final IElementMementoCollector manager = new IElementMementoCollector() { - - /** - * list of memento fRequests - */ + // Skip the root element + itr.next(); + ModelDelta saveDelta = destinationDeltaRoot; + while (saveDelta != null && itr.hasNext()) { + IModelDelta itrDelta = itr.next(); + saveDelta = saveDelta.getChildDelta(itrDelta.getElement(), itrDelta.getIndex()); + } + return saveDelta; + } + + private ModelDelta findDeltaForPath(ModelDelta root, TreePath path) { + ModelDelta delta = root; + for (int i = 0; i < path.getSegmentCount(); i++) { + delta = delta.getChildDelta(path.getSegment(i)); + if (delta == null) { + return null; + } + } + return delta; + } + + private boolean isDeltaInParent(IModelDelta delta, ModelDelta destParent) { + return destParent.getChildDelta(delta.getElement(), delta.getIndex()) != null; + } + + private void copyIntoDelta(IModelDelta delta, ModelDelta destParent) { + ModelDelta newDelta = destParent.addNode(delta.getElement(), delta.getIndex(), delta.getFlags(), delta + .getChildCount()); + for (int i = 0; i < delta.getChildDeltas().length; i++) { + copyIntoDelta(delta.getChildDeltas()[i], newDelta); + } + } + + /** + * Encodes delta elements into mementos using the given provider. + * @param rootDelta the {@link ModelDelta} to encode + * @param defaultProvider the default provider to use when processing the given delta + * + */ + protected void encodeDelta(final ModelDelta rootDelta, final IElementMementoProvider defaultProvider) { + final Object input = rootDelta.getElement(); + final XMLMemento inputMemento = XMLMemento.createWriteRoot("VIEWER_INPUT_MEMENTO"); //$NON-NLS-1$ + final XMLMemento childrenMemento = XMLMemento.createWriteRoot("CHILDREN_MEMENTO"); //$NON-NLS-1$ + final IElementMementoCollector manager = new IElementMementoCollector() { + + /** + * list of memento fRequests + */ private List<IElementMementoRequest> fRequests = new ArrayList<>(); - /** - * Flag indicating whether the encoding of delta has been canceled. - */ - private boolean fCanceled = false; + /** + * Flag indicating whether the encoding of delta has been canceled. + */ + private boolean fCanceled = false; - @Override + @Override public void requestComplete(ElementMementoRequest request) { - Assert.isTrue( fContentProvider.getViewer().getDisplay().getThread() == Thread.currentThread() ); - - notifyStateUpdate(input, TreeModelContentProvider.UPDATE_COMPLETE, request); - if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { - DebugUIPlugin.trace("\tSTATE END: " + request); //$NON-NLS-1$ - } - - if (!request.isCanceled() && (request.getStatus() == null || request.getStatus().isOK())) { - boolean requestsComplted = false; - if (!fCanceled) { - fRequests.remove(request); - requestsComplted = fRequests.isEmpty(); - } - if (requestsComplted) { - XMLMemento keyMemento = (XMLMemento) rootDelta.getElement(); - StringWriter writer = new StringWriter(); - try { - keyMemento.save(writer); - fViewerStates.put(writer.toString(), rootDelta); - } catch (IOException e) { - DebugUIPlugin.log(e); - } - if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { - DebugUIPlugin.trace("STATE SAVE COMPLETED: " + rootDelta); //$NON-NLS-1$ - } - stateSaveComplete(input, this); - } - } else { - cancel(); - } - } - - @Override + Assert.isTrue( fContentProvider.getViewer().getDisplay().getThread() == Thread.currentThread() ); + + notifyStateUpdate(input, TreeModelContentProvider.UPDATE_COMPLETE, request); + if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { + DebugUIPlugin.trace("\tSTATE END: " + request); //$NON-NLS-1$ + } + + if (!request.isCanceled() && (request.getStatus() == null || request.getStatus().isOK())) { + boolean requestsComplted = false; + if (!fCanceled) { + fRequests.remove(request); + requestsComplted = fRequests.isEmpty(); + } + if (requestsComplted) { + XMLMemento keyMemento = (XMLMemento) rootDelta.getElement(); + StringWriter writer = new StringWriter(); + try { + keyMemento.save(writer); + fViewerStates.put(writer.toString(), rootDelta); + } catch (IOException e) { + DebugUIPlugin.log(e); + } + if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { + DebugUIPlugin.trace("STATE SAVE COMPLETED: " + rootDelta); //$NON-NLS-1$ + } + stateSaveComplete(input, this); + } + } else { + cancel(); + } + } + + @Override public void cancel() { - Assert.isTrue( fContentProvider.getViewer().getDisplay().getThread() == Thread.currentThread() ); + Assert.isTrue( fContentProvider.getViewer().getDisplay().getThread() == Thread.currentThread() ); - if (fCanceled) { - return; - } + if (fCanceled) { + return; + } - fCanceled = true; + fCanceled = true; for (IElementMementoRequest req : fRequests) { - req.cancel(); - } - fRequests.clear(); - if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { - DebugUIPlugin.trace("STATE SAVE ABORTED: " + rootDelta.getElement()); //$NON-NLS-1$ - } - stateSaveComplete(input, this); - } - - @Override + req.cancel(); + } + fRequests.clear(); + if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { + DebugUIPlugin.trace("STATE SAVE ABORTED: " + rootDelta.getElement()); //$NON-NLS-1$ + } + stateSaveComplete(input, this); + } + + @Override public void processReqeusts() { - Assert.isTrue( fContentProvider.getViewer().getDisplay().getThread() == Thread.currentThread() ); + Assert.isTrue( fContentProvider.getViewer().getDisplay().getThread() == Thread.currentThread() ); Map<IElementMementoProvider, List<IElementMementoRequest>> providers = new HashMap<>(); for (IElementMementoRequest request : fRequests) { - notifyStateUpdate(input, TreeModelContentProvider.UPDATE_BEGINS, request); - IElementMementoProvider provider = ViewerAdapterService.getMementoProvider(request.getElement()); - if (provider == null) { - provider = defaultProvider; - } + notifyStateUpdate(input, TreeModelContentProvider.UPDATE_BEGINS, request); + IElementMementoProvider provider = ViewerAdapterService.getMementoProvider(request.getElement()); + if (provider == null) { + provider = defaultProvider; + } List<IElementMementoRequest> reqs = providers.get(provider); - if (reqs == null) { + if (reqs == null) { reqs = new ArrayList<>(); - providers.put(provider, reqs); - } - reqs.add(request); - } + providers.put(provider, reqs); + } + reqs.add(request); + } for (Entry<IElementMementoProvider, List<IElementMementoRequest>> entry : providers.entrySet()) { - IElementMementoProvider provider = entry.getKey(); + IElementMementoProvider provider = entry.getKey(); List<IElementMementoRequest> reqs = entry.getValue(); provider.encodeElements(reqs.toArray(new IElementMementoRequest[reqs.size()])); - } - } + } + } - @Override + @Override public void addRequest(ElementMementoRequest request) { - Assert.isTrue( fContentProvider.getViewer().getDisplay().getThread() == Thread.currentThread() ); + Assert.isTrue( fContentProvider.getViewer().getDisplay().getThread() == Thread.currentThread() ); - fRequests.add(request); - } + fRequests.add(request); + } - }; + }; IModelDeltaVisitor visitor = (delta, depth) -> { // Add the CONTENT flag to all nodes with an EXPAND flag. // During restoring, this flag is used as a marker indicating @@ -778,94 +778,94 @@ class ViewerStateTracker { } return true; }; - rootDelta.accept(visitor); - stateSaveStarted(input, manager); - manager.processReqeusts(); - } - - /** - * Called when a state save is starting. - * @param input the {@link ModelDelta} input - * @param manager the manager to notify - */ - private void stateSaveStarted(Object input, IElementMementoCollector manager) { - Assert.isTrue( fContentProvider.getViewer().getDisplay().getThread() == Thread.currentThread() ); - - notifyStateUpdate(input, STATE_SAVE_SEQUENCE_BEGINS, null); - fPendingStateSaves.add(manager); - } - - /** - * Called when a state save is complete. - * @param input the {@link ModelDelta} input - * @param manager the manager to notify - */ - private void stateSaveComplete(Object input, IElementMementoCollector manager) { - Assert.isTrue( fContentProvider.getViewer().getDisplay().getThread() == Thread.currentThread() ); - - notifyStateUpdate(input, STATE_SAVE_SEQUENCE_COMPLETE, null); - fPendingStateSaves.remove(manager); - if (fQueuedRestore != null) { - Object temp = fQueuedRestore; - fQueuedRestore = null; - restoreViewerState(temp); - } - } - - /** - * Returns whether any state saving is in progress. - * - * @return whether any state saving is in progress - */ - private boolean isSavingState() { - Assert.isTrue( fContentProvider.getViewer().getDisplay().getThread() == Thread.currentThread() ); - - return !fPendingStateSaves.isEmpty(); - } - - /** - * Restores the viewer state unless a save is taking place. If a save is - * taking place, the restore is queued. - * - * @param input - * viewer input - */ - protected void restoreViewerState(final Object input) { - Assert.isTrue( fContentProvider.getViewer().getDisplay().getThread() == Thread.currentThread() ); - - fPendingState = null; - if (isSavingState()) { - fQueuedRestore = input; - } else { - startRestoreViewerState(input); - } - } - - - public void cancelRestore(final TreePath path, final int flags) { - if (fInStateRestore) { - // If we are currently processing pending state already, ignore - // cancelRestore requests. These requests may be triggered in the viewer - // by changes to the tree state (Bug 295585). - return; - } - - if ((flags & IModelDelta.REVEAL) != 0 && fPendingSetTopItem != null) { - fPendingSetTopItem.dispose(); - return; - } - - // Nothing else to do - if (fPendingState == null) { - return; - } - - if ((flags & (IModelDelta.SELECT | IModelDelta.REVEAL)) != 0) { - // If we're canceling reveal and this is waiting for updates to complete - // then just cancel it and return - - // If we're canceling select or reveal, cancel it for all of pending deltas - final int mask = flags & (IModelDelta.SELECT | IModelDelta.REVEAL); + rootDelta.accept(visitor); + stateSaveStarted(input, manager); + manager.processReqeusts(); + } + + /** + * Called when a state save is starting. + * @param input the {@link ModelDelta} input + * @param manager the manager to notify + */ + private void stateSaveStarted(Object input, IElementMementoCollector manager) { + Assert.isTrue( fContentProvider.getViewer().getDisplay().getThread() == Thread.currentThread() ); + + notifyStateUpdate(input, STATE_SAVE_SEQUENCE_BEGINS, null); + fPendingStateSaves.add(manager); + } + + /** + * Called when a state save is complete. + * @param input the {@link ModelDelta} input + * @param manager the manager to notify + */ + private void stateSaveComplete(Object input, IElementMementoCollector manager) { + Assert.isTrue( fContentProvider.getViewer().getDisplay().getThread() == Thread.currentThread() ); + + notifyStateUpdate(input, STATE_SAVE_SEQUENCE_COMPLETE, null); + fPendingStateSaves.remove(manager); + if (fQueuedRestore != null) { + Object temp = fQueuedRestore; + fQueuedRestore = null; + restoreViewerState(temp); + } + } + + /** + * Returns whether any state saving is in progress. + * + * @return whether any state saving is in progress + */ + private boolean isSavingState() { + Assert.isTrue( fContentProvider.getViewer().getDisplay().getThread() == Thread.currentThread() ); + + return !fPendingStateSaves.isEmpty(); + } + + /** + * Restores the viewer state unless a save is taking place. If a save is + * taking place, the restore is queued. + * + * @param input + * viewer input + */ + protected void restoreViewerState(final Object input) { + Assert.isTrue( fContentProvider.getViewer().getDisplay().getThread() == Thread.currentThread() ); + + fPendingState = null; + if (isSavingState()) { + fQueuedRestore = input; + } else { + startRestoreViewerState(input); + } + } + + + public void cancelRestore(final TreePath path, final int flags) { + if (fInStateRestore) { + // If we are currently processing pending state already, ignore + // cancelRestore requests. These requests may be triggered in the viewer + // by changes to the tree state (Bug 295585). + return; + } + + if ((flags & IModelDelta.REVEAL) != 0 && fPendingSetTopItem != null) { + fPendingSetTopItem.dispose(); + return; + } + + // Nothing else to do + if (fPendingState == null) { + return; + } + + if ((flags & (IModelDelta.SELECT | IModelDelta.REVEAL)) != 0) { + // If we're canceling reveal and this is waiting for updates to complete + // then just cancel it and return + + // If we're canceling select or reveal, cancel it for all of pending deltas + final int mask = flags & (IModelDelta.SELECT | IModelDelta.REVEAL); fPendingState.accept((delta, depth) -> { int deltaFlags = delta.getFlags(); int newFlags = deltaFlags & ~mask; @@ -879,10 +879,10 @@ class ViewerStateTracker { ((ModelDelta) delta).setFlags(newFlags); return true; }); - } - if ((flags & ~(IModelDelta.SELECT | IModelDelta.REVEAL)) != 0) { - final int mask = flags & ~(IModelDelta.SELECT | IModelDelta.REVEAL); - // For other flags (EXPAND/COLLAPSE), cancel only from the matching path. + } + if ((flags & ~(IModelDelta.SELECT | IModelDelta.REVEAL)) != 0) { + final int mask = flags & ~(IModelDelta.SELECT | IModelDelta.REVEAL); + // For other flags (EXPAND/COLLAPSE), cancel only from the matching path. fPendingState.accept((delta, depth) -> { if (depth < path.getSegmentCount()) { // Descend until we reach a matching depth. @@ -926,30 +926,30 @@ class ViewerStateTracker { return true; } }); - } - } - - - /** - * Perform any restoration required for the given tree path. - * <p> - * This method is called after every viewer update completion to continue - * restoring the expansion state that was previously saved. - * - * @param path the tree path to update - * @param modelIndex the index in the current model - * @param knowsHasChildren if the content provider knows it has children already - * @param knowsChildCount if the content provider knows the current child count already - * @param checkChildrenRealized if any realized children should be checked or not - */ - void restorePendingStateOnUpdate(final TreePath path, final int modelIndex, final boolean knowsHasChildren, - final boolean knowsChildCount, final boolean checkChildrenRealized) - { - Assert.isTrue( fContentProvider.getViewer().getDisplay().getThread() == Thread.currentThread() ); - - if (fPendingState == null) { - return; - } + } + } + + + /** + * Perform any restoration required for the given tree path. + * <p> + * This method is called after every viewer update completion to continue + * restoring the expansion state that was previously saved. + * + * @param path the tree path to update + * @param modelIndex the index in the current model + * @param knowsHasChildren if the content provider knows it has children already + * @param knowsChildCount if the content provider knows the current child count already + * @param checkChildrenRealized if any realized children should be checked or not + */ + void restorePendingStateOnUpdate(final TreePath path, final int modelIndex, final boolean knowsHasChildren, + final boolean knowsChildCount, final boolean checkChildrenRealized) + { + Assert.isTrue( fContentProvider.getViewer().getDisplay().getThread() == Thread.currentThread() ); + + if (fPendingState == null) { + return; + } IModelDeltaVisitor visitor = (delta, depth) -> { @@ -1000,81 +1000,81 @@ class ViewerStateTracker { return element.equals(potentialMatch); }; - try { - fInStateRestore = true; - fPendingState.accept(visitor); - } - finally { - fInStateRestore = false; - } - checkIfRestoreComplete(); - } - - /** - * Checks whether restoring pending state is already complete. - */ - void checkIfRestoreComplete() { - Assert.isTrue( fContentProvider.getViewer().getDisplay().getThread() == Thread.currentThread() ); - - if (fPendingState == null) { - return; - } - - /** - * Used to determine when restoration delta has been processed - */ - class CheckState implements IModelDeltaVisitor { - private boolean complete = true; - - @Override + try { + fInStateRestore = true; + fPendingState.accept(visitor); + } + finally { + fInStateRestore = false; + } + checkIfRestoreComplete(); + } + + /** + * Checks whether restoring pending state is already complete. + */ + void checkIfRestoreComplete() { + Assert.isTrue( fContentProvider.getViewer().getDisplay().getThread() == Thread.currentThread() ); + + if (fPendingState == null) { + return; + } + + /** + * Used to determine when restoration delta has been processed + */ + class CheckState implements IModelDeltaVisitor { + private boolean complete = true; + + @Override public boolean visit(IModelDelta delta, int depth) { - // Filter out the CONTENT flags from the delta flags, the content - // flag is only used as a marker indicating that all the sub-elements - // of a given delta have been retrieved. - int flags = (delta.getFlags() & ~IModelDelta.CONTENT); - - if (flags != IModelDelta.NO_CHANGE) { - IModelDelta parentDelta = delta.getParentDelta(); - // Remove the delta if : - // - The parent delta has no more flags on it (the content flag is removed as well), - // which means that parent element's children have been completely exposed. - // - There are no more pending updates for the element. - // - If element is a memento, there are no state requests pending. - if (parentDelta != null && parentDelta.getFlags() == IModelDelta.NO_CHANGE) { - TreePath deltaPath = fContentProvider.getViewerTreePath(delta); - if ( !fContentProvider.areElementUpdatesPending(deltaPath) && - (!(delta.getElement() instanceof IMemento) || !areMementoUpdatesPending(delta)) ) - { - removeDelta(delta); - return false; - } - } - - if (flags != IModelDelta.REVEAL || (delta.getElement() instanceof IMemento)) { - complete = false; - return false; - } - } - return true; - } - - public boolean isComplete() { - return complete; - } - - private boolean areMementoUpdatesPending(IModelDelta delta) { + // Filter out the CONTENT flags from the delta flags, the content + // flag is only used as a marker indicating that all the sub-elements + // of a given delta have been retrieved. + int flags = (delta.getFlags() & ~IModelDelta.CONTENT); + + if (flags != IModelDelta.NO_CHANGE) { + IModelDelta parentDelta = delta.getParentDelta(); + // Remove the delta if : + // - The parent delta has no more flags on it (the content flag is removed as well), + // which means that parent element's children have been completely exposed. + // - There are no more pending updates for the element. + // - If element is a memento, there are no state requests pending. + if (parentDelta != null && parentDelta.getFlags() == IModelDelta.NO_CHANGE) { + TreePath deltaPath = fContentProvider.getViewerTreePath(delta); + if ( !fContentProvider.areElementUpdatesPending(deltaPath) && + (!(delta.getElement() instanceof IMemento) || !areMementoUpdatesPending(delta)) ) + { + removeDelta(delta); + return false; + } + } + + if (flags != IModelDelta.REVEAL || (delta.getElement() instanceof IMemento)) { + complete = false; + return false; + } + } + return true; + } + + public boolean isComplete() { + return complete; + } + + private boolean areMementoUpdatesPending(IModelDelta delta) { for (CompareRequestKey key : fCompareRequestsInProgress.keySet()) { - if (delta.getElement().equals(key.fDelta.getElement())) { - return true; - } - } - return false; - } - - private void removeDelta(IModelDelta delta) { - if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { - DebugUIPlugin.trace("\tRESTORE REMOVED: " + delta.getElement()); //$NON-NLS-1$ - } + if (delta.getElement().equals(key.fDelta.getElement())) { + return true; + } + } + return false; + } + + private void removeDelta(IModelDelta delta) { + if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { + DebugUIPlugin.trace("\tRESTORE REMOVED: " + delta.getElement()); //$NON-NLS-1$ + } delta.accept((_visitorDelta, depth) -> { ModelDelta visitorDelta = (ModelDelta) _visitorDelta; @@ -1083,285 +1083,285 @@ class ViewerStateTracker { return true; }); - } - } - - CheckState state = new CheckState(); - fPendingState.accept(state); - if (state.isComplete()) { - // notify restore complete if REVEAL was restored also, otherwise - // postpone until then. - if (fPendingSetTopItem == null) { - if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { - DebugUIPlugin.trace("STATE RESTORE COMPELTE: " + fPendingState); //$NON-NLS-1$ - } - - notifyStateUpdate(fPendingState.getElement(), STATE_RESTORE_SEQUENCE_COMPLETE, null); - } - - fPendingState = null; - } - } - - /** - * Restores the pending state in the given delta node. This method is called - * once the state tracker has found the element which matches the element in - * the given delta node. - * @param delta the {@link ModelDelta} to restore from - * @param knowsHasChildren if the content provider has computed its children - * @param knowsChildCount if the content provider has already computed the child count - * @param checkChildrenRealized if any realized children should be checked - */ - void restorePendingStateNode(final ModelDelta delta, boolean knowsHasChildren, boolean knowsChildCount, boolean checkChildrenRealized) { - final TreePath treePath = fContentProvider.getViewerTreePath(delta); - final IInternalTreeModelViewer viewer = fContentProvider.getViewer(); - - // Attempt to expand the node only if the children are known. - if (knowsHasChildren) { - if ((delta.getFlags() & IModelDelta.EXPAND) != 0) { - if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { - DebugUIPlugin.trace("\tRESTORE EXPAND: " + treePath.getLastSegment()); //$NON-NLS-1$ - } - viewer.expandToLevel(treePath, 1); - delta.setFlags(delta.getFlags() & ~IModelDelta.EXPAND); - } - if ((delta.getFlags() & IModelDelta.COLLAPSE) != 0) { - if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { - DebugUIPlugin.trace("\tRESTORE COLLAPSE: " + treePath.getLastSegment()); //$NON-NLS-1$ - } - // Check auto-expand before collapsing an element (bug 335734) - int autoexpand = fContentProvider.getViewer().getAutoExpandLevel(); - if (autoexpand != ITreeModelViewer.ALL_LEVELS && autoexpand < (treePath.getSegmentCount() + 1)) { - fContentProvider.getViewer().setExpandedState(treePath, false); - } - delta.setFlags(delta.getFlags() & ~IModelDelta.COLLAPSE); - } - } - - if ((delta.getFlags() & IModelDelta.SELECT) != 0) { - delta.setFlags(delta.getFlags() & ~IModelDelta.SELECT); - if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { - DebugUIPlugin.trace("\tRESTORE SELECT: " + treePath.getLastSegment()); //$NON-NLS-1$ - } - ITreeSelection currentSelection = (ITreeSelection)viewer.getSelection(); - if (currentSelection == null || currentSelection.isEmpty()) { - viewer.setSelection(new TreeSelection(treePath), false, false); - } else { - TreePath[] currentPaths = currentSelection.getPaths(); - boolean pathInSelection = false; - for (int i = 0; i < currentPaths.length; i++) { - if (currentPaths[i].equals(treePath)) { - pathInSelection = true; - break; - } - } - // Only set the selection if the element is not yet in - // selection. Otherwise the setSelection() call will - // update selection listeners needlessly. - if (!pathInSelection) { - TreePath[] newPaths = new TreePath[currentPaths.length + 1]; - System.arraycopy(currentPaths, 0, newPaths, 0, currentPaths.length); - newPaths[newPaths.length - 1] = treePath; - viewer.setSelection(new TreeSelection(newPaths), false, false); - } - } - } - - if ((delta.getFlags() & IModelDelta.REVEAL) != 0) { - delta.setFlags(delta.getFlags() & ~IModelDelta.REVEAL); - // Look for the reveal flag in the child deltas. If - // A child delta has the reveal flag, do not set the - // top element yet. - boolean setTopItem = true; - IModelDelta[] childDeltas = delta.getChildDeltas(); - for (int i = 0; i < childDeltas.length; i++) { - IModelDelta childDelta = childDeltas[i]; - int modelIndex = childDelta.getIndex(); - if (modelIndex >= 0 && (childDelta.getFlags() & IModelDelta.REVEAL) != 0) { - setTopItem = false; - } - } - - if (setTopItem) { - Assert.isTrue(fPendingSetTopItem == null); - - fPendingSetTopItem = new PendingRevealDelta(treePath, delta); - viewer.addViewerUpdateListener(fPendingSetTopItem); - } - } - - // If we know the child count of the element, look for the reveal - // flag in the child deltas. For the children with reveal flag start - // a new update. - // If the child delta's index is out of range, strip the reveal flag - // since it is no longer applicable. - if (knowsChildCount) { - int childCount = viewer.getChildCount(treePath); - if (childCount >= 0) { - ModelDelta[] childDeltas = (ModelDelta[])delta.getChildDeltas(); - for (int i = 0; i < childDeltas.length; i++) { - ModelDelta childDelta = childDeltas[i]; - int modelIndex = childDelta.getIndex(); - if (modelIndex >= 0 && (childDelta.getFlags() & IModelDelta.REVEAL) != 0) { - if (modelIndex < childCount) { - fContentProvider.doUpdateElement(treePath, modelIndex); - } else { - childDelta.setFlags(childDelta.getFlags() & ~IModelDelta.REVEAL); - } - } - } - } - } - - // Some children of this element were just updated. If all its - // children are now realized, clear out any elements that still - // have flags, because they represent elements that were removed. - if ((checkChildrenRealized && - !fContentProvider.areChildrenUpdatesPending(treePath) && - fContentProvider.getViewer().getElementChildrenRealized(treePath)) || - (knowsHasChildren && !viewer.getHasChildren(treePath)) ) - { - if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { - DebugUIPlugin.trace("\tRESTORE CONTENT: " + treePath.getLastSegment()); //$NON-NLS-1$ - } - delta.setFlags(delta.getFlags() & ~IModelDelta.CONTENT); - } - } - - /** - * Utility that reveals the saved top item in the viewer. It listens for - * all content updates to complete in order to avoid having the desired top item - * scroll out as view content is filled in. - * <br> - * Revealing some elements can trigger expanding some of elements - * that have been just revealed. Therefore, we have to check one - * more time after the new triggered updates are completed if we - * have to set again the top index - */ - private class PendingRevealDelta implements IViewerUpdateListener { - - private final TreePath fPathToReveal; - private final ModelDelta fRevealDelta; - - PendingRevealDelta(TreePath pathToReveal, ModelDelta revealDelta) { - fPathToReveal = pathToReveal; - fRevealDelta = revealDelta; - } - - /** - * Counter that tracks how many time the viewer updates were completed. - */ - private int fCounter = 0; - private Object fModelInput = fPendingState.getElement(); - - @Override + } + } + + CheckState state = new CheckState(); + fPendingState.accept(state); + if (state.isComplete()) { + // notify restore complete if REVEAL was restored also, otherwise + // postpone until then. + if (fPendingSetTopItem == null) { + if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { + DebugUIPlugin.trace("STATE RESTORE COMPELTE: " + fPendingState); //$NON-NLS-1$ + } + + notifyStateUpdate(fPendingState.getElement(), STATE_RESTORE_SEQUENCE_COMPLETE, null); + } + + fPendingState = null; + } + } + + /** + * Restores the pending state in the given delta node. This method is called + * once the state tracker has found the element which matches the element in + * the given delta node. + * @param delta the {@link ModelDelta} to restore from + * @param knowsHasChildren if the content provider has computed its children + * @param knowsChildCount if the content provider has already computed the child count + * @param checkChildrenRealized if any realized children should be checked + */ + void restorePendingStateNode(final ModelDelta delta, boolean knowsHasChildren, boolean knowsChildCount, boolean checkChildrenRealized) { + final TreePath treePath = fContentProvider.getViewerTreePath(delta); + final IInternalTreeModelViewer viewer = fContentProvider.getViewer(); + + // Attempt to expand the node only if the children are known. + if (knowsHasChildren) { + if ((delta.getFlags() & IModelDelta.EXPAND) != 0) { + if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { + DebugUIPlugin.trace("\tRESTORE EXPAND: " + treePath.getLastSegment()); //$NON-NLS-1$ + } + viewer.expandToLevel(treePath, 1); + delta.setFlags(delta.getFlags() & ~IModelDelta.EXPAND); + } + if ((delta.getFlags() & IModelDelta.COLLAPSE) != 0) { + if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { + DebugUIPlugin.trace("\tRESTORE COLLAPSE: " + treePath.getLastSegment()); //$NON-NLS-1$ + } + // Check auto-expand before collapsing an element (bug 335734) + int autoexpand = fContentProvider.getViewer().getAutoExpandLevel(); + if (autoexpand != ITreeModelViewer.ALL_LEVELS && autoexpand < (treePath.getSegmentCount() + 1)) { + fContentProvider.getViewer().setExpandedState(treePath, false); + } + delta.setFlags(delta.getFlags() & ~IModelDelta.COLLAPSE); + } + } + + if ((delta.getFlags() & IModelDelta.SELECT) != 0) { + delta.setFlags(delta.getFlags() & ~IModelDelta.SELECT); + if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { + DebugUIPlugin.trace("\tRESTORE SELECT: " + treePath.getLastSegment()); //$NON-NLS-1$ + } + ITreeSelection currentSelection = (ITreeSelection)viewer.getSelection(); + if (currentSelection == null || currentSelection.isEmpty()) { + viewer.setSelection(new TreeSelection(treePath), false, false); + } else { + TreePath[] currentPaths = currentSelection.getPaths(); + boolean pathInSelection = false; + for (int i = 0; i < currentPaths.length; i++) { + if (currentPaths[i].equals(treePath)) { + pathInSelection = true; + break; + } + } + // Only set the selection if the element is not yet in + // selection. Otherwise the setSelection() call will + // update selection listeners needlessly. + if (!pathInSelection) { + TreePath[] newPaths = new TreePath[currentPaths.length + 1]; + System.arraycopy(currentPaths, 0, newPaths, 0, currentPaths.length); + newPaths[newPaths.length - 1] = treePath; + viewer.setSelection(new TreeSelection(newPaths), false, false); + } + } + } + + if ((delta.getFlags() & IModelDelta.REVEAL) != 0) { + delta.setFlags(delta.getFlags() & ~IModelDelta.REVEAL); + // Look for the reveal flag in the child deltas. If + // A child delta has the reveal flag, do not set the + // top element yet. + boolean setTopItem = true; + IModelDelta[] childDeltas = delta.getChildDeltas(); + for (int i = 0; i < childDeltas.length; i++) { + IModelDelta childDelta = childDeltas[i]; + int modelIndex = childDelta.getIndex(); + if (modelIndex >= 0 && (childDelta.getFlags() & IModelDelta.REVEAL) != 0) { + setTopItem = false; + } + } + + if (setTopItem) { + Assert.isTrue(fPendingSetTopItem == null); + + fPendingSetTopItem = new PendingRevealDelta(treePath, delta); + viewer.addViewerUpdateListener(fPendingSetTopItem); + } + } + + // If we know the child count of the element, look for the reveal + // flag in the child deltas. For the children with reveal flag start + // a new update. + // If the child delta's index is out of range, strip the reveal flag + // since it is no longer applicable. + if (knowsChildCount) { + int childCount = viewer.getChildCount(treePath); + if (childCount >= 0) { + ModelDelta[] childDeltas = (ModelDelta[])delta.getChildDeltas(); + for (int i = 0; i < childDeltas.length; i++) { + ModelDelta childDelta = childDeltas[i]; + int modelIndex = childDelta.getIndex(); + if (modelIndex >= 0 && (childDelta.getFlags() & IModelDelta.REVEAL) != 0) { + if (modelIndex < childCount) { + fContentProvider.doUpdateElement(treePath, modelIndex); + } else { + childDelta.setFlags(childDelta.getFlags() & ~IModelDelta.REVEAL); + } + } + } + } + } + + // Some children of this element were just updated. If all its + // children are now realized, clear out any elements that still + // have flags, because they represent elements that were removed. + if ((checkChildrenRealized && + !fContentProvider.areChildrenUpdatesPending(treePath) && + fContentProvider.getViewer().getElementChildrenRealized(treePath)) || + (knowsHasChildren && !viewer.getHasChildren(treePath)) ) + { + if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { + DebugUIPlugin.trace("\tRESTORE CONTENT: " + treePath.getLastSegment()); //$NON-NLS-1$ + } + delta.setFlags(delta.getFlags() & ~IModelDelta.CONTENT); + } + } + + /** + * Utility that reveals the saved top item in the viewer. It listens for + * all content updates to complete in order to avoid having the desired top item + * scroll out as view content is filled in. + * <br> + * Revealing some elements can trigger expanding some of elements + * that have been just revealed. Therefore, we have to check one + * more time after the new triggered updates are completed if we + * have to set again the top index + */ + private class PendingRevealDelta implements IViewerUpdateListener { + + private final TreePath fPathToReveal; + private final ModelDelta fRevealDelta; + + PendingRevealDelta(TreePath pathToReveal, ModelDelta revealDelta) { + fPathToReveal = pathToReveal; + fRevealDelta = revealDelta; + } + + /** + * Counter that tracks how many time the viewer updates were completed. + */ + private int fCounter = 0; + private Object fModelInput = fPendingState.getElement(); + + @Override public void viewerUpdatesComplete() { - Assert.isTrue( fContentProvider.getViewer().getDisplay().getThread() == Thread.currentThread() ); - - IInternalTreeModelViewer viewer = fContentProvider.getViewer(); - if (viewer == null || fPendingSetTopItem != this) { - return; - } - - TreePath topPath = viewer.getTopElementPath(); - if (!fPathToReveal.equals(topPath)) { - TreePath parentPath = fPathToReveal.getParentPath(); - int index = viewer.findElementIndex(parentPath, fPathToReveal.getLastSegment()); - if (index >= 0) { - if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { - DebugUIPlugin.trace("\tRESTORE REVEAL: " + fPathToReveal.getLastSegment()); //$NON-NLS-1$ - } - viewer.reveal(parentPath, index); - - } - } - - fCounter++; - // in case the pending state was already set to null, we assume that - // all others elements are restored, so we don't expect that REVEAL will - // trigger other updates - if (fCounter > 1 || fPendingState == null) { - dispose(); - } - } - - @Override + Assert.isTrue( fContentProvider.getViewer().getDisplay().getThread() == Thread.currentThread() ); + + IInternalTreeModelViewer viewer = fContentProvider.getViewer(); + if (viewer == null || fPendingSetTopItem != this) { + return; + } + + TreePath topPath = viewer.getTopElementPath(); + if (!fPathToReveal.equals(topPath)) { + TreePath parentPath = fPathToReveal.getParentPath(); + int index = viewer.findElementIndex(parentPath, fPathToReveal.getLastSegment()); + if (index >= 0) { + if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { + DebugUIPlugin.trace("\tRESTORE REVEAL: " + fPathToReveal.getLastSegment()); //$NON-NLS-1$ + } + viewer.reveal(parentPath, index); + + } + } + + fCounter++; + // in case the pending state was already set to null, we assume that + // all others elements are restored, so we don't expect that REVEAL will + // trigger other updates + if (fCounter > 1 || fPendingState == null) { + dispose(); + } + } + + @Override public void viewerUpdatesBegin() {} - @Override + @Override public void updateStarted(IViewerUpdate update) {} - @Override + @Override public void updateComplete(IViewerUpdate update) {} - /** - * Returns delta that is used to reveal the item. - * @return delta to be revealed. - */ - public ModelDelta getDelta() { - return fRevealDelta; - } - - /** - * Resets the item - */ - public void dispose() { - // top item is set - fPendingSetTopItem = null; - - IInternalTreeModelViewer viewer = fContentProvider.getViewer(); - if (viewer == null) { + /** + * Returns delta that is used to reveal the item. + * @return delta to be revealed. + */ + public ModelDelta getDelta() { + return fRevealDelta; + } + + /** + * Resets the item + */ + public void dispose() { + // top item is set + fPendingSetTopItem = null; + + IInternalTreeModelViewer viewer = fContentProvider.getViewer(); + if (viewer == null) { return; } - // remove myself as viewer update listener - viewer.removeViewerUpdateListener(this); - - if (fPendingState == null) { - if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { - DebugUIPlugin.trace("STATE RESTORE COMPELTE: " + fPendingState); //$NON-NLS-1$ - } - notifyStateUpdate(fModelInput, STATE_RESTORE_SEQUENCE_COMPLETE, null); - } else { - checkIfRestoreComplete(); - } - } - - } - - /** - * Restore selection/expansion based on items already in the viewer - * @param delta the {@link ModelDelta} to restore from - */ - protected void doInitialRestore(ModelDelta delta) { - // Find the reveal delta and mark nodes on its path - // to reveal as elements are updated. - markRevealDelta(delta); - - // Restore visible items. - // Note (Pawel Piech): the initial list of items is normally - // empty, so in most cases the code below does not do anything. - // Instead doRestore() is called when various updates complete. - int count = fContentProvider.getViewer().getChildCount(TreePath.EMPTY); - for (int i = 0; i < count; i++) { - Object data = fContentProvider.getViewer().getChildElement(TreePath.EMPTY, i); - if (data != null) { - restorePendingStateOnUpdate(new TreePath(new Object[]{data}), i, false, false, false); - } - } - - } - - /** - * Finds the delta with the reveal flag, then it walks up this - * delta and marks all the parents of it with the reveal flag. - * These flags are then used by the restore logic to restore - * and reveal all the nodes leading up to the element that should - * be ultimately at the top. - * @param rootDelta Delta to search - * @return The node just under the rootDelta which contains - * the reveal flag. <code>null</code> if no reveal flag was found. - */ - private ModelDelta markRevealDelta(ModelDelta rootDelta) { - final ModelDelta[] revealDelta = new ModelDelta[1]; + // remove myself as viewer update listener + viewer.removeViewerUpdateListener(this); + + if (fPendingState == null) { + if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { + DebugUIPlugin.trace("STATE RESTORE COMPELTE: " + fPendingState); //$NON-NLS-1$ + } + notifyStateUpdate(fModelInput, STATE_RESTORE_SEQUENCE_COMPLETE, null); + } else { + checkIfRestoreComplete(); + } + } + + } + + /** + * Restore selection/expansion based on items already in the viewer + * @param delta the {@link ModelDelta} to restore from + */ + protected void doInitialRestore(ModelDelta delta) { + // Find the reveal delta and mark nodes on its path + // to reveal as elements are updated. + markRevealDelta(delta); + + // Restore visible items. + // Note (Pawel Piech): the initial list of items is normally + // empty, so in most cases the code below does not do anything. + // Instead doRestore() is called when various updates complete. + int count = fContentProvider.getViewer().getChildCount(TreePath.EMPTY); + for (int i = 0; i < count; i++) { + Object data = fContentProvider.getViewer().getChildElement(TreePath.EMPTY, i); + if (data != null) { + restorePendingStateOnUpdate(new TreePath(new Object[]{data}), i, false, false, false); + } + } + + } + + /** + * Finds the delta with the reveal flag, then it walks up this + * delta and marks all the parents of it with the reveal flag. + * These flags are then used by the restore logic to restore + * and reveal all the nodes leading up to the element that should + * be ultimately at the top. + * @param rootDelta Delta to search + * @return The node just under the rootDelta which contains + * the reveal flag. <code>null</code> if no reveal flag was found. + */ + private ModelDelta markRevealDelta(ModelDelta rootDelta) { + final ModelDelta[] revealDelta = new ModelDelta[1]; IModelDeltaVisitor visitor = (delta, depth) -> { if ((delta.getFlags() & IModelDelta.REVEAL) != 0) { revealDelta[0] = (ModelDelta) delta; @@ -1370,106 +1370,106 @@ class ViewerStateTracker { return revealDelta[0] == null; }; - rootDelta.accept(visitor); - if (revealDelta[0] != null) { - ModelDelta parentDelta = (ModelDelta)revealDelta[0].getParentDelta(); - while(parentDelta.getParentDelta() != null) { - revealDelta[0] = parentDelta; - revealDelta[0].setFlags(revealDelta[0].getFlags() | IModelDelta.REVEAL); - parentDelta = (ModelDelta)parentDelta.getParentDelta(); - } - } - return revealDelta[0]; - } - - /** - * Builds a delta with the given root delta for expansion/selection state. - * - * @param delta - * root delta - */ - private void buildViewerState(ModelDelta delta) { - IInternalTreeModelViewer viewer = fContentProvider.getViewer(); - viewer.saveElementState(TreeModelContentProvider.EMPTY_TREE_PATH, delta, IModelDelta.SELECT | IModelDelta.EXPAND); - - // Add memento for top item if it is mapped to an element. The reveal memento - // is in its own path to avoid requesting unnecessary data when restoring it. - TreePath topElementPath = viewer.getTopElementPath(); - if (topElementPath != null) { - ModelDelta parentDelta = delta; - TreePath parentPath = TreeModelContentProvider.EMPTY_TREE_PATH; - for (int i = 0; i < topElementPath.getSegmentCount(); i++) { - Object element = topElementPath.getSegment(i); - int index = viewer.findElementIndex(parentPath, element); - ModelDelta childDelta = parentDelta.getChildDelta(element); - if (childDelta == null) { - parentDelta = parentDelta.addNode(element, index, IModelDelta.NO_CHANGE); - } else { - parentDelta = childDelta; - } - parentPath = parentPath.createChildPath(element); - } - parentDelta.setFlags(parentDelta.getFlags() | IModelDelta.REVEAL); - } - } - - /** - * Cancels any outstanding compare requests for given element and its children. - * @param path Path of element to cancel updates for. - */ - void cancelStateSubtreeUpdates(TreePath path) { + rootDelta.accept(visitor); + if (revealDelta[0] != null) { + ModelDelta parentDelta = (ModelDelta)revealDelta[0].getParentDelta(); + while(parentDelta.getParentDelta() != null) { + revealDelta[0] = parentDelta; + revealDelta[0].setFlags(revealDelta[0].getFlags() | IModelDelta.REVEAL); + parentDelta = (ModelDelta)parentDelta.getParentDelta(); + } + } + return revealDelta[0]; + } + + /** + * Builds a delta with the given root delta for expansion/selection state. + * + * @param delta + * root delta + */ + private void buildViewerState(ModelDelta delta) { + IInternalTreeModelViewer viewer = fContentProvider.getViewer(); + viewer.saveElementState(TreeModelContentProvider.EMPTY_TREE_PATH, delta, IModelDelta.SELECT | IModelDelta.EXPAND); + + // Add memento for top item if it is mapped to an element. The reveal memento + // is in its own path to avoid requesting unnecessary data when restoring it. + TreePath topElementPath = viewer.getTopElementPath(); + if (topElementPath != null) { + ModelDelta parentDelta = delta; + TreePath parentPath = TreeModelContentProvider.EMPTY_TREE_PATH; + for (int i = 0; i < topElementPath.getSegmentCount(); i++) { + Object element = topElementPath.getSegment(i); + int index = viewer.findElementIndex(parentPath, element); + ModelDelta childDelta = parentDelta.getChildDelta(element); + if (childDelta == null) { + parentDelta = parentDelta.addNode(element, index, IModelDelta.NO_CHANGE); + } else { + parentDelta = childDelta; + } + parentPath = parentPath.createChildPath(element); + } + parentDelta.setFlags(parentDelta.getFlags() | IModelDelta.REVEAL); + } + } + + /** + * Cancels any outstanding compare requests for given element and its children. + * @param path Path of element to cancel updates for. + */ + void cancelStateSubtreeUpdates(TreePath path) { for (Iterator<CompareRequestKey> itr = fCompareRequestsInProgress.keySet().iterator(); itr.hasNext();) { CompareRequestKey key = itr.next(); - if (key.fPath.startsWith(path, null)) { - ElementCompareRequest compareRequest = fCompareRequestsInProgress.get(key); - compareRequest.cancel(); - itr.remove(); - } - } - } - - void compareFinished(ElementCompareRequest request, ModelDelta delta) { - notifyStateUpdate(request.getViewerInput(), TreeModelContentProvider.UPDATE_COMPLETE, request); - if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { - DebugUIPlugin.trace("\tSTATE END: " + request + " = " + false); //$NON-NLS-1$ //$NON-NLS-2$ - } - - fCompareRequestsInProgress.remove(new CompareRequestKey(request.getElementPath(), delta)); - if (!request.isCanceled()) { - if (request.isEqual()) { - delta.setElement(request.getElement()); - restorePendingStateNode(delta, request.knowsHasChildren(), request.knowChildCount(), request.checkChildrenRealized()); - } else if (request.getModelIndex() != -1) { - // Comparison failed. - // Check if the delta has a reveal flag, and if its index - // matches the index of the element that it was compared - // against. If this is the case, strip the reveal flag from - // the delta as it is most likely not applicable anymore. - if ((delta.getFlags() & IModelDelta.REVEAL) != 0 && delta.getIndex() == request.getModelIndex()) { - delta.setFlags(delta.getFlags() & ~IModelDelta.REVEAL); - } - } - } - checkIfRestoreComplete(); - } - - - void addStateUpdateListener(IStateUpdateListener listener) { - fStateUpdateListeners.add(listener); - } - - void removeStateUpdateListener(IStateUpdateListener listener) { - fStateUpdateListeners.remove(listener); - } - - void notifyStateUpdate(final Object input, final int type, final IViewerUpdate update) { - if (!fStateUpdateListeners.isEmpty()) { + if (key.fPath.startsWith(path, null)) { + ElementCompareRequest compareRequest = fCompareRequestsInProgress.get(key); + compareRequest.cancel(); + itr.remove(); + } + } + } + + void compareFinished(ElementCompareRequest request, ModelDelta delta) { + notifyStateUpdate(request.getViewerInput(), TreeModelContentProvider.UPDATE_COMPLETE, request); + if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) { + DebugUIPlugin.trace("\tSTATE END: " + request + " = " + false); //$NON-NLS-1$ //$NON-NLS-2$ + } + + fCompareRequestsInProgress.remove(new CompareRequestKey(request.getElementPath(), delta)); + if (!request.isCanceled()) { + if (request.isEqual()) { + delta.setElement(request.getElement()); + restorePendingStateNode(delta, request.knowsHasChildren(), request.knowChildCount(), request.checkChildrenRealized()); + } else if (request.getModelIndex() != -1) { + // Comparison failed. + // Check if the delta has a reveal flag, and if its index + // matches the index of the element that it was compared + // against. If this is the case, strip the reveal flag from + // the delta as it is most likely not applicable anymore. + if ((delta.getFlags() & IModelDelta.REVEAL) != 0 && delta.getIndex() == request.getModelIndex()) { + delta.setFlags(delta.getFlags() & ~IModelDelta.REVEAL); + } + } + } + checkIfRestoreComplete(); + } + + + void addStateUpdateListener(IStateUpdateListener listener) { + fStateUpdateListeners.add(listener); + } + + void removeStateUpdateListener(IStateUpdateListener listener) { + fStateUpdateListeners.remove(listener); + } + + void notifyStateUpdate(final Object input, final int type, final IViewerUpdate update) { + if (!fStateUpdateListeners.isEmpty()) { for (IStateUpdateListener iStateUpdateListener : fStateUpdateListeners) { final IStateUpdateListener listener = iStateUpdateListener; - SafeRunner.run(new ISafeRunnable() { - @Override + SafeRunner.run(new ISafeRunnable() { + @Override public void run() throws Exception { - switch (type) { + switch (type) { case STATE_SAVE_SEQUENCE_BEGINS: listener.stateSaveUpdatesBegin(input); break; @@ -1490,15 +1490,15 @@ class ViewerStateTracker { break; default: break; - } - } + } + } - @Override + @Override public void handleException(Throwable exception) { - DebugUIPlugin.log(exception); - } - }); - } - } - } + DebugUIPlugin.log(exception); + } + }); + } + } + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ViewerUpdateMonitor.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ViewerUpdateMonitor.java index 8be777195..cf706ed4a 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ViewerUpdateMonitor.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ViewerUpdateMonitor.java @@ -47,111 +47,111 @@ public abstract class ViewerUpdateMonitor extends Request implements IViewerUpda */ private IElementContentProvider fElementContentProvider; - /** - * Whether this request's 'done' method has been called. - */ - private boolean fDone = false; - - /** - * Whether this request has been started - */ - private boolean fStarted = false; - - /** - * Viewer input at the time the request was made - */ - private Object fViewerInput = null; - - /** - * Whether this update has been delegated to another content provider - * @since 3.4 - */ - private boolean fIsDelegated = false; - - /** - * Presentation context - */ - private IPresentationContext fContext; - - /** - * Constructs an update for the given content provider - * - * @param contentProvider content provider - * @param viewerInput Viewer input for update - * @param elementPath path to associated model element - empty for root element - * @param element associated model element - * @param elementContentProvider Content provider for this update. - * @param context Presentation contest for this update - */ - public ViewerUpdateMonitor(TreeModelContentProvider contentProvider, Object viewerInput, TreePath elementPath, Object element, IElementContentProvider elementContentProvider, IPresentationContext context) { - fContext = context; + /** + * Whether this request's 'done' method has been called. + */ + private boolean fDone = false; + + /** + * Whether this request has been started + */ + private boolean fStarted = false; + + /** + * Viewer input at the time the request was made + */ + private Object fViewerInput = null; + + /** + * Whether this update has been delegated to another content provider + * @since 3.4 + */ + private boolean fIsDelegated = false; + + /** + * Presentation context + */ + private IPresentationContext fContext; + + /** + * Constructs an update for the given content provider + * + * @param contentProvider content provider + * @param viewerInput Viewer input for update + * @param elementPath path to associated model element - empty for root element + * @param element associated model element + * @param elementContentProvider Content provider for this update. + * @param context Presentation contest for this update + */ + public ViewerUpdateMonitor(TreeModelContentProvider contentProvider, Object viewerInput, TreePath elementPath, Object element, IElementContentProvider elementContentProvider, IPresentationContext context) { + fContext = context; // Bug 380288: Catch and log a race condition where the viewer input is null. - if (viewerInput == null) { - DebugUIPlugin.log(new NullPointerException("Input to viewer update should not be null")); //$NON-NLS-1$ - } - fViewerInput = viewerInput; - fElementContentProvider = elementContentProvider; - fContentProvider = contentProvider; - fElement = element; - fElementPath = elementPath; - } - - /** - * Returns the scheduling rule for viewer update job. - * - * @return rule or <code>null</code> - */ - protected ISchedulingRule getUpdateSchedulingRule() { - return AsynchronousSchedulingRuleFactory.getDefault().newSerialPerObjectRule(getContentProvider()); - } - - /** - * Returns the model content provider this update is being performed for. - * - * @return the model content provider this update is being performed for - */ - protected TreeModelContentProvider getContentProvider() { - return fContentProvider; - } - - /** - * Returns the element content provider to use for this request - * - * @return element content provider - */ - protected IElementContentProvider getElementContentProvider() { - return fElementContentProvider; - } - - @Override + if (viewerInput == null) { + DebugUIPlugin.log(new NullPointerException("Input to viewer update should not be null")); //$NON-NLS-1$ + } + fViewerInput = viewerInput; + fElementContentProvider = elementContentProvider; + fContentProvider = contentProvider; + fElement = element; + fElementPath = elementPath; + } + + /** + * Returns the scheduling rule for viewer update job. + * + * @return rule or <code>null</code> + */ + protected ISchedulingRule getUpdateSchedulingRule() { + return AsynchronousSchedulingRuleFactory.getDefault().newSerialPerObjectRule(getContentProvider()); + } + + /** + * Returns the model content provider this update is being performed for. + * + * @return the model content provider this update is being performed for + */ + protected TreeModelContentProvider getContentProvider() { + return fContentProvider; + } + + /** + * Returns the element content provider to use for this request + * + * @return element content provider + */ + protected IElementContentProvider getElementContentProvider() { + return fElementContentProvider; + } + + @Override public final void done() { - synchronized (this) { - if (isDone()) { - return; - } - fDone = true; + synchronized (this) { + if (isDone()) { + return; + } + fDone = true; } - scheduleViewerUpdate(); + scheduleViewerUpdate(); } - /** - * Returns whether this request is done yet. - * - * @return True if this update is done. - */ - protected synchronized boolean isDone() { - return fDone; - } + /** + * Returns whether this request is done yet. + * + * @return True if this update is done. + */ + protected synchronized boolean isDone() { + return fDone; + } - protected void scheduleViewerUpdate() { - getContentProvider().scheduleViewerUpdate(this); - } + protected void scheduleViewerUpdate() { + getContentProvider().scheduleViewerUpdate(this); + } - /** + /** * Notification this update has been completed and should now be applied to * this update's viewer. This method is called in the UI thread. */ - protected abstract void performUpdate(); + protected abstract void performUpdate(); @Override public IPresentationContext getPresentationContext() { @@ -183,7 +183,7 @@ public abstract class ViewerUpdateMonitor extends Request implements IViewerUpda * @param path Element path to check. * @return True if this update contains the given update path. * - * @since 3.6 + * @since 3.6 */ abstract boolean containsUpdate(TreePath path); @@ -252,15 +252,15 @@ public abstract class ViewerUpdateMonitor extends Request implements IViewerUpda @Override public boolean equals(Object obj) { - if (obj instanceof ViewerUpdateMonitor) { - return doEquals((ViewerUpdateMonitor)obj); - } - return false; + if (obj instanceof ViewerUpdateMonitor) { + return doEquals((ViewerUpdateMonitor)obj); + } + return false; } @Override public int hashCode() { - return doHashCode(); + return doHashCode(); } /** @@ -268,34 +268,34 @@ public abstract class ViewerUpdateMonitor extends Request implements IViewerUpda * the same type of update and its updating the same elements. * @param update Update to compare to. * @return True if the given update is equals - * @since 3.8 + * @since 3.8 */ abstract protected boolean doEquals(ViewerUpdateMonitor update); /** * Calculates the hash code of the given update using the same parameters as doEquals(). * @return Update's hash code. - * @since 3.8 + * @since 3.8 + */ + abstract protected int doHashCode(); + + /** + * Executes the given runnable in the UI thread. If method is called in + * UI thread, then runnable is executed immediately, otherwise it's executed + * using <code>Display.asyncExec()</code>. Runnable is not executed if update is + * canceled or content provider is disposed. + * @since 3.8 */ - abstract protected int doHashCode(); - - /** - * Executes the given runnable in the UI thread. If method is called in - * UI thread, then runnable is executed immediately, otherwise it's executed - * using <code>Display.asyncExec()</code>. Runnable is not executed if update is - * canceled or content provider is disposed. - * @since 3.8 - */ protected void execInDisplayThread(Runnable runnable) { - ITreeModelViewer viewer = getContentProvider().getViewer(); - if (viewer != null && !isCanceled()) { - Display display = viewer.getDisplay(); - if (Thread.currentThread() == display.getThread()) { - runnable.run(); - } else { - display.asyncExec(runnable); - } - } + ITreeModelViewer viewer = getContentProvider().getViewer(); + if (viewer != null && !isCanceled()) { + Display display = viewer.getDisplay(); + if (Thread.currentThread() == display.getThread()) { + runnable.run(); + } else { + display.asyncExec(runnable); + } + } } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/VirtualCopyToClipboardActionDelegate.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/VirtualCopyToClipboardActionDelegate.java index 2425e4e3c..cdc5dfd0b 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/VirtualCopyToClipboardActionDelegate.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/VirtualCopyToClipboardActionDelegate.java @@ -65,50 +65,50 @@ public class VirtualCopyToClipboardActionDelegate extends AbstractDebugActionDel private class VirtualViewerListener implements ILabelUpdateListener, IVirtualItemListener { VirtualTreeModelViewer fVirtualViewer; - IProgressMonitor fProgressMonitor; - int fSelectionRootDepth; + IProgressMonitor fProgressMonitor; + int fSelectionRootDepth; Set<VirtualItem> fItemsToUpdate; - @Override + @Override public void labelUpdateStarted(ILabelUpdate update) {} - @Override + @Override public void labelUpdateComplete(ILabelUpdate update) { - VirtualItem updatedItem = fVirtualViewer.findItem(update.getElementPath()); - if (fItemsToUpdate.remove(updatedItem)) { - incrementProgress(1); - } - } - @Override + VirtualItem updatedItem = fVirtualViewer.findItem(update.getElementPath()); + if (fItemsToUpdate.remove(updatedItem)) { + incrementProgress(1); + } + } + @Override public void labelUpdatesBegin() { - } - @Override + } + @Override public void labelUpdatesComplete() { - } + } - @Override + @Override public void revealed(VirtualItem item) { - } + } - @Override + @Override public void disposed(VirtualItem item) { - if (fItemsToUpdate.remove(item)) { - incrementProgress(1); - } - } - - private void incrementProgress(int count) { - IProgressMonitor pm; - synchronized (VirtualCopyToClipboardActionDelegate.this) { - pm = fProgressMonitor; - } - if (pm != null) { - pm.worked(count); - if (fItemsToUpdate.isEmpty()) { - pm.done(); - } - } - } - } + if (fItemsToUpdate.remove(item)) { + incrementProgress(1); + } + } + + private void incrementProgress(int count) { + IProgressMonitor pm; + synchronized (VirtualCopyToClipboardActionDelegate.this) { + pm = fProgressMonitor; + } + if (pm != null) { + pm.worked(count); + if (fItemsToUpdate.isEmpty()) { + pm.done(); + } + } + } + } /** * @see AbstractDebugActionDelegate#initialize(IAction, ISelection) @@ -176,76 +176,76 @@ public class VirtualCopyToClipboardActionDelegate extends AbstractDebugActionDel Set<VirtualItem> fItemsToCopy = Collections.EMPTY_SET; Set<VirtualItem> fItemsToValidate = Collections.EMPTY_SET; - @Override + @Override public boolean isItemVisible(VirtualItem item) { - return fItemsToValidate.contains(item); - } + return fItemsToValidate.contains(item); + } - @Override + @Override public void showItem(VirtualItem item) { - } + } void setItemsToCopy(Set<VirtualItem> itemsToCopy) { - fItemsToCopy = itemsToCopy; + fItemsToCopy = itemsToCopy; fItemsToValidate = new HashSet<>(); for (VirtualItem itemToCopy : itemsToCopy) { - while (itemToCopy != null) { - fItemsToValidate.add(itemToCopy); - itemToCopy = itemToCopy.getParent(); - } - } - } + while (itemToCopy != null) { + fItemsToValidate.add(itemToCopy); + itemToCopy = itemToCopy.getParent(); + } + } + } } private VirtualTreeModelViewer initVirtualViewer(TreeModelViewer clientViewer, VirtualViewerListener listener, ItemsToCopyVirtualItemValidator validator) { - Object input = clientViewer.getInput(); - ModelDelta stateDelta = new ModelDelta(input, IModelDelta.NO_CHANGE); - clientViewer.saveElementState(TreePath.EMPTY, stateDelta, IModelDelta.EXPAND); - VirtualTreeModelViewer virtualViewer = new VirtualTreeModelViewer( - clientViewer.getDisplay(), - SWT.VIRTUAL, - clientViewer.getPresentationContext(), - validator); - virtualViewer.setFilters(clientViewer.getFilters()); - virtualViewer.addLabelUpdateListener(listener); - virtualViewer.getTree().addItemListener(listener); - String[] columns = clientViewer.getPresentationContext().getColumns(); - virtualViewer.setInput(input); - if (virtualViewer.canToggleColumns()) { - virtualViewer.setShowColumns(clientViewer.isShowColumns()); - virtualViewer.setVisibleColumns(columns); - } - virtualViewer.updateViewer(stateDelta); - - // Parse selected items from client viewer and add them to the virtual viewer selection. - listener.fSelectionRootDepth = Integer.MAX_VALUE; - TreeItem[] selection = getSelectedItems(clientViewer); + Object input = clientViewer.getInput(); + ModelDelta stateDelta = new ModelDelta(input, IModelDelta.NO_CHANGE); + clientViewer.saveElementState(TreePath.EMPTY, stateDelta, IModelDelta.EXPAND); + VirtualTreeModelViewer virtualViewer = new VirtualTreeModelViewer( + clientViewer.getDisplay(), + SWT.VIRTUAL, + clientViewer.getPresentationContext(), + validator); + virtualViewer.setFilters(clientViewer.getFilters()); + virtualViewer.addLabelUpdateListener(listener); + virtualViewer.getTree().addItemListener(listener); + String[] columns = clientViewer.getPresentationContext().getColumns(); + virtualViewer.setInput(input); + if (virtualViewer.canToggleColumns()) { + virtualViewer.setShowColumns(clientViewer.isShowColumns()); + virtualViewer.setVisibleColumns(columns); + } + virtualViewer.updateViewer(stateDelta); + + // Parse selected items from client viewer and add them to the virtual viewer selection. + listener.fSelectionRootDepth = Integer.MAX_VALUE; + TreeItem[] selection = getSelectedItems(clientViewer); Set<VirtualItem> vSelection = new HashSet<>(selection.length * 4 / 3); - for (int i = 0; i < selection.length; i++) { - TreePath parentPath = fClientViewer.getTreePathFromItem(selection[i].getParentItem()); - listener.fSelectionRootDepth = Math.min(parentPath.getSegmentCount() + 1, listener.fSelectionRootDepth); - VirtualItem parentVItem = virtualViewer.findItem(parentPath); - if (parentVItem != null) { - int index = -1; - TreeItem parentItem = selection[i].getParentItem(); - if (parentItem != null) { - index = parentItem.indexOf(selection[i]); - } else { - Tree parentTree = selection[i].getParent(); - index = parentTree.indexOf(selection[i]); - } - index = ((ITreeModelContentProvider)clientViewer.getContentProvider()).viewToModelIndex(parentPath, index); - vSelection.add( parentVItem.getItem(new Index(index)) ); - } - } - validator.setItemsToCopy(vSelection); + for (int i = 0; i < selection.length; i++) { + TreePath parentPath = fClientViewer.getTreePathFromItem(selection[i].getParentItem()); + listener.fSelectionRootDepth = Math.min(parentPath.getSegmentCount() + 1, listener.fSelectionRootDepth); + VirtualItem parentVItem = virtualViewer.findItem(parentPath); + if (parentVItem != null) { + int index = -1; + TreeItem parentItem = selection[i].getParentItem(); + if (parentItem != null) { + index = parentItem.indexOf(selection[i]); + } else { + Tree parentTree = selection[i].getParent(); + index = parentTree.indexOf(selection[i]); + } + index = ((ITreeModelContentProvider)clientViewer.getContentProvider()).viewToModelIndex(parentPath, index); + vSelection.add( parentVItem.getItem(new Index(index)) ); + } + } + validator.setItemsToCopy(vSelection); listener.fItemsToUpdate = new HashSet<>(vSelection); - virtualViewer.getTree().validate(); - return virtualViewer; + virtualViewer.getTree().validate(); + return virtualViewer; } protected TreeItem[] getSelectedItems(TreeModelViewer clientViewer) { - return clientViewer.getTree().getSelection(); + return clientViewer.getTree().getSelection(); } /** @@ -254,9 +254,9 @@ public class VirtualCopyToClipboardActionDelegate extends AbstractDebugActionDel */ @Override public void run(final IAction action) { - if (fClientViewer.getSelection().isEmpty()) { - return; - } + if (fClientViewer.getSelection().isEmpty()) { + return; + } final VirtualViewerListener listener = new VirtualViewerListener(); ItemsToCopyVirtualItemValidator validator = new ItemsToCopyVirtualItemValidator(); @@ -270,17 +270,17 @@ public class VirtualCopyToClipboardActionDelegate extends AbstractDebugActionDel IRunnableWithProgress runnable = new IRunnableWithProgress() { @Override public void run(final IProgressMonitor m) throws InvocationTargetException, InterruptedException { - synchronized(listener) { - listener.fProgressMonitor = m; - listener.fProgressMonitor.beginTask(DebugUIPlugin.removeAccelerators(getAction().getText()), listener.fItemsToUpdate.size()); - } - - while (!listener.fItemsToUpdate.isEmpty() && !listener.fProgressMonitor.isCanceled()) { - Thread.sleep(1); - } - synchronized(listener) { - listener.fProgressMonitor = null; - } + synchronized(listener) { + listener.fProgressMonitor = m; + listener.fProgressMonitor.beginTask(DebugUIPlugin.removeAccelerators(getAction().getText()), listener.fItemsToUpdate.size()); + } + + while (!listener.fItemsToUpdate.isEmpty() && !listener.fProgressMonitor.isCanceled()) { + Thread.sleep(1); + } + synchronized(listener) { + listener.fProgressMonitor = null; + } } }; try { @@ -293,24 +293,24 @@ public class VirtualCopyToClipboardActionDelegate extends AbstractDebugActionDel } if (!monitor.isCanceled()) { - copySelectionToClipboard(virtualViewer, validator.fItemsToCopy, listener.fSelectionRootDepth); + copySelectionToClipboard(virtualViewer, validator.fItemsToCopy, listener.fSelectionRootDepth); } - virtualViewer.removeLabelUpdateListener(listener); - virtualViewer.getTree().removeItemListener(listener); + virtualViewer.removeLabelUpdateListener(listener); + virtualViewer.getTree().removeItemListener(listener); virtualViewer.dispose(); } private void copySelectionToClipboard(VirtualTreeModelViewer virtualViewer, Set<VirtualItem> itemsToCopy, int selectionRootDepth) { - StringBuffer buffer = new StringBuffer(); - writeItemToBuffer (virtualViewer.getTree(), itemsToCopy, buffer, -selectionRootDepth); - writeBufferToClipboard(buffer); + StringBuffer buffer = new StringBuffer(); + writeItemToBuffer (virtualViewer.getTree(), itemsToCopy, buffer, -selectionRootDepth); + writeBufferToClipboard(buffer); } protected void writeItemToBuffer(VirtualItem item, Set<VirtualItem> itemsToCopy, StringBuffer buffer, int indent) { - if (itemsToCopy.contains(item)) { - append(item, buffer, indent); - } + if (itemsToCopy.contains(item)) { + append(item, buffer, indent); + } VirtualItem[] children = item.getItems(); if (children != null) { for (int i = 0; i < children.length; i++) { @@ -324,8 +324,8 @@ public class VirtualCopyToClipboardActionDelegate extends AbstractDebugActionDel return; } - TextTransfer plainTextTransfer = TextTransfer.getInstance(); - Clipboard clipboard= new Clipboard(fClientViewer.getControl().getDisplay()); + TextTransfer plainTextTransfer = TextTransfer.getInstance(); + Clipboard clipboard= new Clipboard(fClientViewer.getControl().getDisplay()); try { clipboard.setContents( new String[]{buffer.toString()}, @@ -338,7 +338,7 @@ public class VirtualCopyToClipboardActionDelegate extends AbstractDebugActionDel writeBufferToClipboard(buffer); } } finally { - clipboard.dispose(); + clipboard.dispose(); } } @@ -359,11 +359,11 @@ public class VirtualCopyToClipboardActionDelegate extends AbstractDebugActionDel @Override protected boolean getEnableStateForSelection(IStructuredSelection selection) { - if (selection.isEmpty()) { - return true; - } else { - return super.getEnableStateForSelection(selection); - } + if (selection.isEmpty()) { + return true; + } else { + return super.getEnableStateForSelection(selection); + } } @Override diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/VirtualFindAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/VirtualFindAction.java index ba26f4622..8a9d49627 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/VirtualFindAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/VirtualFindAction.java @@ -62,69 +62,69 @@ import com.ibm.icu.text.MessageFormat; */ public class VirtualFindAction extends Action implements IUpdate { - private TreeModelViewer fClientViewer; + private TreeModelViewer fClientViewer; private class VirtualViewerListener implements IViewerUpdateListener, ILabelUpdateListener { - private boolean fViewerUpdatesComplete = false; - private boolean fLabelUpdatesComplete = false; - private IProgressMonitor fProgressMonitor; - private int fRemainingUpdatesCount = 0; + private boolean fViewerUpdatesComplete = false; + private boolean fLabelUpdatesComplete = false; + private IProgressMonitor fProgressMonitor; + private int fRemainingUpdatesCount = 0; - @Override + @Override public void labelUpdateStarted(ILabelUpdate update) {} - @Override + @Override public void labelUpdateComplete(ILabelUpdate update) { - incrementProgress(1); - } - @Override + incrementProgress(1); + } + @Override public void labelUpdatesBegin() { - fLabelUpdatesComplete = false; - } - @Override + fLabelUpdatesComplete = false; + } + @Override public void labelUpdatesComplete() { - fLabelUpdatesComplete = true; - completeProgress(); - } + fLabelUpdatesComplete = true; + completeProgress(); + } - @Override + @Override public void updateStarted(IViewerUpdate update) {} - @Override + @Override public void updateComplete(IViewerUpdate update) { - if (update instanceof IChildrenUpdate) { - incrementProgress(((IChildrenUpdate)update).getLength()); - } - } - @Override + if (update instanceof IChildrenUpdate) { + incrementProgress(((IChildrenUpdate)update).getLength()); + } + } + @Override public void viewerUpdatesBegin() { - fViewerUpdatesComplete = false; - } - @Override + fViewerUpdatesComplete = false; + } + @Override public void viewerUpdatesComplete() { - fViewerUpdatesComplete = true; - completeProgress(); - } - - private void completeProgress() { - IProgressMonitor pm; - synchronized (this) { - pm = fProgressMonitor; - } - if (pm != null && fLabelUpdatesComplete && fViewerUpdatesComplete) { - pm.done(); - } - } - - private void incrementProgress(int count) { - IProgressMonitor pm; - synchronized (this) { - pm = fProgressMonitor; - fRemainingUpdatesCount -= count; - } - if (pm != null && fLabelUpdatesComplete && fViewerUpdatesComplete) { - pm.worked(count); - } - } + fViewerUpdatesComplete = true; + completeProgress(); + } + + private void completeProgress() { + IProgressMonitor pm; + synchronized (this) { + pm = fProgressMonitor; + } + if (pm != null && fLabelUpdatesComplete && fViewerUpdatesComplete) { + pm.done(); + } + } + + private void incrementProgress(int count) { + IProgressMonitor pm; + synchronized (this) { + pm = fProgressMonitor; + fRemainingUpdatesCount -= count; + } + if (pm != null && fLabelUpdatesComplete && fViewerUpdatesComplete) { + pm.worked(count); + } + } } @@ -133,26 +133,26 @@ public class VirtualFindAction extends Action implements IUpdate { private Map<VirtualItem, String> fTextCache = new HashMap<>(); public FindLabelProvider(VirtualTreeModelViewer viewer, List<VirtualItem> items) { - fVirtualViewer = viewer; - for (int i = 0; i < items.size(); i++) { - VirtualItem item = items.get(i); - fTextCache.put(item, fVirtualViewer.getText(item, 0)); - } + fVirtualViewer = viewer; + for (int i = 0; i < items.size(); i++) { + VirtualItem item = items.get(i); + fTextCache.put(item, fVirtualViewer.getText(item, 0)); + } } @Override public Image getImage(Object element) { - return fVirtualViewer.getImage((VirtualItem) element, 0); + return fVirtualViewer.getImage((VirtualItem) element, 0); } @Override public String getText(Object element) { - return fTextCache.get(element); + return fTextCache.get(element); } } public VirtualFindAction(TreeModelViewer viewer) { - fClientViewer = viewer; + fClientViewer = viewer; setText(ActionMessages.FindAction_0); setId(DebugUIPlugin.getUniqueIdentifier() + ".FindElementAction"); //$NON-NLS-1$ @@ -162,31 +162,31 @@ public class VirtualFindAction extends Action implements IUpdate { } private VirtualTreeModelViewer initVirtualViewer(TreeModelViewer clientViewer, VirtualViewerListener listener) { - Object input = clientViewer.getInput(); - ModelDelta stateDelta = new ModelDelta(input, IModelDelta.NO_CHANGE); - clientViewer.saveElementState(TreePath.EMPTY, stateDelta, IModelDelta.EXPAND); - listener.fRemainingUpdatesCount = calcUpdatesCount(stateDelta); - VirtualTreeModelViewer fVirtualViewer = new VirtualTreeModelViewer( - clientViewer.getDisplay(), - SWT.NONE, - clientViewer.getPresentationContext()); - fVirtualViewer.setFilters(clientViewer.getFilters()); - fVirtualViewer.addViewerUpdateListener(listener); - fVirtualViewer.addLabelUpdateListener(listener); - String[] columns = clientViewer.getPresentationContext().getColumns(); - fVirtualViewer.setInput(input); - if (fVirtualViewer.canToggleColumns()) { - fVirtualViewer.setShowColumns(clientViewer.isShowColumns()); - fVirtualViewer.setVisibleColumns(columns); - } - fVirtualViewer.updateViewer(stateDelta); - return fVirtualViewer; + Object input = clientViewer.getInput(); + ModelDelta stateDelta = new ModelDelta(input, IModelDelta.NO_CHANGE); + clientViewer.saveElementState(TreePath.EMPTY, stateDelta, IModelDelta.EXPAND); + listener.fRemainingUpdatesCount = calcUpdatesCount(stateDelta); + VirtualTreeModelViewer fVirtualViewer = new VirtualTreeModelViewer( + clientViewer.getDisplay(), + SWT.NONE, + clientViewer.getPresentationContext()); + fVirtualViewer.setFilters(clientViewer.getFilters()); + fVirtualViewer.addViewerUpdateListener(listener); + fVirtualViewer.addLabelUpdateListener(listener); + String[] columns = clientViewer.getPresentationContext().getColumns(); + fVirtualViewer.setInput(input); + if (fVirtualViewer.canToggleColumns()) { + fVirtualViewer.setShowColumns(clientViewer.isShowColumns()); + fVirtualViewer.setVisibleColumns(columns); + } + fVirtualViewer.updateViewer(stateDelta); + return fVirtualViewer; } @Override public void run() { - final VirtualViewerListener listener = new VirtualViewerListener(); - VirtualTreeModelViewer virtualViewer = initVirtualViewer(fClientViewer, listener); + final VirtualViewerListener listener = new VirtualViewerListener(); + VirtualTreeModelViewer virtualViewer = initVirtualViewer(fClientViewer, listener); ProgressMonitorDialog dialog = new TimeTriggeredProgressMonitorDialog(fClientViewer.getControl().getShell(), 500); final IProgressMonitor monitor = dialog.getProgressMonitor(); @@ -194,23 +194,23 @@ public class VirtualFindAction extends Action implements IUpdate { try { dialog.run( - true, true, - new IRunnableWithProgress() { - @Override + true, true, + new IRunnableWithProgress() { + @Override public void run(final IProgressMonitor m) throws InvocationTargetException, InterruptedException { - synchronized(listener) { - listener.fProgressMonitor = m; - listener.fProgressMonitor.beginTask(DebugUIPlugin.removeAccelerators(getText()), listener.fRemainingUpdatesCount); - } - - while ((!listener.fLabelUpdatesComplete || !listener.fViewerUpdatesComplete) && !listener.fProgressMonitor.isCanceled()) { - Thread.sleep(1); - } - synchronized(listener) { - listener.fProgressMonitor = null; - } - } - }); + synchronized(listener) { + listener.fProgressMonitor = m; + listener.fProgressMonitor.beginTask(DebugUIPlugin.removeAccelerators(getText()), listener.fRemainingUpdatesCount); + } + + while ((!listener.fLabelUpdatesComplete || !listener.fViewerUpdatesComplete) && !listener.fProgressMonitor.isCanceled()) { + Thread.sleep(1); + } + synchronized(listener) { + listener.fProgressMonitor = null; + } + } + }); } catch (InvocationTargetException e) { DebugUIPlugin.log(e); return; @@ -225,30 +225,30 @@ public class VirtualFindAction extends Action implements IUpdate { FindLabelProvider labelProvider = new FindLabelProvider(virtualViewer, list); VirtualItem result = performFind(list, labelProvider); if (result != null) { - setSelectionToClient(virtualViewer, labelProvider, result); + setSelectionToClient(virtualViewer, labelProvider, result); } } - virtualViewer.removeLabelUpdateListener(listener); - virtualViewer.removeViewerUpdateListener(listener); - virtualViewer.dispose(); + virtualViewer.removeLabelUpdateListener(listener); + virtualViewer.removeViewerUpdateListener(listener); + virtualViewer.dispose(); } private int calcUpdatesCount(IModelDelta stateDelta) { - final int[] count = new int[] {0}; - stateDelta.accept( new IModelDeltaVisitor() { - @Override + final int[] count = new int[] {0}; + stateDelta.accept( new IModelDeltaVisitor() { + @Override public boolean visit(IModelDelta delta, int depth) { - if ((delta.getFlags() & IModelDelta.EXPAND) != 0) { - count[0] += delta.getChildCount(); - return true; - } - return false; - } - }); - - // Double it to account for separate element and label update ticks. - return count[0] * 2; + if ((delta.getFlags() & IModelDelta.EXPAND) != 0) { + count[0] += delta.getChildCount(); + return true; + } + return false; + } + }); + + // Double it to account for separate element and label update ticks. + return count[0] * 2; } private void collectAllChildren(VirtualItem element, List<VirtualItem> collect) { @@ -265,52 +265,52 @@ public class VirtualFindAction extends Action implements IUpdate { protected VirtualItem performFind(List<VirtualItem> items, FindLabelProvider labelProvider) { FindElementDialog dialog = new FindElementDialog( - fClientViewer.getControl().getShell(), - labelProvider, - items.toArray()); + fClientViewer.getControl().getShell(), + labelProvider, + items.toArray()); dialog.setTitle(ActionMessages.FindDialog_3); dialog.setMessage(ActionMessages.FindDialog_1); if (dialog.open() == Window.OK) { Object[] elements = dialog.getResult(); if (elements.length == 1) { - return (VirtualItem)elements[0]; + return (VirtualItem)elements[0]; } } return null; } protected void setSelectionToClient(VirtualTreeModelViewer virtualViewer, ILabelProvider labelProvider, VirtualItem findItem) { - virtualViewer.getTree().setSelection(new VirtualItem[] { findItem } ); - ModelDelta stateDelta = new ModelDelta(virtualViewer.getInput(), IModelDelta.NO_CHANGE); - virtualViewer.saveElementState(TreePath.EMPTY, stateDelta, IModelDelta.SELECT); - // Set the force flag to all select delta in order to override model's selection policy. - stateDelta.accept(new IModelDeltaVisitor() { - @Override + virtualViewer.getTree().setSelection(new VirtualItem[] { findItem } ); + ModelDelta stateDelta = new ModelDelta(virtualViewer.getInput(), IModelDelta.NO_CHANGE); + virtualViewer.saveElementState(TreePath.EMPTY, stateDelta, IModelDelta.SELECT); + // Set the force flag to all select delta in order to override model's selection policy. + stateDelta.accept(new IModelDeltaVisitor() { + @Override public boolean visit(IModelDelta delta, int depth) { - if ((delta.getFlags() & IModelDelta.SELECT) != 0) { - ((ModelDelta)delta).setFlags(delta.getFlags() | IModelDelta.FORCE); - } - return true; - } - }); - fClientViewer.updateViewer(stateDelta); - - ISelection selection = fClientViewer.getSelection(); - if (!selection.isEmpty() && - selection instanceof IStructuredSelection && - ((IStructuredSelection)selection).getFirstElement().equals(findItem.getData()) ) { - } else { - DebugUIPlugin.errorDialog( - fClientViewer.getControl().getShell(), - ActionMessages.VirtualFindAction_0, + if ((delta.getFlags() & IModelDelta.SELECT) != 0) { + ((ModelDelta)delta).setFlags(delta.getFlags() | IModelDelta.FORCE); + } + return true; + } + }); + fClientViewer.updateViewer(stateDelta); + + ISelection selection = fClientViewer.getSelection(); + if (!selection.isEmpty() && + selection instanceof IStructuredSelection && + ((IStructuredSelection)selection).getFirstElement().equals(findItem.getData()) ) { + } else { + DebugUIPlugin.errorDialog( + fClientViewer.getControl().getShell(), + ActionMessages.VirtualFindAction_0, MessageFormat.format(ActionMessages.VirtualFindAction_1, new Object[] { labelProvider.getText(findItem) }), - new Status(IStatus.ERROR, DebugUIPlugin.getUniqueIdentifier(), ActionMessages.VirtualFindAction_1)); - } + new Status(IStatus.ERROR, DebugUIPlugin.getUniqueIdentifier(), ActionMessages.VirtualFindAction_1)); + } } @Override public void update() { - setEnabled( fClientViewer.getInput() != null && fClientViewer.getChildCount(TreePath.EMPTY) > 0 ); + setEnabled( fClientViewer.getInput() != null && fClientViewer.getChildCount(TreePath.EMPTY) > 0 ); } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/ICheckUpdate.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/ICheckUpdate.java index 4be545f67..14afa964f 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/ICheckUpdate.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/ICheckUpdate.java @@ -22,18 +22,18 @@ package org.eclipse.debug.internal.ui.viewers.model.provisional; */ public interface ICheckUpdate extends ILabelUpdate { - /** - * Property of the presentation context which indicates that the viewer - * has the check box style. - */ - String PROP_CHECK = "org.eclipse.debug.ui.check"; //$NON-NLS-1$ + /** + * Property of the presentation context which indicates that the viewer + * has the check box style. + */ + String PROP_CHECK = "org.eclipse.debug.ui.check"; //$NON-NLS-1$ - /** - * Sets the check state of the tree node. - * - * @param checked Whether element should be checked. - * @param grayed Whether element should be grayed out. - */ - void setChecked(boolean checked, boolean grayed); + /** + * Sets the check state of the tree node. + * + * @param checked Whether element should be checked. + * @param grayed Whether element should be grayed out. + */ + void setChecked(boolean checked, boolean grayed); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/ICheckboxModelProxy.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/ICheckboxModelProxy.java index c85c55220..d8c9f3c99 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/ICheckboxModelProxy.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/ICheckboxModelProxy.java @@ -26,22 +26,22 @@ import org.eclipse.jface.viewers.TreePath; */ public interface ICheckboxModelProxy { - /** - * Notifies the receiver that the given element has had its - * checked state modified in the viewer. - * <p> - * This method is called in the UI thread. Clients that execute long running operations or - * communicate with a potentially unreliable or blocking model should run those operations - * asynchronously. - * </p> - * - * @param context Presentation context in which the element was updated. - * @param viewerInput The root element of the viewer where the check - * selection took place. - * @param path Path of the element that had its checked state changed - * @param checked The new checked state of the element - * @return false if the check state should not change - */ - boolean setChecked(IPresentationContext context, Object viewerInput, TreePath path, boolean checked); + /** + * Notifies the receiver that the given element has had its + * checked state modified in the viewer. + * <p> + * This method is called in the UI thread. Clients that execute long running operations or + * communicate with a potentially unreliable or blocking model should run those operations + * asynchronously. + * </p> + * + * @param context Presentation context in which the element was updated. + * @param viewerInput The root element of the viewer where the check + * selection took place. + * @param path Path of the element that had its checked state changed + * @param checked The new checked state of the element + * @return false if the check state should not change + */ + boolean setChecked(IPresentationContext context, Object viewerInput, TreePath path, boolean checked); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IElementContentProvider.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IElementContentProvider.java index 67c0b8bbf..6d43b485a 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IElementContentProvider.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IElementContentProvider.java @@ -42,7 +42,7 @@ public interface IElementContentProvider { * * @param updates Each update specifies children to update and stores results. * The update array is guaranteed to have at least one element, and for - * all updates to have the same presentation context. + * all updates to have the same presentation context. */ void update(IChildrenUpdate[] updates); diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IElementMementoProvider.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IElementMementoProvider.java index 8ab79d3ad..93bbd0c0e 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IElementMementoProvider.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IElementMementoProvider.java @@ -35,7 +35,7 @@ public interface IElementMementoProvider { * * @param requests Specifies elements and provides memento stores. * The requests array is guaranteed to have at least one element, and for - * all requests to have the same presentation context. + * all requests to have the same presentation context. */ void encodeElements(IElementMementoRequest[] requests); @@ -44,7 +44,7 @@ public interface IElementMementoProvider { * * @param requests Specifies each element and previously created memento. * The requests array is guaranteed to have at least one element, and for - * all requests to have the same presentation context. + * all requests to have the same presentation context. */ void compareElements(IElementCompareRequest[] requests); diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/ILabelUpdate.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/ILabelUpdate.java index cee30bef4..351a5db90 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/ILabelUpdate.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/ILabelUpdate.java @@ -41,37 +41,37 @@ public interface ILabelUpdate extends IViewerUpdate { * @param text to set to viewer * @param columnIndex column index (0 when no columns) */ - void setLabel(String text, int columnIndex); + void setLabel(String text, int columnIndex); - /** - * Sets the font of the label. - * - * @param fontData to set to viewer - * @param columnIndex column index (0 when no columns) - */ - void setFontData(FontData fontData, int columnIndex); + /** + * Sets the font of the label. + * + * @param fontData to set to viewer + * @param columnIndex column index (0 when no columns) + */ + void setFontData(FontData fontData, int columnIndex); - /** - * Sets the image of the label. - * - * @param image to set to viewer - * @param columnIndex column index (0 when no columns) - */ - void setImageDescriptor(ImageDescriptor image, int columnIndex); + /** + * Sets the image of the label. + * + * @param image to set to viewer + * @param columnIndex column index (0 when no columns) + */ + void setImageDescriptor(ImageDescriptor image, int columnIndex); - /** - * Sets the foreground color of the label. - * - * @param foreground to set to viewer - * @param columnIndex column index (0 when no columns) - */ - void setForeground(RGB foreground, int columnIndex); + /** + * Sets the foreground color of the label. + * + * @param foreground to set to viewer + * @param columnIndex column index (0 when no columns) + */ + void setForeground(RGB foreground, int columnIndex); - /** - * Sets the background color of the label. - * - * @param background to set to viewer - * @param columnIndex column index (0 when no columns) - */ - void setBackground(RGB background, int columnIndex); + /** + * Sets the background color of the label. + * + * @param background to set to viewer + * @param columnIndex column index (0 when no columns) + */ + void setBackground(RGB background, int columnIndex); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IModelProxy.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IModelProxy.java index 975081ff1..5fd7ca553 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IModelProxy.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IModelProxy.java @@ -69,8 +69,8 @@ public interface IModelProxy { * This method is called by the asynchronous viewer framework and should not * be called by clients. * </p> - * @param viewer viewer - * @see IModelProxy2#initialize(ITreeModelViewer) + * @param viewer viewer + * @see IModelProxy2#initialize(ITreeModelViewer) * @since 3.3 */ void installed(Viewer viewer); diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IModelProxy2.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IModelProxy2.java index c6eb135ab..eaeccfd63 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IModelProxy2.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IModelProxy2.java @@ -26,20 +26,20 @@ import org.eclipse.jface.viewers.Viewer; */ public interface IModelProxy2 extends IModelProxy { - /** - * Initialize model proxy with given tree model viewer. This method is - * called on the viewer's Display thread and is guaranteed to be called - * before the dispose() method is called on the same proxy. The default - * implementation of this method calls {@link #init(IPresentationContext)} - * and {@link #installed(Viewer)} asynchornously and not in the Display - * thread. - * <p> - * This method is called by the asynchronous viewer framework and should - * not be called by clients. - * </p> - * @param viewer Viewer that is installing this model proxy. - * - */ - void initialize(ITreeModelViewer viewer); + /** + * Initialize model proxy with given tree model viewer. This method is + * called on the viewer's Display thread and is guaranteed to be called + * before the dispose() method is called on the same proxy. The default + * implementation of this method calls {@link #init(IPresentationContext)} + * and {@link #installed(Viewer)} asynchornously and not in the Display + * thread. + * <p> + * This method is called by the asynchronous viewer framework and should + * not be called by clients. + * </p> + * @param viewer Viewer that is installing this model proxy. + * + */ + void initialize(ITreeModelViewer viewer); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IModelSelectionPolicy.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IModelSelectionPolicy.java index 9107eecc9..cf846b64f 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IModelSelectionPolicy.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IModelSelectionPolicy.java @@ -85,5 +85,5 @@ public interface IModelSelectionPolicy { * the selection after the update, or <code>null</code> if none * @return new selection or <code>null</code> if none */ - ISelection replaceInvalidSelection(ISelection invalidSelection, ISelection newSelection); + ISelection replaceInvalidSelection(ISelection invalidSelection, ISelection newSelection); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IPresentationContext.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IPresentationContext.java index 4cc72bfe2..bc411b429 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IPresentationContext.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IPresentationContext.java @@ -44,91 +44,91 @@ public interface IPresentationContext { */ String PROPERTY_DISPOSED = "PROPERTY_DISPOSED"; //$NON-NLS-1$ - /** - * Returns identifiers of the visible columns in the order - * labels should be provided, or <code>null</code> if columns - * are not being displayed. Label providers use this - * information. - * - * @return visible column identifiers or <code>null</code> - * @see IColumnPresentation - */ - String[] getColumns(); + /** + * Returns identifiers of the visible columns in the order + * labels should be provided, or <code>null</code> if columns + * are not being displayed. Label providers use this + * information. + * + * @return visible column identifiers or <code>null</code> + * @see IColumnPresentation + */ + String[] getColumns(); - /** - * Registers the given listener for property change notification. - * - * @param listener property listener - */ - void addPropertyChangeListener(IPropertyChangeListener listener); + /** + * Registers the given listener for property change notification. + * + * @param listener property listener + */ + void addPropertyChangeListener(IPropertyChangeListener listener); - /** - * Unregisters the given listener from property change notification. - * - * @param listener property listener. - */ - void removePropertyChangeListener(IPropertyChangeListener listener); + /** + * Unregisters the given listener from property change notification. + * + * @param listener property listener. + */ + void removePropertyChangeListener(IPropertyChangeListener listener); - /** - * Returns the id of this presentation context. Usually this is the id of - * the associated part. However, when no part is associated with this context, - * the id may exist on its own. Allows for a context that is not tied to a part. - * - * @return id - * @since 3.3 - */ - String getId(); + /** + * Returns the id of this presentation context. Usually this is the id of + * the associated part. However, when no part is associated with this context, + * the id may exist on its own. Allows for a context that is not tied to a part. + * + * @return id + * @since 3.3 + */ + String getId(); - /** - * Sets the specified property and notifies listeners of changes. - * - * @param property property name - * @param value property value - */ - void setProperty(String property, Object value); + /** + * Sets the specified property and notifies listeners of changes. + * + * @param property property name + * @param value property value + */ + void setProperty(String property, Object value); - /** - * Returns the property with the specified name or <code>null</code> - * if none. - * - * @param property property name - * @return property value or <code>null</code> - */ - Object getProperty(String property); + /** + * Returns the property with the specified name or <code>null</code> + * if none. + * + * @param property property name + * @return property value or <code>null</code> + */ + Object getProperty(String property); - /** - * Disposes this presentation context. Called by the framework - * when the associated viewer is disposed. - */ - void dispose(); + /** + * Disposes this presentation context. Called by the framework + * when the associated viewer is disposed. + */ + void dispose(); - /** - * Returns all keys of properties currently set in this context, - * possibly an empty collection - * - * @return keys of all current properties - * @since 3.4 - */ - String[] getProperties(); + /** + * Returns all keys of properties currently set in this context, + * possibly an empty collection + * + * @return keys of all current properties + * @since 3.4 + */ + String[] getProperties(); - /** - * Returns the part that this presentation context is associated with. - * May return <code>null</code> if the presentation is not associated - * with a part. - * - * @return IWorkbenchPart or <code>null</code> - * @since 3.6 - */ - IWorkbenchPart getPart(); + /** + * Returns the part that this presentation context is associated with. + * May return <code>null</code> if the presentation is not associated + * with a part. + * + * @return IWorkbenchPart or <code>null</code> + * @since 3.6 + */ + IWorkbenchPart getPart(); - /** - * Returns the window that this presentation context is associated with. - * May return <code>null</code> if the presentation is not associated - * with a window. - * - * @return IWorkbenchWindow or <code>null</code> - * @since 3.6 - */ - IWorkbenchWindow getWindow(); + /** + * Returns the window that this presentation context is associated with. + * May return <code>null</code> if the presentation is not associated + * with a window. + * + * @return IWorkbenchWindow or <code>null</code> + * @since 3.6 + */ + IWorkbenchWindow getWindow(); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IStateUpdateListener.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IStateUpdateListener.java index 198b97a0e..fddacb5cd 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IStateUpdateListener.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IStateUpdateListener.java @@ -32,30 +32,30 @@ public interface IStateUpdateListener { * Notification that viewer updates are complete. Corresponds to * a <code>viewerUpdatesBegin()</code> notification. * - * @param input Input object for the state operation. + * @param input Input object for the state operation. */ void stateSaveUpdatesComplete(Object input); /** - * Notification that a sequence of viewer updates are starting. - * - * @param input Input object for the state operation. - */ - void stateRestoreUpdatesBegin(Object input); + * Notification that a sequence of viewer updates are starting. + * + * @param input Input object for the state operation. + */ + void stateRestoreUpdatesBegin(Object input); - /** - * Notification that viewer updates are complete. Corresponds to - * a <code>viewerUpdatesBegin()</code> notification. - * - * @param input Input object for the state operation. - */ - void stateRestoreUpdatesComplete(Object input); + /** + * Notification that viewer updates are complete. Corresponds to + * a <code>viewerUpdatesBegin()</code> notification. + * + * @param input Input object for the state operation. + */ + void stateRestoreUpdatesComplete(Object input); /** * Notification that a specific update has started within * a sequence of updates. * - * @param input Input object for the state operation. + * @param input Input object for the state operation. * @param update update */ void stateUpdateStarted(Object input, IViewerUpdate update); @@ -64,7 +64,7 @@ public interface IStateUpdateListener { * Notification that a specific update has completed within a * sequence of updates. * - * @param input Input object for the state operation. + * @param input Input object for the state operation. * @param update update */ void stateUpdateComplete(Object input, IViewerUpdate update); diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IStatusMonitor.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IStatusMonitor.java index 6e63beb16..5c7b18f74 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IStatusMonitor.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IStatusMonitor.java @@ -42,20 +42,20 @@ import org.eclipse.core.runtime.IStatus; */ public interface IStatusMonitor extends IProgressMonitor { - /** - * Sets the status for a request, possibly <code>null</code>. - * When a request fails, the status indicates why the request failed. - * A <code>null</code> status is considered to be successful. - * - * @param status request status - */ - void setStatus(IStatus status); + /** + * Sets the status for a request, possibly <code>null</code>. + * When a request fails, the status indicates why the request failed. + * A <code>null</code> status is considered to be successful. + * + * @param status request status + */ + void setStatus(IStatus status); - /** - * Returns the status of this request, or <code>null</code>. - * - * @return request status - <code>null</code> is equivalent - * to an OK status - */ - IStatus getStatus(); + /** + * Returns the status of this request, or <code>null</code>. + * + * @return request status - <code>null</code> is equivalent + * to an OK status + */ + IStatus getStatus(); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/ITreeModelViewer.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/ITreeModelViewer.java index 8c0dc9887..b7ba38a9a 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/ITreeModelViewer.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/ITreeModelViewer.java @@ -31,251 +31,251 @@ import org.eclipse.swt.widgets.Display; */ public interface ITreeModelViewer extends ISelectionProvider { - /** - * Constant indicating that all levels of the tree should be expanded or - * collapsed. - * - * @see #setAutoExpandLevel(int) - * @see #getAutoExpandLevel() - */ - int ALL_LEVELS = -1; + /** + * Constant indicating that all levels of the tree should be expanded or + * collapsed. + * + * @see #setAutoExpandLevel(int) + * @see #getAutoExpandLevel() + */ + int ALL_LEVELS = -1; - /** - * Returns the Display object that this viewer is in. The - * display object can be used by clients to access the display thread - * to call the viewer methods. - * - * @return The display. - */ - Display getDisplay(); + /** + * Returns the Display object that this viewer is in. The + * display object can be used by clients to access the display thread + * to call the viewer methods. + * + * @return The display. + */ + Display getDisplay(); - /** - * Returns this viewer's presentation context. - * - * @return presentation context - */ - IPresentationContext getPresentationContext(); + /** + * Returns this viewer's presentation context. + * + * @return presentation context + */ + IPresentationContext getPresentationContext(); - /** - * Returns the current input of this viewer, or <code>null</code> - * if none. The viewer's input provides the "model" for the viewer's - * content. - * - * @return Input object - */ - Object getInput(); + /** + * Returns the current input of this viewer, or <code>null</code> + * if none. The viewer's input provides the "model" for the viewer's + * content. + * + * @return Input object + */ + Object getInput(); - /** - * Sets the input of this viewer. Setting the input resets the - * viewer's contents and triggers an update starting at the input - * element. - * - * @param object Input element, or <code>null</code> if none. - */ - void setInput(Object object); + /** + * Sets the input of this viewer. Setting the input resets the + * viewer's contents and triggers an update starting at the input + * element. + * + * @param object Input element, or <code>null</code> if none. + */ + void setInput(Object object); - /** - * Returns the current selection in viewer. - * - * @return selection object - */ - @Override ISelection getSelection(); + /** + * Returns the current selection in viewer. + * + * @return selection object + */ + @Override ISelection getSelection(); - /** - * Sets a new selection for this viewer and optionally makes it visible. - * The selection is not set if the model selection policy overrides the - * attempt to set the selection. - * - * @param selection the new selection - * @param reveal <code>true</code> if the selection is to be made - * visible, and <code>false</code> otherwise - * @param force <code>true</code> if the selection should override the - * model selection policy - */ - void setSelection(ISelection selection, boolean reveal, boolean force); + /** + * Sets a new selection for this viewer and optionally makes it visible. + * The selection is not set if the model selection policy overrides the + * attempt to set the selection. + * + * @param selection the new selection + * @param reveal <code>true</code> if the selection is to be made + * visible, and <code>false</code> otherwise + * @param force <code>true</code> if the selection should override the + * model selection policy + */ + void setSelection(ISelection selection, boolean reveal, boolean force); - /** - * Attempts to set the selection for this viewer and optionally makes it visible. - * The selection is not set if the model selection policy overrides the - * attempt to set the selection. - * - * @param selection the new selection - * @param reveal whether to make the selection visible after successfully setting - * the selection - * @param force whether to force the selection (override the model selection policy) - * @return <code>true</code> if the selection was set and <code>false</code> if the - * model selection policy overrides the selection attempt - */ - boolean trySelection(ISelection selection, boolean reveal, boolean force); + /** + * Attempts to set the selection for this viewer and optionally makes it visible. + * The selection is not set if the model selection policy overrides the + * attempt to set the selection. + * + * @param selection the new selection + * @param reveal whether to make the selection visible after successfully setting + * the selection + * @param force whether to force the selection (override the model selection policy) + * @return <code>true</code> if the selection was set and <code>false</code> if the + * model selection policy overrides the selection attempt + */ + boolean trySelection(ISelection selection, boolean reveal, boolean force); - /** - * Returns the auto-expand level. - * - * @return non-negative level, or <code>ALL_LEVELS</code> if all levels of - * the tree are expanded automatically - * @see #setAutoExpandLevel - */ - int getAutoExpandLevel(); + /** + * Returns the auto-expand level. + * + * @return non-negative level, or <code>ALL_LEVELS</code> if all levels of + * the tree are expanded automatically + * @see #setAutoExpandLevel + */ + int getAutoExpandLevel(); - /** - * Sets the auto-expand level to be used when the input of the viewer is set - * using {@link #setInput(Object)}. The value 0 means that there is no - * auto-expand; 1 means that the invisible root element is expanded (since - * most concrete implementations do not show the root element, there is usually - * no practical difference between using the values 0 and 1); 2 means that - * top-level elements are expanded, but not their children; 3 means that - * top-level elements are expanded, and their children, but not - * grandchildren; and so on. - * <p> - * The value <code>ALL_LEVELS</code> means that all subtrees should be - * expanded. - * </p> - * - * @param level - * non-negative level, or <code>ALL_LEVELS</code> to expand all - * levels of the tree - */ - void setAutoExpandLevel(int level); + /** + * Sets the auto-expand level to be used when the input of the viewer is set + * using {@link #setInput(Object)}. The value 0 means that there is no + * auto-expand; 1 means that the invisible root element is expanded (since + * most concrete implementations do not show the root element, there is usually + * no practical difference between using the values 0 and 1); 2 means that + * top-level elements are expanded, but not their children; 3 means that + * top-level elements are expanded, and their children, but not + * grandchildren; and so on. + * <p> + * The value <code>ALL_LEVELS</code> means that all subtrees should be + * expanded. + * </p> + * + * @param level + * non-negative level, or <code>ALL_LEVELS</code> to expand all + * levels of the tree + */ + void setAutoExpandLevel(int level); - /** - * Returns the label data for the given element and for the given column, - * Returns <code>null</code> if the given element is not found or is not - * materialized in the virtual viewer. Clients may listen to label update - * events to be notified when element labels are updated. - * - * @param path Path of the element. - * @param columnId ID of the column for which to return the label data. - * @return Label object containing the label information. Can be - * <code>null</code> if the given element is not found or is not - * materialized in the virtual viewer. - */ - ViewerLabel getElementLabel(TreePath path, String columnId); + /** + * Returns the label data for the given element and for the given column, + * Returns <code>null</code> if the given element is not found or is not + * materialized in the virtual viewer. Clients may listen to label update + * events to be notified when element labels are updated. + * + * @param path Path of the element. + * @param columnId ID of the column for which to return the label data. + * @return Label object containing the label information. Can be + * <code>null</code> if the given element is not found or is not + * materialized in the virtual viewer. + */ + ViewerLabel getElementLabel(TreePath path, String columnId); - /** - * Registers the specified listener for view update notifications. - * - * @param listener Listener to add - */ - void addViewerUpdateListener(IViewerUpdateListener listener); + /** + * Registers the specified listener for view update notifications. + * + * @param listener Listener to add + */ + void addViewerUpdateListener(IViewerUpdateListener listener); - /** - * Removes the specified listener from update notifications. - * - * @param listener Listener to remove - */ - void removeViewerUpdateListener(IViewerUpdateListener listener); + /** + * Removes the specified listener from update notifications. + * + * @param listener Listener to remove + */ + void removeViewerUpdateListener(IViewerUpdateListener listener); - /** - * Registers the specified listener for state update notifications. - * - * @param listener Listener to add - */ - void addStateUpdateListener(IStateUpdateListener listener); + /** + * Registers the specified listener for state update notifications. + * + * @param listener Listener to add + */ + void addStateUpdateListener(IStateUpdateListener listener); - /** - * Removes the specified listener from state update notifications. - * - * @param listener Listener to remove - */ - void removeStateUpdateListener(IStateUpdateListener listener); + /** + * Removes the specified listener from state update notifications. + * + * @param listener Listener to remove + */ + void removeStateUpdateListener(IStateUpdateListener listener); - /** - * Registers the specified listener for view label update notifications. - * - * @param listener Listener to add - */ - void addLabelUpdateListener(ILabelUpdateListener listener); + /** + * Registers the specified listener for view label update notifications. + * + * @param listener Listener to add + */ + void addLabelUpdateListener(ILabelUpdateListener listener); - /** - * Removes the specified listener from view label update notifications. - * - * @param listener Listener to remove - */ - void removeLabelUpdateListener(ILabelUpdateListener listener); + /** + * Removes the specified listener from view label update notifications. + * + * @param listener Listener to remove + */ + void removeLabelUpdateListener(ILabelUpdateListener listener); - /** - * Registers the given listener for model delta notification. - * This listener is called immediately after the viewer processes - * the delta. - * - * @param listener Listener to add - */ - void addModelChangedListener(IModelChangedListener listener); + /** + * Registers the given listener for model delta notification. + * This listener is called immediately after the viewer processes + * the delta. + * + * @param listener Listener to add + */ + void addModelChangedListener(IModelChangedListener listener); - /** - * Removes the given listener from model delta notification. - * - * @param listener Listener to remove - */ - void removeModelChangedListener(IModelChangedListener listener); + /** + * Removes the given listener from model delta notification. + * + * @param listener Listener to remove + */ + void removeModelChangedListener(IModelChangedListener listener); - /** - * Writes state information into a delta for the sub-tree at the given - * path. It adds delta nodes and IModelDelta.EXPAND and IModelDelta.SELECT - * as it parses the sub-tree. - * - * @param path Path where to start saving the state. - * @param delta The delta where the state is to be saved. - * @param flagsToSave The flags to preserve during the state save. The - * supported flags are <code>IModelDelta.SELECT</code>, - * <code>IModelDelta.EXPAND</code>, <code>IModelDelta.COLLAPSE</code>. - * @return Returns whether the state was saved for the given path. Will - * return <code>false</code> if an element at the given path cannot - * be found. - */ - boolean saveElementState(TreePath path, ModelDelta delta, int flagsToSave); + /** + * Writes state information into a delta for the sub-tree at the given + * path. It adds delta nodes and IModelDelta.EXPAND and IModelDelta.SELECT + * as it parses the sub-tree. + * + * @param path Path where to start saving the state. + * @param delta The delta where the state is to be saved. + * @param flagsToSave The flags to preserve during the state save. The + * supported flags are <code>IModelDelta.SELECT</code>, + * <code>IModelDelta.EXPAND</code>, <code>IModelDelta.COLLAPSE</code>. + * @return Returns whether the state was saved for the given path. Will + * return <code>false</code> if an element at the given path cannot + * be found. + */ + boolean saveElementState(TreePath path, ModelDelta delta, int flagsToSave); - /** - * Causes the viewer to process the given delta as if it came from a - * model proxy. This method is intended to be used to restore state - * saved using {@link #saveElementState(TreePath, ModelDelta, int)}. - * - * @param delta Delta to process. - */ - void updateViewer(IModelDelta delta); + /** + * Causes the viewer to process the given delta as if it came from a + * model proxy. This method is intended to be used to restore state + * saved using {@link #saveElementState(TreePath, ModelDelta, int)}. + * + * @param delta Delta to process. + */ + void updateViewer(IModelDelta delta); - /** - * Triggers an update of the given element and its children. If - * multiple instances of the given element are found in the tree, - * they will all be updated. - * - * @param element Element to update. - */ - void refresh(Object element); + /** + * Triggers an update of the given element and its children. If + * multiple instances of the given element are found in the tree, + * they will all be updated. + * + * @param element Element to update. + */ + void refresh(Object element); - /** - * Triggers a full update of all the elements in the tree. - */ - void refresh(); + /** + * Triggers a full update of all the elements in the tree. + */ + void refresh(); - /** - * Returns the paths at which the given element is found realized in viewer - * or an empty array if not found. - * - * @param element Element to find. - * @return Array of paths for given element. - */ - TreePath[] getElementPaths(Object element); + /** + * Returns the paths at which the given element is found realized in viewer + * or an empty array if not found. + * + * @param element Element to find. + * @return Array of paths for given element. + */ + TreePath[] getElementPaths(Object element); - /** - * Returns filters currently configured in viewer. - * - * @return filter array in viewer. - */ - ViewerFilter[] getFilters(); + /** + * Returns filters currently configured in viewer. + * + * @return filter array in viewer. + */ + ViewerFilter[] getFilters(); - /** - * Add a new filter to use in viewer. - * - * @param filter Filter to add. - */ - void addFilter(ViewerFilter filter); + /** + * Add a new filter to use in viewer. + * + * @param filter Filter to add. + */ + void addFilter(ViewerFilter filter); - /** - * Sets viewer filters to the filters in array. - * - * @param filters New filter array to use. - */ + /** + * Sets viewer filters to the filters in array. + * + * @param filters New filter array to use. + */ void setFilters(ViewerFilter... filters); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IViewerUpdate.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IViewerUpdate.java index a7141a47e..dda5ce605 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IViewerUpdate.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IViewerUpdate.java @@ -31,27 +31,27 @@ public interface IViewerUpdate extends IRequest { */ IPresentationContext getPresentationContext(); - /** - * Returns the model element associated with this request. - * - * @return associated model element - */ - Object getElement(); + /** + * Returns the model element associated with this request. + * + * @return associated model element + */ + Object getElement(); - /** - * Returns the viewer tree path to the model element associated with this - * request. An empty path indicates a root element. - * - * @return tree path, possibly empty - */ - TreePath getElementPath(); + /** + * Returns the viewer tree path to the model element associated with this + * request. An empty path indicates a root element. + * + * @return tree path, possibly empty + */ + TreePath getElementPath(); - /** - * Returns the element that was the viewer input at the time the - * request was made, possibly <code>null</code>. - * - * @return viewer input element, possibly <code>null</code> - * @since 3.4 - */ - Object getViewerInput(); + /** + * Returns the element that was the viewer input at the time the + * request was made, possibly <code>null</code>. + * + * @return viewer input element, possibly <code>null</code> + * @since 3.4 + */ + Object getViewerInput(); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IVirtualItemListener.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IVirtualItemListener.java index 41d449be7..bee1e2b4c 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IVirtualItemListener.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IVirtualItemListener.java @@ -22,20 +22,20 @@ package org.eclipse.debug.internal.ui.viewers.model.provisional; */ public interface IVirtualItemListener { - /** - * Called when the item has been shown in the virtual viewer's - * view-port. This indicates to the viewer that it should check - * the item's status and request needed data. - * - * @param item The item that was revealed. - */ - void revealed(VirtualItem item); + /** + * Called when the item has been shown in the virtual viewer's + * view-port. This indicates to the viewer that it should check + * the item's status and request needed data. + * + * @param item The item that was revealed. + */ + void revealed(VirtualItem item); - /** - * Called when an item is disposed. It tells the viewer to - * clean up any remaining mappings and cached data of this item. - * - * @param item The itam that was disposed. - */ - void disposed(VirtualItem item); + /** + * Called when an item is disposed. It tells the viewer to + * clean up any remaining mappings and cached data of this item. + * + * @param item The itam that was disposed. + */ + void disposed(VirtualItem item); }
\ No newline at end of file diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IVirtualItemValidator.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IVirtualItemValidator.java index d0054865b..981a842e0 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IVirtualItemValidator.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/IVirtualItemValidator.java @@ -23,19 +23,19 @@ package org.eclipse.debug.internal.ui.viewers.model.provisional; */ public interface IVirtualItemValidator { - /** - * Allows the validator to determine whether the given item is to be deemed - * visible in the virtual tree. - * - * @param item Item to be tested. - * @return returns true if the item should be considered visible. - */ - boolean isItemVisible(VirtualItem item); + /** + * Allows the validator to determine whether the given item is to be deemed + * visible in the virtual tree. + * + * @param item Item to be tested. + * @return returns true if the item should be considered visible. + */ + boolean isItemVisible(VirtualItem item); - /** - * Indicates that the viewer requested to reveal the given item in viewer. - * - * @param item Item to show. - */ - void showItem(VirtualItem item); + /** + * Indicates that the viewer requested to reveal the given item in viewer. + * + * @param item Item to show. + */ + void showItem(VirtualItem item); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/ModelDelta.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/ModelDelta.java index 369307a8f..cb147026e 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/ModelDelta.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/ModelDelta.java @@ -64,8 +64,8 @@ public class ModelDelta implements IModelDelta { */ public ModelDelta(Object element, Object replacement, int flags) { this(element, flags); - fReplacement = replacement; - } + fReplacement = replacement; + } /** * Constructs a new delta for the given element to be inserted at @@ -75,10 +75,10 @@ public class ModelDelta implements IModelDelta { * @param index insertion position * @param flags change flags */ - public ModelDelta(Object element, int index, int flags) { + public ModelDelta(Object element, int index, int flags) { this(element, flags); - fIndex = index; - } + fIndex = index; + } /** * Constructs a new delta for the given element at the specified index @@ -89,12 +89,12 @@ public class ModelDelta implements IModelDelta { * @param flags change flags * @param childCount number of children this node has */ - public ModelDelta(Object element, int index, int flags, int childCount) { + public ModelDelta(Object element, int index, int flags, int childCount) { this(element, index, flags); - fChildCount = childCount; - } + fChildCount = childCount; + } - @Override + @Override public Object getElement() { return fElement; } @@ -126,74 +126,74 @@ public class ModelDelta implements IModelDelta { * @return corresponding delta node, or <code>null</code> */ public ModelDelta getChildDelta(Object element) { - if (fNodesMap == null) { - mapNodes(); - } - Object nodeOrNodes = fNodesMap.get(element); - if (nodeOrNodes instanceof ModelDelta) { - return (ModelDelta)nodeOrNodes; - } else if (nodeOrNodes instanceof ModelDelta[]) { - return ((ModelDelta[])nodeOrNodes)[0]; - } - return null; + if (fNodesMap == null) { + mapNodes(); + } + Object nodeOrNodes = fNodesMap.get(element); + if (nodeOrNodes instanceof ModelDelta) { + return (ModelDelta)nodeOrNodes; + } else if (nodeOrNodes instanceof ModelDelta[]) { + return ((ModelDelta[])nodeOrNodes)[0]; + } + return null; } /** - * Returns the child delta for the given element and index, or <code>null</code> if none. - * - * @param element Element of the child delta to find - * @param index Index of the child delta to find. - * @return corresponding delta node, or <code>null</code> - * - * @since 3.8 - */ - public ModelDelta getChildDelta(Object element, int index) { - if (fNodesMap == null) { - mapNodes(); - } - Object nodeOrNodes = fNodesMap.get(element); - if (nodeOrNodes instanceof ModelDelta) { - ModelDelta node = (ModelDelta)nodeOrNodes; - if (index == node.getIndex()) { - return node; - } - } else if (nodeOrNodes instanceof ModelDelta[]) { - ModelDelta[] nodes = (ModelDelta[])nodeOrNodes; - for (int i = 0; i < nodes.length; i++) { - if (index == nodes[i].getIndex()) { - return nodes[i]; - } - } - } - return null; - } + * Returns the child delta for the given element and index, or <code>null</code> if none. + * + * @param element Element of the child delta to find + * @param index Index of the child delta to find. + * @return corresponding delta node, or <code>null</code> + * + * @since 3.8 + */ + public ModelDelta getChildDelta(Object element, int index) { + if (fNodesMap == null) { + mapNodes(); + } + Object nodeOrNodes = fNodesMap.get(element); + if (nodeOrNodes instanceof ModelDelta) { + ModelDelta node = (ModelDelta)nodeOrNodes; + if (index == node.getIndex()) { + return node; + } + } else if (nodeOrNodes instanceof ModelDelta[]) { + ModelDelta[] nodes = (ModelDelta[])nodeOrNodes; + for (int i = 0; i < nodes.length; i++) { + if (index == nodes[i].getIndex()) { + return nodes[i]; + } + } + } + return null; + } private void mapNodes() { - if (fNodesList == null) { + if (fNodesList == null) { fNodesMap = new HashMap<>(1); - return; - } - // Create a map with capacity for all child nodes. + return; + } + // Create a map with capacity for all child nodes. fNodesMap = new HashMap<>(fNodesList.size() * 4 / 3); - for (int i = 0; i < fNodesList.size(); i++) { - mapNode( fNodesList.get(i) ); - } + for (int i = 0; i < fNodesList.size(); i++) { + mapNode( fNodesList.get(i) ); + } } private void mapNode(ModelDelta node) { - Object oldValue = fNodesMap.put(node.getElement(), node); - if (oldValue instanceof ModelDelta) { - // Edge case: already a node for given element was added. - ModelDelta[] nodes = new ModelDelta[] { (ModelDelta)oldValue, node }; - fNodesMap.put(node.getElement(), nodes); - } else if (oldValue instanceof ModelDelta[]) { - // Even more remote case: multiple delta nodes for the same element were already added - ModelDelta[] oldNodes = (ModelDelta[])oldValue; - ModelDelta[] newNodes = new ModelDelta[oldNodes.length + 1]; - System.arraycopy(oldNodes, 0, newNodes, 0, oldNodes.length); - newNodes[newNodes.length - 1] = node; - fNodesMap.put(node.getElement(), newNodes); - } + Object oldValue = fNodesMap.put(node.getElement(), node); + if (oldValue instanceof ModelDelta) { + // Edge case: already a node for given element was added. + ModelDelta[] nodes = new ModelDelta[] { (ModelDelta)oldValue, node }; + fNodesMap.put(node.getElement(), nodes); + } else if (oldValue instanceof ModelDelta[]) { + // Even more remote case: multiple delta nodes for the same element were already added + ModelDelta[] oldNodes = (ModelDelta[])oldValue; + ModelDelta[] newNodes = new ModelDelta[oldNodes.length + 1]; + System.arraycopy(oldNodes, 0, newNodes, 0, oldNodes.length); + newNodes[newNodes.length - 1] = node; + fNodesMap.put(node.getElement(), newNodes); + } } @@ -207,51 +207,51 @@ public class ModelDelta implements IModelDelta { * @param flags change flags * @return newly created child delta */ - public ModelDelta addNode(Object element, Object replacement, int flags) { - ModelDelta node = new ModelDelta(element, replacement, flags); - node.setParent(this); - addDelta(node); - return node; - } - - /** - * Adds a child delta to this delta to insert the specified element at - * the given index, and returns the newly created child delta. - * - * @param element child element in insert - * @param index index of insertion - * @param flags change flags - * @return newly created child delta - */ - public ModelDelta addNode(Object element, int index, int flags) { - ModelDelta node = new ModelDelta(element, index, flags); - node.setParent(this); - addDelta(node); - return node; - } - - /** - * Adds a child delta to this delta at the specified index with the - * given number of children, and returns the newly created child delta. - * - * @param element child element in insert - * @param index index of the element relative to parent - * @param flags change flags - * @param numChildren the number of children the element has - * @return newly created child delta - */ - public ModelDelta addNode(Object element, int index, int flags, int numChildren) { - ModelDelta node = new ModelDelta(element, index, flags, numChildren); - node.setParent(this); - addDelta(node); - return node; - } - - /** - * Sets the parent delta of this delta - * - * @param node parent delta - */ + public ModelDelta addNode(Object element, Object replacement, int flags) { + ModelDelta node = new ModelDelta(element, replacement, flags); + node.setParent(this); + addDelta(node); + return node; + } + + /** + * Adds a child delta to this delta to insert the specified element at + * the given index, and returns the newly created child delta. + * + * @param element child element in insert + * @param index index of insertion + * @param flags change flags + * @return newly created child delta + */ + public ModelDelta addNode(Object element, int index, int flags) { + ModelDelta node = new ModelDelta(element, index, flags); + node.setParent(this); + addDelta(node); + return node; + } + + /** + * Adds a child delta to this delta at the specified index with the + * given number of children, and returns the newly created child delta. + * + * @param element child element in insert + * @param index index of the element relative to parent + * @param flags change flags + * @param numChildren the number of children the element has + * @return newly created child delta + */ + public ModelDelta addNode(Object element, int index, int flags, int numChildren) { + ModelDelta node = new ModelDelta(element, index, flags, numChildren); + node.setParent(this); + addDelta(node); + return node; + } + + /** + * Sets the parent delta of this delta + * + * @param node parent delta + */ void setParent(ModelDelta node) { fParent = node; } @@ -261,21 +261,21 @@ public class ModelDelta implements IModelDelta { return fParent; } - @Override + @Override public Object getReplacementElement() { - return fReplacement; - } + return fReplacement; + } - @Override + @Override public int getIndex() { - return fIndex; - } + return fIndex; + } @Override public IModelDelta[] getChildDeltas() { - if (fNodes == null) { - fNodes = fNodesList.toArray(new ModelDelta[fNodesList.size()]); - } + if (fNodes == null) { + fNodes = fNodesList.toArray(new ModelDelta[fNodesList.size()]); + } return fNodes; } @@ -283,11 +283,11 @@ public class ModelDelta implements IModelDelta { if (fNodesList == null) { fNodesList = new ArrayList<>(4); } - fNodesList.add(delta); - fNodes = null; - if (fNodesMap != null) { - mapNode(delta); - } + fNodesList.add(delta); + fNodes = null; + if (fNodesMap != null) { + mapNode(delta); + } } @Override @@ -300,11 +300,11 @@ public class ModelDelta implements IModelDelta { } private void appendDetail(String indent, StringBuffer buf, IModelDelta delta) { - buf.append(indent); + buf.append(indent); buf.append("Element: "); //$NON-NLS-1$ buf.append(delta.getElement()); buf.append('\n'); - buf.append(indent); + buf.append(indent); buf.append(" Flags: "); //$NON-NLS-1$ int flags = delta.getFlags(); if (flags == 0) { @@ -316,9 +316,9 @@ public class ModelDelta implements IModelDelta { if ((flags & IModelDelta.CONTENT) > 0) { buf.append("CONTENT | "); //$NON-NLS-1$ } - if ((flags & IModelDelta.COLLAPSE) > 0) { - buf.append("COLLAPSE | "); //$NON-NLS-1$ - } + if ((flags & IModelDelta.COLLAPSE) > 0) { + buf.append("COLLAPSE | "); //$NON-NLS-1$ + } if ((flags & IModelDelta.EXPAND) > 0) { buf.append("EXPAND | "); //$NON-NLS-1$ } @@ -344,15 +344,15 @@ public class ModelDelta implements IModelDelta { buf.append("UNINSTALL | "); //$NON-NLS-1$ } if ((flags & IModelDelta.REVEAL) > 0) { - buf.append("REVEAL | "); //$NON-NLS-1$ - } - if ((flags & IModelDelta.FORCE) > 0) { - buf.append("FORCE | "); //$NON-NLS-1$ - } + buf.append("REVEAL | "); //$NON-NLS-1$ + } + if ((flags & IModelDelta.FORCE) > 0) { + buf.append("FORCE | "); //$NON-NLS-1$ + } } buf.append('\n'); - buf.append(indent); + buf.append(indent); buf.append(" Index: "); //$NON-NLS-1$ buf.append(delta.getIndex()); buf.append(" Child Count: "); //$NON-NLS-1$ @@ -401,23 +401,23 @@ public class ModelDelta implements IModelDelta { fFlags = flags; } - /** - * Sets this delta's index - * - * @param index new index to set - * @since 3.6 - */ - public void setIndex(int index) { - fIndex = index; - } + /** + * Sets this delta's index + * + * @param index new index to set + * @since 3.6 + */ + public void setIndex(int index) { + fIndex = index; + } /** - * Sets this delta's child count. - * - * @param count new child count to set - */ - public void setChildCount(int count) { - fChildCount = count; - } + * Sets this delta's child count. + * + * @param count new child count to set + */ + public void setChildCount(int count) { + fChildCount = count; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/PresentationContext.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/PresentationContext.java index 6cf38ac23..7fed0f718 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/PresentationContext.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/PresentationContext.java @@ -40,63 +40,63 @@ import org.eclipse.ui.PlatformUI; */ public class PresentationContext implements IPresentationContext { - private static final String PRESENTATION_CONTEXT_PROPERTIES = "PRESENTATION_CONTEXT_PROPERTIES"; //$NON-NLS-1$ - private static final String BOOLEAN = "BOOLEAN"; //$NON-NLS-1$ - private static final String STRING = "STRING"; //$NON-NLS-1$ - private static final String INTEGER = "INTEGER"; //$NON-NLS-1$ - private static final String PERSISTABLE = "PERSISTABLE"; //$NON-NLS-1$ + private static final String PRESENTATION_CONTEXT_PROPERTIES = "PRESENTATION_CONTEXT_PROPERTIES"; //$NON-NLS-1$ + private static final String BOOLEAN = "BOOLEAN"; //$NON-NLS-1$ + private static final String STRING = "STRING"; //$NON-NLS-1$ + private static final String INTEGER = "INTEGER"; //$NON-NLS-1$ + private static final String PERSISTABLE = "PERSISTABLE"; //$NON-NLS-1$ - final private String fId; + final private String fId; final private ListenerList<IPropertyChangeListener> fListeners = new ListenerList<>(); final private Map<String, Object> fProperties = new HashMap<>(); - private IWorkbenchWindow fWindow; - private IWorkbenchPart fPart; - - /** - * Constructs a presentation context for the given id. - * - * @param id presentation context id - */ - public PresentationContext(String id) { - this (id, null, null); - } - - /** - * Constructs a presentation context for the given id and window. - * - * @param id presentation context id - * @param window presentation context window, may be <code>null</code> - */ - public PresentationContext(String id, IWorkbenchWindow window) { - this (id, window, null); - } - - /** - * Constructs a presentation context for the given id and part. - * The presentation context window is derived from the part. - * - * @param id presentation context id - * @param part presentation context part, may be <code>null</code> - */ - public PresentationContext(String id, IWorkbenchPart part) { - this (id, part == null ? null : part.getSite().getWorkbenchWindow(), part); - } - - /** - * Constructs a presentation context for the given id and part. - * The presentation context id and window are derived from the part. - * - * @param part presentation context part, can NOT be <code>null</code> - */ - public PresentationContext(IWorkbenchPart part) { - this (part.getSite().getId(), part.getSite().getWorkbenchWindow(), part); - } - - private PresentationContext(String id, IWorkbenchWindow window, IWorkbenchPart part) { - fId = id; - fWindow = window; - fPart = part; - } + private IWorkbenchWindow fWindow; + private IWorkbenchPart fPart; + + /** + * Constructs a presentation context for the given id. + * + * @param id presentation context id + */ + public PresentationContext(String id) { + this (id, null, null); + } + + /** + * Constructs a presentation context for the given id and window. + * + * @param id presentation context id + * @param window presentation context window, may be <code>null</code> + */ + public PresentationContext(String id, IWorkbenchWindow window) { + this (id, window, null); + } + + /** + * Constructs a presentation context for the given id and part. + * The presentation context window is derived from the part. + * + * @param id presentation context id + * @param part presentation context part, may be <code>null</code> + */ + public PresentationContext(String id, IWorkbenchPart part) { + this (id, part == null ? null : part.getSite().getWorkbenchWindow(), part); + } + + /** + * Constructs a presentation context for the given id and part. + * The presentation context id and window are derived from the part. + * + * @param part presentation context part, can NOT be <code>null</code> + */ + public PresentationContext(IWorkbenchPart part) { + this (part.getSite().getId(), part.getSite().getWorkbenchWindow(), part); + } + + private PresentationContext(String id, IWorkbenchWindow window, IWorkbenchPart part) { + fId = id; + fWindow = window; + fPart = part; + } @Override public String[] getColumns() { @@ -136,8 +136,8 @@ public class PresentationContext implements IPresentationContext { @Override public void dispose() { - fProperties.clear(); - setProperty(PROPERTY_DISPOSED, Boolean.TRUE); + fProperties.clear(); + setProperty(PROPERTY_DISPOSED, Boolean.TRUE); fListeners.clear(); // Free the reference to fWindow (Bug 321658). fWindow = null; @@ -168,18 +168,18 @@ public class PresentationContext implements IPresentationContext { @Override public void setProperty(String property, Object value) { - Object oldValue = null; - boolean propertySet = false; + Object oldValue = null; + boolean propertySet = false; synchronized (fProperties) { oldValue = fProperties.get(property); if (!isEqual(oldValue, value)) { - propertySet = true; + propertySet = true; fProperties.put(property, value); } } if (propertySet) { - firePropertyChange(property, oldValue, value); + firePropertyChange(property, oldValue, value); } } @@ -188,46 +188,46 @@ public class PresentationContext implements IPresentationContext { * @param memento Memento to restore from. */ public void initProperties(IMemento memento) { - IMemento presentationMemento = null; - - IMemento[] mementos = memento.getChildren(PRESENTATION_CONTEXT_PROPERTIES); - for (int i = 0; i < mementos.length; i++) { - if (getId().equals(mementos[i].getID())) { - presentationMemento = mementos[i]; - break; - } - } - - if (presentationMemento != null) { - IMemento[] stringProperties = presentationMemento.getChildren(STRING); - for (int i = 0; i < stringProperties.length; i++) { - fProperties.put(stringProperties[i].getID(), stringProperties[i].getString(STRING)); - } - - IMemento[] integerMementos = presentationMemento.getChildren(INTEGER); - for (int i = 0; i < integerMementos.length; i++) { - fProperties.put(integerMementos[i].getID(), integerMementos[i].getInteger(INTEGER)); - } - - IMemento[] booleanMementos = presentationMemento.getChildren(BOOLEAN); - for (int i = 0; i < booleanMementos.length; i++) { - fProperties.put(booleanMementos[i].getID(), booleanMementos[i].getBoolean(BOOLEAN)); - } - - IMemento[] persistableMementos = presentationMemento.getChildren(PERSISTABLE); - for (int i = 0; i < persistableMementos.length; i++) { - String factoryID = persistableMementos[i].getString(PERSISTABLE); - if (factoryID != null) { - IElementFactory factory = PlatformUI.getWorkbench().getElementFactory(factoryID); - if (factory != null) { - Object element = factory.createElement(persistableMementos[i]); - if (element != null) { - fProperties.put(persistableMementos[i].getID(), element); - } - } - } - } - } + IMemento presentationMemento = null; + + IMemento[] mementos = memento.getChildren(PRESENTATION_CONTEXT_PROPERTIES); + for (int i = 0; i < mementos.length; i++) { + if (getId().equals(mementos[i].getID())) { + presentationMemento = mementos[i]; + break; + } + } + + if (presentationMemento != null) { + IMemento[] stringProperties = presentationMemento.getChildren(STRING); + for (int i = 0; i < stringProperties.length; i++) { + fProperties.put(stringProperties[i].getID(), stringProperties[i].getString(STRING)); + } + + IMemento[] integerMementos = presentationMemento.getChildren(INTEGER); + for (int i = 0; i < integerMementos.length; i++) { + fProperties.put(integerMementos[i].getID(), integerMementos[i].getInteger(INTEGER)); + } + + IMemento[] booleanMementos = presentationMemento.getChildren(BOOLEAN); + for (int i = 0; i < booleanMementos.length; i++) { + fProperties.put(booleanMementos[i].getID(), booleanMementos[i].getBoolean(BOOLEAN)); + } + + IMemento[] persistableMementos = presentationMemento.getChildren(PERSISTABLE); + for (int i = 0; i < persistableMementos.length; i++) { + String factoryID = persistableMementos[i].getString(PERSISTABLE); + if (factoryID != null) { + IElementFactory factory = PlatformUI.getWorkbench().getElementFactory(factoryID); + if (factory != null) { + Object element = factory.createElement(persistableMementos[i]); + if (element != null) { + fProperties.put(persistableMementos[i].getID(), element); + } + } + } + } + } } /** @@ -235,27 +235,27 @@ public class PresentationContext implements IPresentationContext { * @param memento Memento to save to. */ public void saveProperites(IMemento memento) { - if (fProperties.isEmpty()) { - return; - } - IMemento properties = memento.createChild(PRESENTATION_CONTEXT_PROPERTIES, getId()); + if (fProperties.isEmpty()) { + return; + } + IMemento properties = memento.createChild(PRESENTATION_CONTEXT_PROPERTIES, getId()); for (Entry<String, Object> entry : fProperties.entrySet()) { - if (entry.getValue() instanceof String) { - IMemento value = properties.createChild(STRING, entry.getKey()); - value.putString(STRING, (String)entry.getValue()); - } else if (entry.getValue() instanceof Integer) { - IMemento value = properties.createChild(INTEGER, entry.getKey()); - value.putInteger(INTEGER, ((Integer)entry.getValue()).intValue()); - } else if (entry.getValue() instanceof Boolean) { - IMemento value = properties.createChild(BOOLEAN, entry.getKey()); - value.putBoolean(BOOLEAN, ((Boolean)entry.getValue()).booleanValue()); - } else if (entry.getValue() instanceof IPersistableElement) { - IPersistableElement persistable = (IPersistableElement)entry.getValue(); - IMemento value = properties.createChild(PERSISTABLE, entry.getKey()); - value.putString(PERSISTABLE, persistable.getFactoryId()); - persistable.saveState(value); - } - } + if (entry.getValue() instanceof String) { + IMemento value = properties.createChild(STRING, entry.getKey()); + value.putString(STRING, (String)entry.getValue()); + } else if (entry.getValue() instanceof Integer) { + IMemento value = properties.createChild(INTEGER, entry.getKey()); + value.putInteger(INTEGER, ((Integer)entry.getValue()).intValue()); + } else if (entry.getValue() instanceof Boolean) { + IMemento value = properties.createChild(BOOLEAN, entry.getKey()); + value.putBoolean(BOOLEAN, ((Boolean)entry.getValue()).booleanValue()); + } else if (entry.getValue() instanceof IPersistableElement) { + IPersistableElement persistable = (IPersistableElement)entry.getValue(); + IMemento value = properties.createChild(PERSISTABLE, entry.getKey()); + value.putString(PERSISTABLE, persistable.getFactoryId()); + persistable.saveState(value); + } + } } private boolean isEqual(Object a, Object b) { @@ -273,15 +273,15 @@ public class PresentationContext implements IPresentationContext { } } - @Override + @Override public IWorkbenchPart getPart() { - return fPart; - } + return fPart; + } - @Override + @Override public IWorkbenchWindow getWindow() { - return fWindow; - } + return fWindow; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/TreeModelViewer.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/TreeModelViewer.java index eb6492cd3..a1a498ecb 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/TreeModelViewer.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/TreeModelViewer.java @@ -128,7 +128,7 @@ public class TreeModelViewer extends InternalTreeModelViewer { /** * Initializes viewer state from the memento * - * @param memento the {@link IMemento} to read from + * @param memento the {@link IMemento} to read from */ @Override public void initState(IMemento memento) { @@ -138,16 +138,16 @@ public class TreeModelViewer extends InternalTreeModelViewer { /** * Save viewer state into the given memento. * - * @param memento the {@link IMemento} to save to + * @param memento the {@link IMemento} to save to */ @Override public void saveState(IMemento memento) { super.saveState(memento); } - /** - * @return Returns true if columns are being displayed currently. - */ + /** + * @return Returns true if columns are being displayed currently. + */ @Override public boolean isShowColumns() { return super.isShowColumns(); @@ -187,8 +187,8 @@ public class TreeModelViewer extends InternalTreeModelViewer { super.setVisibleColumns(ids); } - @Override + @Override public ViewerLabel getElementLabel(TreePath path, String columnId) { - return super.getElementLabel(path, columnId); - } + return super.getElementLabel(path, columnId); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/TreeModelViewerFilter.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/TreeModelViewerFilter.java index f48408a7b..54153c113 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/TreeModelViewerFilter.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/TreeModelViewerFilter.java @@ -30,12 +30,12 @@ import org.eclipse.jface.viewers.ViewerFilter; */ abstract public class TreeModelViewerFilter extends ViewerFilter { - /** - * Determines whether the filter applies to the given parent element. - * @return Returns true if the viewer should use the given filter on the - * given element. - * @param viewer The viewer that is using this filter to select elements. - * @param parentElement Parent element to check filter for. - */ - abstract public boolean isApplicable(ITreeModelViewer viewer, Object parentElement); + /** + * Determines whether the filter applies to the given parent element. + * @return Returns true if the viewer should use the given filter on the + * given element. + * @param viewer The viewer that is using this filter to select elements. + * @param parentElement Parent element to check filter for. + */ + abstract public boolean isApplicable(ITreeModelViewer viewer, Object parentElement); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/ViewerInputService.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/ViewerInputService.java index 51e385737..a52928877 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/ViewerInputService.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/ViewerInputService.java @@ -28,18 +28,18 @@ import org.eclipse.debug.internal.ui.viewers.model.ViewerInputUpdate; */ public class ViewerInputService { - /** - * An input object which will yield a null input element. - * - * @since 3.6 - */ - public final static Object NULL_INPUT = new IViewerInputProvider() { - @Override + /** + * An input object which will yield a null input element. + * + * @since 3.6 + */ + public final static Object NULL_INPUT = new IViewerInputProvider() { + @Override public void update(IViewerInputUpdate update) { - update.setInputElement(null); - update.done(); - } - }; + update.setInputElement(null); + update.done(); + } + }; // previous update request, cancelled when a new request comes in private IViewerInputUpdate fPendingUpdate = null; @@ -63,7 +63,7 @@ public class ViewerInputService { /** * Constructs a viewer input service for the given requester and presentation context. * - * @param viewer for which inputs are required + * @param viewer for which inputs are required * @param requestor client requesting viewer inputs */ public ViewerInputService(ITreeModelViewer viewer, IViewerInputRequestor requestor) { @@ -90,7 +90,7 @@ public class ViewerInputService { } if (provdier == null) { fPendingUpdate.setInputElement(source); - fPendingUpdate.done(); + fPendingUpdate.done(); } else { provdier.update(fPendingUpdate); } @@ -100,9 +100,9 @@ public class ViewerInputService { * Disposes this viewer input service, canceling any pending jobs. */ public synchronized void dispose() { - if (fPendingUpdate != null) { - fPendingUpdate.cancel(); - fPendingUpdate = null; - } + if (fPendingUpdate != null) { + fPendingUpdate.cancel(); + fPendingUpdate = null; + } } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/VirtualItem.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/VirtualItem.java index 0c817a971..0115e8b0a 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/VirtualItem.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/VirtualItem.java @@ -31,534 +31,534 @@ import org.eclipse.debug.internal.core.IInternalDebugCoreConstants; */ public class VirtualItem { - // Data keys for display attributes of an item. - public static String LABEL_KEY = "LABEL_KEY"; //$NON-NLS-1$ - public static String IMAGE_KEY = "IMAGE_KEY"; //$NON-NLS-1$ - public static String FONT_KEY = "FONT_KEY"; //$NON-NLS-1$ - public static String FOREGROUND_KEY = "FOREGROUND_KEY"; //$NON-NLS-1$ - public static String BACKGROUND_KEY = "BACKGROUND_KEY"; //$NON-NLS-1$ - - public static String ELEMENT_DATA_KEY = "element"; //$NON-NLS-1$ - - /** - * Index object of a tree item. It allows the indexes to be modified - * as items are inserted and removed. - */ + // Data keys for display attributes of an item. + public static String LABEL_KEY = "LABEL_KEY"; //$NON-NLS-1$ + public static String IMAGE_KEY = "IMAGE_KEY"; //$NON-NLS-1$ + public static String FONT_KEY = "FONT_KEY"; //$NON-NLS-1$ + public static String FOREGROUND_KEY = "FOREGROUND_KEY"; //$NON-NLS-1$ + public static String BACKGROUND_KEY = "BACKGROUND_KEY"; //$NON-NLS-1$ + + public static String ELEMENT_DATA_KEY = "element"; //$NON-NLS-1$ + + /** + * Index object of a tree item. It allows the indexes to be modified + * as items are inserted and removed. + */ public static class Index implements Comparable<Object> { - private Integer fIndexValue; + private Integer fIndexValue; - public Index(int index) { - fIndexValue = Integer.valueOf(index); - } + public Index(int index) { + fIndexValue = Integer.valueOf(index); + } - @Override + @Override public boolean equals(Object obj) { - return obj instanceof Index && ((Index)obj).fIndexValue.equals(fIndexValue); - } + return obj instanceof Index && ((Index)obj).fIndexValue.equals(fIndexValue); + } - @Override + @Override public int hashCode() { - return fIndexValue.hashCode(); - } + return fIndexValue.hashCode(); + } - public void increment() { - fIndexValue = Integer.valueOf(fIndexValue.intValue() + 1); - } + public void increment() { + fIndexValue = Integer.valueOf(fIndexValue.intValue() + 1); + } - public void decrement() { - fIndexValue = Integer.valueOf(fIndexValue.intValue() - 1); - } + public void decrement() { + fIndexValue = Integer.valueOf(fIndexValue.intValue() - 1); + } - public int intValue() { - return fIndexValue.intValue(); - } + public int intValue() { + return fIndexValue.intValue(); + } - @Override + @Override public int compareTo(Object obj) { - return obj instanceof Index ? fIndexValue.compareTo(((Index)obj).fIndexValue) : 0; - } + return obj instanceof Index ? fIndexValue.compareTo(((Index)obj).fIndexValue) : 0; + } - @Override + @Override public String toString() { - return fIndexValue.toString(); - } - } - - /** - * Parent items of this item. - */ - final private VirtualItem fParent; - - /** - * The index of this item. - */ - final private Index fIndex; - - /** - * Map of child items. The key to the map is the item's index, which - * must be the same object instance as the index in the item. The tree map - * keeps the items sorted while allowing indexes (keys) to be modified as - * child items are inserted and removed. - */ + return fIndexValue.toString(); + } + } + + /** + * Parent items of this item. + */ + final private VirtualItem fParent; + + /** + * The index of this item. + */ + final private Index fIndex; + + /** + * Map of child items. The key to the map is the item's index, which + * must be the same object instance as the index in the item. The tree map + * keeps the items sorted while allowing indexes (keys) to be modified as + * child items are inserted and removed. + */ private Map<Index, VirtualItem> fItems = new TreeMap<>(); - /** - * Flag indicating whether this item has child items. - */ - private boolean fHasItems = false; - - /** - * Indicates that this item has been expanded. It should only - * be set to <code>true</code> if fHasItems is <code>true</code>. - */ - private boolean fExpanded = false; - - /** - * The count of child items. <code>-1</code> indicates that the count - * is not known. - */ - private int fItemCount = -1; - - /** - * The data held by this item. It includes the element as well as the item - * display attributes. - */ + /** + * Flag indicating whether this item has child items. + */ + private boolean fHasItems = false; + + /** + * Indicates that this item has been expanded. It should only + * be set to <code>true</code> if fHasItems is <code>true</code>. + */ + private boolean fExpanded = false; + + /** + * The count of child items. <code>-1</code> indicates that the count + * is not known. + */ + private int fItemCount = -1; + + /** + * The data held by this item. It includes the element as well as the item + * display attributes. + */ private Map<String, Object> fData = new HashMap<>(1); - /** - * Flag indicating that the item needs to have it's label updated. - */ - private boolean fNeedsLabelUpdate = true; - - /** - * Flag indicating that the item's count needs to be updated. - */ - private boolean fNeedsCountUpdate = true; - - /** - * Flag indicating that the item's element needs to be updated. - */ - private boolean fNeedsDataUpdate = true; - - /** - * Indicates that this item has been disposed. - */ - private boolean fDisposed = false; - - - /** - * Virtual item constructor. - * @param parent parent virtual item - * @param index index of the item in the parent - */ - public VirtualItem(VirtualItem parent, Index index) { - fParent = parent; - fIndex = index; - } - - /** - * Clears the child item at the given index. - * @param index index of item to clear. - */ - public void clear(Index index) { - VirtualItem item = fItems.remove(index); - if (item != null) { - item.dispose(); - } - } - - /** - * Clears all child items. - * - * @since 3.9 - */ - public void clearAll() { - fData.clear(); + /** + * Flag indicating that the item needs to have it's label updated. + */ + private boolean fNeedsLabelUpdate = true; + + /** + * Flag indicating that the item's count needs to be updated. + */ + private boolean fNeedsCountUpdate = true; + + /** + * Flag indicating that the item's element needs to be updated. + */ + private boolean fNeedsDataUpdate = true; + + /** + * Indicates that this item has been disposed. + */ + private boolean fDisposed = false; + + + /** + * Virtual item constructor. + * @param parent parent virtual item + * @param index index of the item in the parent + */ + public VirtualItem(VirtualItem parent, Index index) { + fParent = parent; + fIndex = index; + } + + /** + * Clears the child item at the given index. + * @param index index of item to clear. + */ + public void clear(Index index) { + VirtualItem item = fItems.remove(index); + if (item != null) { + item.dispose(); + } + } + + /** + * Clears all child items. + * + * @since 3.9 + */ + public void clearAll() { + fData.clear(); for (VirtualItem item : fItems.values()) { item.dispose(); - } - fItems.clear(); - } - /** - * Returns the parent item. - * @return parent item. - */ - public VirtualItem getParent() { - return fParent; - } - - /** - * @return Returns the index of this item. - */ - public Index getIndex() { - return fIndex; - } - - /** - * Finds the given item in the child items of this element. - * @param element Data object of the item to be found. - * @return Item if found, <code>null</code> if not. - */ - public VirtualItem findItem(Object element) { + } + fItems.clear(); + } + /** + * Returns the parent item. + * @return parent item. + */ + public VirtualItem getParent() { + return fParent; + } + + /** + * @return Returns the index of this item. + */ + public Index getIndex() { + return fIndex; + } + + /** + * Finds the given item in the child items of this element. + * @param element Data object of the item to be found. + * @return Item if found, <code>null</code> if not. + */ + public VirtualItem findItem(Object element) { for (VirtualItem item : fItems.values()) { Object nextData = item.getData(); - if ( (element != null && element.equals(nextData)) || (element == null && nextData == null) ) { + if ( (element != null && element.equals(nextData)) || (element == null && nextData == null) ) { return item; - } - } - return null; - } - - /** - * @return Returns whether the data element of this item is stale. - */ - public boolean needsDataUpdate() { - return fNeedsDataUpdate; - } - - /** - * Marks the item as having a stale data item. - */ - public void setNeedsDataUpdate() { - fNeedsDataUpdate = true; - } - - /** - * Clears the stale status of the item's data element. - */ - public void clearNeedsDataUpdate() { - fNeedsDataUpdate = false; - } - - /** - * @return Returns whether the item has stale item count. - */ - public boolean needsCountUpdate() { - return fNeedsCountUpdate; - } - - /** - * Marks the item as having a stale child count. - */ - public void setNeedsCountUpdate() { - fNeedsCountUpdate = true; - fItemCount = -1; - } - - /** - * Clears the stale status of the item's child count. - */ - public void clearNeedsCountUpdate() { - fNeedsCountUpdate = false; - } - - /** - * @return Returns whether the item has stale label. - */ - public boolean needsLabelUpdate() { - return fNeedsLabelUpdate; - } - - /** - * Marks the item as having a stale label data. - */ - public void setNeedsLabelUpdate() { - fNeedsLabelUpdate = true; - } - - /** - * Clears the stale status of the item's label. - */ - public void clearNeedsLabelUpdate() { - fNeedsLabelUpdate = false; - } - - /** - * @return Returns whether the item has been disposed. - */ - public boolean isDisposed() { - return fDisposed; - } - - /** - * Disposes the item. - */ - public void dispose() { - clearAll(); - - fDisposed = true; - findTree().fireItemDisposed(this); - } - - /** - * @param key Key to retrieve data for. - * @return Returns item data corresponding to given key. - */ - public Object getData (String key) { - return fData.get(key); - } - - /** - * Sets given data element for given key. - * @param key Key for data. - * @param data Data value. - */ - public void setData(String key, Object data) { - fData.put(key, data); - } - - /** - * Sets the item's data element. - * @param data Item's new element. - */ - public void setData(Object data) { - fData.put(ELEMENT_DATA_KEY, data); - } - - /** - * @return Returns item's data element. - */ - public Object getData () { - return fData.get(ELEMENT_DATA_KEY); - } - - /** - * Marks the given item as expanded or collapsed. - * @param expanded If true, item will be marked as expanded. - */ - public void setExpanded(boolean expanded) { - if (fExpanded == expanded) { - return; - } - fExpanded = expanded; - - if (fExpanded && getItemCount() == -1) { - setNeedsCountUpdate(); - } - - - Assert.isTrue(!fExpanded || hasItems()); - - // If collapsed, make sure that all the children are collapsed as well. - if (!fExpanded) { + } + } + return null; + } + + /** + * @return Returns whether the data element of this item is stale. + */ + public boolean needsDataUpdate() { + return fNeedsDataUpdate; + } + + /** + * Marks the item as having a stale data item. + */ + public void setNeedsDataUpdate() { + fNeedsDataUpdate = true; + } + + /** + * Clears the stale status of the item's data element. + */ + public void clearNeedsDataUpdate() { + fNeedsDataUpdate = false; + } + + /** + * @return Returns whether the item has stale item count. + */ + public boolean needsCountUpdate() { + return fNeedsCountUpdate; + } + + /** + * Marks the item as having a stale child count. + */ + public void setNeedsCountUpdate() { + fNeedsCountUpdate = true; + fItemCount = -1; + } + + /** + * Clears the stale status of the item's child count. + */ + public void clearNeedsCountUpdate() { + fNeedsCountUpdate = false; + } + + /** + * @return Returns whether the item has stale label. + */ + public boolean needsLabelUpdate() { + return fNeedsLabelUpdate; + } + + /** + * Marks the item as having a stale label data. + */ + public void setNeedsLabelUpdate() { + fNeedsLabelUpdate = true; + } + + /** + * Clears the stale status of the item's label. + */ + public void clearNeedsLabelUpdate() { + fNeedsLabelUpdate = false; + } + + /** + * @return Returns whether the item has been disposed. + */ + public boolean isDisposed() { + return fDisposed; + } + + /** + * Disposes the item. + */ + public void dispose() { + clearAll(); + + fDisposed = true; + findTree().fireItemDisposed(this); + } + + /** + * @param key Key to retrieve data for. + * @return Returns item data corresponding to given key. + */ + public Object getData (String key) { + return fData.get(key); + } + + /** + * Sets given data element for given key. + * @param key Key for data. + * @param data Data value. + */ + public void setData(String key, Object data) { + fData.put(key, data); + } + + /** + * Sets the item's data element. + * @param data Item's new element. + */ + public void setData(Object data) { + fData.put(ELEMENT_DATA_KEY, data); + } + + /** + * @return Returns item's data element. + */ + public Object getData () { + return fData.get(ELEMENT_DATA_KEY); + } + + /** + * Marks the given item as expanded or collapsed. + * @param expanded If true, item will be marked as expanded. + */ + public void setExpanded(boolean expanded) { + if (fExpanded == expanded) { + return; + } + fExpanded = expanded; + + if (fExpanded && getItemCount() == -1) { + setNeedsCountUpdate(); + } + + + Assert.isTrue(!fExpanded || hasItems()); + + // If collapsed, make sure that all the children are collapsed as well. + if (!fExpanded) { for (VirtualItem item : fItems.values()) { item.setExpanded(expanded); - } - } - } - - /** - * @return Returns item's expanded state. - */ - public boolean getExpanded() { - return fExpanded; - } - - /** - * Sets the flag indicating whether item has child items. - * @param hasChildren Set to true if child has items. - */ - public void setHasItems(boolean hasChildren) { - fHasItems = hasChildren; - if (!fHasItems) { - if (getItemCount() != 0) { - setItemCount(0); - } - } else if (getItemCount() == 0) { - setItemCount(-1); - } - } - - /** - * @return Returns true if item has child items. - */ - public boolean hasItems() { - return fHasItems; - } - - /** - * Sets the item's child count. - * @param count Child count. - */ - public void setItemCount(int count) { - fItemCount = count; + } + } + } + + /** + * @return Returns item's expanded state. + */ + public boolean getExpanded() { + return fExpanded; + } + + /** + * Sets the flag indicating whether item has child items. + * @param hasChildren Set to true if child has items. + */ + public void setHasItems(boolean hasChildren) { + fHasItems = hasChildren; + if (!fHasItems) { + if (getItemCount() != 0) { + setItemCount(0); + } + } else if (getItemCount() == 0) { + setItemCount(-1); + } + } + + /** + * @return Returns true if item has child items. + */ + public boolean hasItems() { + return fHasItems; + } + + /** + * Sets the item's child count. + * @param count Child count. + */ + public void setItemCount(int count) { + fItemCount = count; for (Iterator<Entry<Index, VirtualItem>> itr = fItems.entrySet().iterator(); itr.hasNext();) { Entry<Index, VirtualItem> entry = itr.next(); - int index = entry.getKey().intValue(); - if (index >= count) { - VirtualItem item = entry.getValue(); - item.dispose(); - itr.remove(); - } - } - if (fItemCount == 0) { - if (hasItems()) { - setHasItems(false); - } - if (getExpanded()) { - setExpanded(false); - } - } else { - if (!hasItems()) { - setHasItems(true); - } - } - } - - /** - * @return Returns item's child count. - */ - public int getItemCount() { - return fItemCount; - } - - /** - * Returns the child item at given index. Child item is created if needed. - * - * @param index Index of the child item. - * @return Child item. - */ - public VirtualItem getItem(Index index) { - ensureItems(); - - VirtualItem item = fItems.get(index); - if (item == null) { - item = new VirtualItem(this, index); - fItems.put(index, item); - } - return item; - } - - /** - * @return Returns true if any of the child items need a data update. - */ - public boolean childrenNeedDataUpdate() { - if (getItemCount() == 0) { - return false; - } - if (fItems == null || fItems.size() != fItemCount) { - return true; - } + int index = entry.getKey().intValue(); + if (index >= count) { + VirtualItem item = entry.getValue(); + item.dispose(); + itr.remove(); + } + } + if (fItemCount == 0) { + if (hasItems()) { + setHasItems(false); + } + if (getExpanded()) { + setExpanded(false); + } + } else { + if (!hasItems()) { + setHasItems(true); + } + } + } + + /** + * @return Returns item's child count. + */ + public int getItemCount() { + return fItemCount; + } + + /** + * Returns the child item at given index. Child item is created if needed. + * + * @param index Index of the child item. + * @return Child item. + */ + public VirtualItem getItem(Index index) { + ensureItems(); + + VirtualItem item = fItems.get(index); + if (item == null) { + item = new VirtualItem(this, index); + fItems.put(index, item); + } + return item; + } + + /** + * @return Returns true if any of the child items need a data update. + */ + public boolean childrenNeedDataUpdate() { + if (getItemCount() == 0) { + return false; + } + if (fItems == null || fItems.size() != fItemCount) { + return true; + } for (VirtualItem child : fItems.values()) { - if (child.needsDataUpdate()) { - return true; - } - } - return false; - } - - /** - * Returns an array of current child items. The returned array contains - * only the items that have been created. It may not contain as many items as the - * item count. - * - * @return Child items array. - */ - public VirtualItem[] getItems() { - return fItems.values().toArray(new VirtualItem[fItems.size()]); - } - - /** - * Adds a child item at the given index position. - * @param position The index position to inser the new item at. - * @return Returns the added item. - */ - public VirtualItem addItem(int position) { - if (!fHasItems) { - fHasItems = true; - } - if (fItemCount < 0) { - fItemCount = 0; - } - - // Increment all items with an index higher than the given position. - fItemCount++; - ensureItems(); + if (child.needsDataUpdate()) { + return true; + } + } + return false; + } + + /** + * Returns an array of current child items. The returned array contains + * only the items that have been created. It may not contain as many items as the + * item count. + * + * @return Child items array. + */ + public VirtualItem[] getItems() { + return fItems.values().toArray(new VirtualItem[fItems.size()]); + } + + /** + * Adds a child item at the given index position. + * @param position The index position to inser the new item at. + * @return Returns the added item. + */ + public VirtualItem addItem(int position) { + if (!fHasItems) { + fHasItems = true; + } + if (fItemCount < 0) { + fItemCount = 0; + } + + // Increment all items with an index higher than the given position. + fItemCount++; + ensureItems(); for (Index childIndex : fItems.keySet()) { - if (childIndex.intValue() >= position) { - childIndex.increment(); - } - } - - // Note: the same index object used to create the item has to - // be used as the key into the map. - Index childIndex = new Index(position); - VirtualItem newChild = new VirtualItem(this, childIndex); - fItems.put(childIndex, newChild); - return newChild; - } - - /** - * Removes the item at the given index. - * @param position Index of the item to remove. - */ - public void remove(Index position) { - fItemCount--; - if (fItemCount < 0) { - fHasItems = false; - } - - ensureItems(); - - VirtualItem removedItem = null; + if (childIndex.intValue() >= position) { + childIndex.increment(); + } + } + + // Note: the same index object used to create the item has to + // be used as the key into the map. + Index childIndex = new Index(position); + VirtualItem newChild = new VirtualItem(this, childIndex); + fItems.put(childIndex, newChild); + return newChild; + } + + /** + * Removes the item at the given index. + * @param position Index of the item to remove. + */ + public void remove(Index position) { + fItemCount--; + if (fItemCount < 0) { + fHasItems = false; + } + + ensureItems(); + + VirtualItem removedItem = null; for (Iterator<Entry<Index, VirtualItem>> itr = fItems.entrySet().iterator(); itr.hasNext();) { Entry<Index, VirtualItem> entry = itr.next(); - Index childIndex = entry.getKey(); - if (childIndex.intValue() > position.intValue()) { - childIndex.decrement(); - } else if (childIndex.intValue() == position.intValue()) { - removedItem = entry.getValue(); - removedItem.dispose(); - itr.remove(); - } - } - } - - private void ensureItems() { - if (fItems == null) { + Index childIndex = entry.getKey(); + if (childIndex.intValue() > position.intValue()) { + childIndex.decrement(); + } else if (childIndex.intValue() == position.intValue()) { + removedItem = entry.getValue(); + removedItem.dispose(); + itr.remove(); + } + } + } + + private void ensureItems() { + if (fItems == null) { fItems = new HashMap<>(Math.max(1, Math.min(fItemCount, 16))); - } - } - - private VirtualTree findTree() { - VirtualItem item = this; - while (!(item instanceof VirtualTree)) { - item = item.fParent; - } - return (VirtualTree)item; - } - - @Override + } + } + + private VirtualTree findTree() { + VirtualItem item = this; + while (!(item instanceof VirtualTree)) { + item = item.fParent; + } + return (VirtualTree)item; + } + + @Override public String toString() { - StringBuffer buffer = new StringBuffer(); - toStringItem(buffer, IInternalDebugCoreConstants.EMPTY_STRING); - return buffer.toString(); - } - - void toStringItem(StringBuffer buffer, String indent) { - buffer.append(indent); - buffer.append(toStringElement()); - buffer.append("\n"); //$NON-NLS-1$ - indent = indent + " "; //$NON-NLS-1$ - for (int i = 0; i < fItemCount; i++) { - VirtualItem item = fItems.get(new Index(i)); - if (item != null) { - item.toStringItem(buffer, indent); - } else { - buffer.append("<no item>\n"); //$NON-NLS-1$ - } - } - } - - private String toStringElement() { - String[] label = (String[])fData.get(LABEL_KEY); - if (label != null && label.length != 0) { - return label[0]; - } - Object data = fData.get(ELEMENT_DATA_KEY); - if (data != null) { - return data.toString(); - } - return "<no data>"; //$NON-NLS-1$ - } + StringBuffer buffer = new StringBuffer(); + toStringItem(buffer, IInternalDebugCoreConstants.EMPTY_STRING); + return buffer.toString(); + } + + void toStringItem(StringBuffer buffer, String indent) { + buffer.append(indent); + buffer.append(toStringElement()); + buffer.append("\n"); //$NON-NLS-1$ + indent = indent + " "; //$NON-NLS-1$ + for (int i = 0; i < fItemCount; i++) { + VirtualItem item = fItems.get(new Index(i)); + if (item != null) { + item.toStringItem(buffer, indent); + } else { + buffer.append("<no item>\n"); //$NON-NLS-1$ + } + } + } + + private String toStringElement() { + String[] label = (String[])fData.get(LABEL_KEY); + if (label != null && label.length != 0) { + return label[0]; + } + Object data = fData.get(ELEMENT_DATA_KEY); + if (data != null) { + return data.toString(); + } + return "<no data>"; //$NON-NLS-1$ + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/VirtualTree.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/VirtualTree.java index 6eca256f3..3395b071e 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/VirtualTree.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/VirtualTree.java @@ -29,193 +29,193 @@ import org.eclipse.swt.SWT; */ public class VirtualTree extends VirtualItem { - /** - * Lazy virtual tree does not retrieve elements or labels, - * except for the selected elements. - */ - private boolean fLazy; + /** + * Lazy virtual tree does not retrieve elements or labels, + * except for the selected elements. + */ + private boolean fLazy; - private IVirtualItemValidator fValidator; + private IVirtualItemValidator fValidator; - private class SelectedItemValidator implements IVirtualItemValidator { - @Override + private class SelectedItemValidator implements IVirtualItemValidator { + @Override public boolean isItemVisible(VirtualItem item) { - // visible items. For now only mark the selected items as visible. - for (int i = 0; i < fSelection.length; i++) { - VirtualItem selectionItem = fSelection[i]; - while (selectionItem != null) { - if (item.equals(selectionItem)) { - return true; - } - selectionItem = selectionItem.getParent(); - } - } - return false; - } - - @Override + // visible items. For now only mark the selected items as visible. + for (int i = 0; i < fSelection.length; i++) { + VirtualItem selectionItem = fSelection[i]; + while (selectionItem != null) { + if (item.equals(selectionItem)) { + return true; + } + selectionItem = selectionItem.getParent(); + } + } + return false; + } + + @Override public void showItem(VirtualItem item) { - } - } + } + } - /** - * Set of listeners of the virtual tree. - */ + /** + * Set of listeners of the virtual tree. + */ private Set<IVirtualItemListener> fVirtualItemListeners = new HashSet<>(1); - /** - * The currently selected items. This array contains only - * the leaf items which are selected. - */ - private VirtualItem[] fSelection = new VirtualItem[0]; - - /** - * Constructs the virtual tree with the given style and validator. - * - * @param style The style flag. Only SWT.VIRTUAL flag is used. - * @param validator Item validator used to determine item visibility. - */ - public VirtualTree(int style, IVirtualItemValidator validator) { - super(null, new VirtualItem.Index(0)); - fLazy = (style & SWT.VIRTUAL) != 0; - if (fLazy && validator == null) { - fValidator = new SelectedItemValidator(); - } else { - fValidator = validator; - } - clearNeedsLabelUpdate(); - clearNeedsDataUpdate(); - } - - /** - * Disposes the virtual tree. - */ - @Override + /** + * The currently selected items. This array contains only + * the leaf items which are selected. + */ + private VirtualItem[] fSelection = new VirtualItem[0]; + + /** + * Constructs the virtual tree with the given style and validator. + * + * @param style The style flag. Only SWT.VIRTUAL flag is used. + * @param validator Item validator used to determine item visibility. + */ + public VirtualTree(int style, IVirtualItemValidator validator) { + super(null, new VirtualItem.Index(0)); + fLazy = (style & SWT.VIRTUAL) != 0; + if (fLazy && validator == null) { + fValidator = new SelectedItemValidator(); + } else { + fValidator = validator; + } + clearNeedsLabelUpdate(); + clearNeedsDataUpdate(); + } + + /** + * Disposes the virtual tree. + */ + @Override public void dispose() { - super.dispose(); - fVirtualItemListeners.clear(); - } + super.dispose(); + fVirtualItemListeners.clear(); + } - @Override + @Override public void setNeedsCountUpdate() { - super.setNeedsCountUpdate(); - clearNeedsLabelUpdate(); - clearNeedsDataUpdate(); - } + super.setNeedsCountUpdate(); + clearNeedsLabelUpdate(); + clearNeedsDataUpdate(); + } - @Override + @Override public void setNeedsLabelUpdate() { - // no-op - } + // no-op + } - @Override + @Override public void setData(String key, Object data) { - super.setData(key, data); - if (data == null) { - clearNeedsDataUpdate(); - } - } - - /** - * Adds a listener for when virtual items are revealed in the view. - * @param listener Listener to add to list of listeners. - */ - public void addItemListener(IVirtualItemListener listener) { - fVirtualItemListeners.add(listener); - } - - public void removeItemListener(IVirtualItemListener listener) { - fVirtualItemListeners.remove(listener); - } - - public VirtualItem[] getSelection() { - return fSelection; - } - - public void setSelection(VirtualItem[] items) { - fSelection = items; - } - - public void showItem(VirtualItem item) { - if (fValidator != null) { - fValidator.showItem(item); - } - } - - public void fireItemDisposed(VirtualItem item) { + super.setData(key, data); + if (data == null) { + clearNeedsDataUpdate(); + } + } + + /** + * Adds a listener for when virtual items are revealed in the view. + * @param listener Listener to add to list of listeners. + */ + public void addItemListener(IVirtualItemListener listener) { + fVirtualItemListeners.add(listener); + } + + public void removeItemListener(IVirtualItemListener listener) { + fVirtualItemListeners.remove(listener); + } + + public VirtualItem[] getSelection() { + return fSelection; + } + + public void setSelection(VirtualItem[] items) { + fSelection = items; + } + + public void showItem(VirtualItem item) { + if (fValidator != null) { + fValidator.showItem(item); + } + } + + public void fireItemDisposed(VirtualItem item) { for (IVirtualItemListener listener : fVirtualItemListeners) { listener.disposed(item); - } - } + } + } - public void fireItemRevealed(VirtualItem item) { + public void fireItemRevealed(VirtualItem item) { for (IVirtualItemListener listener : fVirtualItemListeners) { listener.revealed(item); - } - } + } + } - @Override + @Override public void setData(Object data) { - super.setData(data); - // The root item always has children as long as the input is non-null, - // so that it should be expanded. - setHasItems(data != null); - } + super.setData(data); + // The root item always has children as long as the input is non-null, + // so that it should be expanded. + setHasItems(data != null); + } - @Override + @Override public void setHasItems(boolean hasChildren) { - super.setHasItems(hasChildren); - // The root item is always expanded as long as it has children. - if (hasChildren) { - setExpanded(true); - } - } - - /** - * Returns whether the given item is considered visible by the tree as - * determined by its virtual item validator. - * - * @param item Item to check. - * @return true if items is vislble. - * @see IVirtualItemValidator - */ - public boolean isItemVisible(VirtualItem item) { - if (fLazy) { - return fValidator.isItemVisible(item); - } - return true; - } - - /** - * Validates the entire tree. - */ - public void validate() { - validate(VirtualTree.this); - } - - /** - * Validates the item and its children, identifying children which were - * revealed and need to be updated. - * - * @param item The item which to validate. - */ - public void validate(VirtualItem item) { - if (item.needsDataUpdate()) { - if (isItemVisible(item)) { - fireItemRevealed(item); - } - } else if (item.getData() != null) { - if ( item.needsLabelUpdate() || (item.needsCountUpdate() && item.hasItems() && item.getExpanded()) ) { - if (isItemVisible(item)) { - fireItemRevealed(item); - } - } - - if (item.getData() != null && item.getItemCount() > 0 && item.getExpanded()) { - for (int i = 0; i < item.getItemCount(); i++) { - validate(item.getItem(new Index(i))); - } - } - } - } + super.setHasItems(hasChildren); + // The root item is always expanded as long as it has children. + if (hasChildren) { + setExpanded(true); + } + } + + /** + * Returns whether the given item is considered visible by the tree as + * determined by its virtual item validator. + * + * @param item Item to check. + * @return true if items is vislble. + * @see IVirtualItemValidator + */ + public boolean isItemVisible(VirtualItem item) { + if (fLazy) { + return fValidator.isItemVisible(item); + } + return true; + } + + /** + * Validates the entire tree. + */ + public void validate() { + validate(VirtualTree.this); + } + + /** + * Validates the item and its children, identifying children which were + * revealed and need to be updated. + * + * @param item The item which to validate. + */ + public void validate(VirtualItem item) { + if (item.needsDataUpdate()) { + if (isItemVisible(item)) { + fireItemRevealed(item); + } + } else if (item.getData() != null) { + if ( item.needsLabelUpdate() || (item.needsCountUpdate() && item.hasItems() && item.getExpanded()) ) { + if (isItemVisible(item)) { + fireItemRevealed(item); + } + } + + if (item.getData() != null && item.getItemCount() > 0 && item.getExpanded()) { + for (int i = 0; i < item.getItemCount(); i++) { + validate(item.getItem(new Index(i))); + } + } + } + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/VirtualTreeModelViewer.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/VirtualTreeModelViewer.java index c822846f8..1913181ba 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/VirtualTreeModelViewer.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/provisional/VirtualTreeModelViewer.java @@ -39,187 +39,187 @@ import org.eclipse.ui.IMemento; public class VirtualTreeModelViewer extends InternalVirtualTreeModelViewer { - /** - * Creates a virtual tree model viewer. - * @param display Display used by the viewer to call the data providers - * on the UI thread. - * @param style Stlye flags. - * @param context Viewer's presentation context. - */ - public VirtualTreeModelViewer(Display display, int style, IPresentationContext context) { - super(display, style, context, null); - } - - /** - * Creates a virtual tree model viewer. - * @param display Display used by the viewer to call the data providers - * on the UI thread. - * @param style style flags. - * @param context Viewer's presentation context. - * @param validator Optional validator that is used to determine which items should be - * considered visible when SWT.VIRTUAL style is used. If <code>null</code> then the - * standard validator is used that updates only the selected items. - * - * @since 3.8 - */ - public VirtualTreeModelViewer(Display display, int style, IPresentationContext context, IVirtualItemValidator validator) { - super(display, style, context, validator); - } - - /** - * Returns this viewer's presentation context. - * - * @return presentation context - */ - @Override + /** + * Creates a virtual tree model viewer. + * @param display Display used by the viewer to call the data providers + * on the UI thread. + * @param style Stlye flags. + * @param context Viewer's presentation context. + */ + public VirtualTreeModelViewer(Display display, int style, IPresentationContext context) { + super(display, style, context, null); + } + + /** + * Creates a virtual tree model viewer. + * @param display Display used by the viewer to call the data providers + * on the UI thread. + * @param style style flags. + * @param context Viewer's presentation context. + * @param validator Optional validator that is used to determine which items should be + * considered visible when SWT.VIRTUAL style is used. If <code>null</code> then the + * standard validator is used that updates only the selected items. + * + * @since 3.8 + */ + public VirtualTreeModelViewer(Display display, int style, IPresentationContext context, IVirtualItemValidator validator) { + super(display, style, context, validator); + } + + /** + * Returns this viewer's presentation context. + * + * @return presentation context + */ + @Override public IPresentationContext getPresentationContext() { - return super.getPresentationContext(); - } - - /** - * Registers the given listener for model delta notification. - * - * @param listener model delta listener - */ - @Override + return super.getPresentationContext(); + } + + /** + * Registers the given listener for model delta notification. + * + * @param listener model delta listener + */ + @Override public void addModelChangedListener(IModelChangedListener listener) { - super.addModelChangedListener(listener); - } - - /** - * Unregisters the given listener from model delta notification. - * - * @param listener model delta listener - */ - @Override + super.addModelChangedListener(listener); + } + + /** + * Unregisters the given listener from model delta notification. + * + * @param listener model delta listener + */ + @Override public void removeModelChangedListener(IModelChangedListener listener) { - super.removeModelChangedListener(listener); - } - - /** - * Registers the specified listener for view update notifications. - * - * @param listener listener - */ - @Override + super.removeModelChangedListener(listener); + } + + /** + * Registers the specified listener for view update notifications. + * + * @param listener listener + */ + @Override public void addViewerUpdateListener(IViewerUpdateListener listener) { - super.addViewerUpdateListener(listener); - } - - /** - * Removes the specified listener from update notifications. - * - * @param listener listener - */ - @Override + super.addViewerUpdateListener(listener); + } + + /** + * Removes the specified listener from update notifications. + * + * @param listener listener + */ + @Override public void removeViewerUpdateListener(IViewerUpdateListener listener) { - super.removeViewerUpdateListener(listener); - } - - /** - * Returns whether columns can be toggled on/off for this viewer's current - * input element. - * - * @return whether columns can be toggled on/off - */ - @Override + super.removeViewerUpdateListener(listener); + } + + /** + * Returns whether columns can be toggled on/off for this viewer's current + * input element. + * + * @return whether columns can be toggled on/off + */ + @Override public boolean canToggleColumns() { - return super.canToggleColumns(); - } - - /** - * Returns the current column presentation for this viewer, or <code>null</code> - * if none. - * - * @return column presentation or <code>null</code> - */ - @Override + return super.canToggleColumns(); + } + + /** + * Returns the current column presentation for this viewer, or <code>null</code> + * if none. + * + * @return column presentation or <code>null</code> + */ + @Override public IColumnPresentation getColumnPresentation() { - return super.getColumnPresentation(); - } - - /** - * Returns identifiers of the visible columns in this viewer, or <code>null</code> - * if there are currently no columns. - * - * @return visible columns identifiers or <code>null</code> - */ - @Override + return super.getColumnPresentation(); + } + + /** + * Returns identifiers of the visible columns in this viewer, or <code>null</code> + * if there are currently no columns. + * + * @return visible columns identifiers or <code>null</code> + */ + @Override public String[] getVisibleColumns() { - return super.getVisibleColumns(); - } - - /** - * Initializes viewer state from the memento - * - * @param memento the {@link IMemento} to read from - */ - @Override + return super.getVisibleColumns(); + } + + /** + * Initializes viewer state from the memento + * + * @param memento the {@link IMemento} to read from + */ + @Override public void initState(IMemento memento) { - super.initState(memento); - } - - /** - * Save viewer state into the given memento. - * - * @param memento the {@link IMemento} to save to - */ - @Override + super.initState(memento); + } + + /** + * Save viewer state into the given memento. + * + * @param memento the {@link IMemento} to save to + */ + @Override public void saveState(IMemento memento) { - super.saveState(memento); - } + super.saveState(memento); + } - /** - * @return Returns true if columns are being displayed currently. - */ - @Override + /** + * @return Returns true if columns are being displayed currently. + */ + @Override public boolean isShowColumns() { - return super.isShowColumns(); - } - - /** - * Toggles columns on/off for the current column presentation, if any. - * - * @param show whether to show columns if the current input supports - * columns - */ - @Override + return super.isShowColumns(); + } + + /** + * Toggles columns on/off for the current column presentation, if any. + * + * @param show whether to show columns if the current input supports + * columns + */ + @Override public void setShowColumns(boolean show) { - super.setShowColumns(show); - } - - /** - * Sets the visible columns for this viewer. Id's correspond to - * column identifiers from a column presentation. Use <code>null</code> - * or an empty collection to display default columns for the current - * column presentation. Only affects the current column presentation. - * - * @param ids column identifiers or <code>null</code> - */ - @Override + super.setShowColumns(show); + } + + /** + * Sets the visible columns for this viewer. Id's correspond to + * column identifiers from a column presentation. Use <code>null</code> + * or an empty collection to display default columns for the current + * column presentation. Only affects the current column presentation. + * + * @param ids column identifiers or <code>null</code> + */ + @Override public void setVisibleColumns(String[] ids) { - super.setVisibleColumns(ids); - } + super.setVisibleColumns(ids); + } - @Override + @Override public void updateViewer(IModelDelta delta) { - super.updateViewer(delta); - } + super.updateViewer(delta); + } - @Override + @Override public ViewerLabel getElementLabel(TreePath path, String columnId) { - return super.getElementLabel(path, columnId); - } + return super.getElementLabel(path, columnId); + } - @Override + @Override public VirtualItem[] findItems(Object elementOrTreePath) { - return super.findItems(elementOrTreePath); - } + return super.findItems(elementOrTreePath); + } - @Override + @Override public VirtualItem findItem(TreePath path) { - return super.findItem(path); - } + return super.findItem(path); + } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/provisional/AbstractModelProxy.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/provisional/AbstractModelProxy.java index 5ef47dc2a..6010cacff 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/provisional/AbstractModelProxy.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/provisional/AbstractModelProxy.java @@ -72,11 +72,11 @@ public abstract class AbstractModelProxy implements IModelProxy2 { * @param delta model delta to broadcast */ public void fireModelChanged(IModelDelta delta) { - synchronized(this) { - if (!fInstalled || fDisposed) { + synchronized(this) { + if (!fInstalled || fDisposed) { return; } - } + } final IModelDelta root = getRootDelta(delta); for (IModelChangedListener iModelChangedListener : getListeners()) { @@ -93,7 +93,7 @@ public abstract class AbstractModelProxy implements IModelProxy2 { } }; - SafeRunner.run(safeRunnable); + SafeRunner.run(safeRunnable); } } @@ -114,61 +114,61 @@ public abstract class AbstractModelProxy implements IModelProxy2 { @Override public synchronized void dispose() { - if (fInstallJob != null) { - fInstallJob.cancel(); - fInstallJob = null; - } + if (fInstallJob != null) { + fInstallJob.cancel(); + fInstallJob = null; + } fDisposed = true; fContext = null; fViewer = null; } protected synchronized void setInstalled(boolean installed) { - fInstalled = installed; + fInstalled = installed; } protected synchronized boolean isInstalled() { - return fInstalled; + return fInstalled; } protected synchronized void setDisposed(boolean disposed) { - fDisposed = disposed; + fDisposed = disposed; } @Override public void initialize(ITreeModelViewer viewer) { - setDisposed(false); + setDisposed(false); - synchronized(this) { - fViewer = viewer; - fContext = viewer.getPresentationContext(); - fInstallJob = new Job("Model Proxy installed notification job") {//$NON-NLS-1$ - @Override + synchronized(this) { + fViewer = viewer; + fContext = viewer.getPresentationContext(); + fInstallJob = new Job("Model Proxy installed notification job") {//$NON-NLS-1$ + @Override protected IStatus run(IProgressMonitor monitor) { - synchronized(this) { - fInstallJob = null; - } - if (!monitor.isCanceled()) { - init(getTreeModelViewer().getPresentationContext()); - setInstalled(true); - installed(getViewer()); - } - return Status.OK_STATUS; - } - - @Override + synchronized(this) { + fInstallJob = null; + } + if (!monitor.isCanceled()) { + init(getTreeModelViewer().getPresentationContext()); + setInstalled(true); + installed(getViewer()); + } + return Status.OK_STATUS; + } + + @Override public boolean belongsTo(Object family) { return AbstractModelProxy.this == family; } @Override public boolean shouldRun() { - return !isDisposed(); - } - }; - fInstallJob.setSystem(true); - } - fInstallJob.schedule(); + return !isDisposed(); + } + }; + fInstallJob.setSystem(true); + } + fInstallJob.schedule(); } /** @@ -201,14 +201,14 @@ public abstract class AbstractModelProxy implements IModelProxy2 { return (Viewer)fViewer; } - /** - * Returns the viewer this proxy is installed in. - * - * @return viewer or <code>null</code> if not installed - */ - protected ITreeModelViewer getTreeModelViewer() { - return fViewer; - } + /** + * Returns the viewer this proxy is installed in. + * + * @return viewer or <code>null</code> if not installed + */ + protected ITreeModelViewer getTreeModelViewer() { + return fViewer; + } @Override public synchronized boolean isDisposed() { diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/provisional/AsynchronousContentAdapter.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/provisional/AsynchronousContentAdapter.java index fd4ca97a2..08f426ca7 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/provisional/AsynchronousContentAdapter.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/provisional/AsynchronousContentAdapter.java @@ -34,7 +34,7 @@ public abstract class AsynchronousContentAdapter implements IAsynchronousContent protected static final Object[] EMPTY = new Object[0]; - @Override + @Override public void retrieveChildren(final Object parent, final IPresentationContext context, final IChildrenRequestMonitor result) { Job job = new Job("Retrieving Children") { //$NON-NLS-1$ @Override @@ -50,19 +50,19 @@ public abstract class AsynchronousContentAdapter implements IAsynchronousContent job.schedule(); } - /** - * Returns the scheduling rule for jobs retrieving children. - * - * @param parent the parent - * @param context the presentation context - * @return scheduling rule or <code>null</code> - */ - protected ISchedulingRule getRetrieveChildrenRule(Object parent, IPresentationContext context) { - return AsynchronousSchedulingRuleFactory.getDefault().newSerialPerObjectRule(context); - } + /** + * Returns the scheduling rule for jobs retrieving children. + * + * @param parent the parent + * @param context the presentation context + * @return scheduling rule or <code>null</code> + */ + protected ISchedulingRule getRetrieveChildrenRule(Object parent, IPresentationContext context) { + return AsynchronousSchedulingRuleFactory.getDefault().newSerialPerObjectRule(context); + } - @Override + @Override public void isContainer(final Object element, final IPresentationContext context, final IContainerRequestMonitor result) { Job job = new Job("Computing hasChildren") { //$NON-NLS-1$ @Override @@ -78,25 +78,25 @@ public abstract class AsynchronousContentAdapter implements IAsynchronousContent job.schedule(); } - /** - * Returns the scheduling rule for jobs determining if an element is a container. - * - * @param parent the parent - * @param context the presentation context - * @return scheduling rule or <code>null</code> - */ - protected ISchedulingRule getIsContainerRule(Object parent, IPresentationContext context) { - return AsynchronousSchedulingRuleFactory.getDefault().newSerialPerObjectRule(context); - } + /** + * Returns the scheduling rule for jobs determining if an element is a container. + * + * @param parent the parent + * @param context the presentation context + * @return scheduling rule or <code>null</code> + */ + protected ISchedulingRule getIsContainerRule(Object parent, IPresentationContext context) { + return AsynchronousSchedulingRuleFactory.getDefault().newSerialPerObjectRule(context); + } - /** - * Computes the children for the given parent in the specified context. - * - * @param parent parent to retrieve children for - * @param context presentation context - * @param monitor result to report to - */ - protected void computeChildren(Object parent, IPresentationContext context, IChildrenRequestMonitor monitor) { + /** + * Computes the children for the given parent in the specified context. + * + * @param parent parent to retrieve children for + * @param context presentation context + * @param monitor result to report to + */ + protected void computeChildren(Object parent, IPresentationContext context, IChildrenRequestMonitor monitor) { if (!monitor.isCanceled()) { IStatus status = Status.OK_STATUS; try { @@ -109,16 +109,16 @@ public abstract class AsynchronousContentAdapter implements IAsynchronousContent monitor.setStatus(status); monitor.done(); } - } + } - /** - * Computes whether the given element is a container. - * - * @param parent potential parent - * @param context presentation context - * @param monitor result to report to - */ - protected void computeIsContainer(Object parent, IPresentationContext context, IContainerRequestMonitor monitor) { + /** + * Computes whether the given element is a container. + * + * @param parent potential parent + * @param context presentation context + * @param monitor result to report to + */ + protected void computeIsContainer(Object parent, IPresentationContext context, IContainerRequestMonitor monitor) { if (!monitor.isCanceled()) { IStatus status = Status.OK_STATUS; try { @@ -129,44 +129,44 @@ public abstract class AsynchronousContentAdapter implements IAsynchronousContent monitor.setStatus(status); monitor.done(); } - } + } - /** - * Returns the children for the given parent in the specified context. - * - * @param parent element to retrieve children for - * @param context context children will be presented in - * @return children - * @throws CoreException if an exception occurs retrieving children - */ - protected abstract Object[] getChildren(Object parent, IPresentationContext context) throws CoreException; + /** + * Returns the children for the given parent in the specified context. + * + * @param parent element to retrieve children for + * @param context context children will be presented in + * @return children + * @throws CoreException if an exception occurs retrieving children + */ + protected abstract Object[] getChildren(Object parent, IPresentationContext context) throws CoreException; - /** - * Returns whether the given element has children in the specified context. - * - * @param element element that may have children - * @param context context element will be presented in - * @return whether the given element has children in the specified context - * @throws CoreException if an exception occurs determining whether the - * element has children - */ - protected abstract boolean hasChildren(Object element, IPresentationContext context) throws CoreException; + /** + * Returns whether the given element has children in the specified context. + * + * @param element element that may have children + * @param context context element will be presented in + * @return whether the given element has children in the specified context + * @throws CoreException if an exception occurs determining whether the + * element has children + */ + protected abstract boolean hasChildren(Object element, IPresentationContext context) throws CoreException; - /** - * Returns whether this adapter supports the given context. - * - * @param context the presentation context - * @return whether this adapter supports the given context - */ - protected boolean supportsContext(IPresentationContext context) { + /** + * Returns whether this adapter supports the given context. + * + * @param context the presentation context + * @return whether this adapter supports the given context + */ + protected boolean supportsContext(IPresentationContext context) { return supportsPartId(context.getId()); - } + } - /** - * Returns whether this adapter provides content in the specified part. - * - * @param id part id - * @return whether this adapter provides content in the specified part - */ - protected abstract boolean supportsPartId(String id); + /** + * Returns whether this adapter provides content in the specified part. + * + * @param id part id + * @return whether this adapter provides content in the specified part + */ + protected abstract boolean supportsPartId(String id); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/provisional/AsynchronousLabelAdapter.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/provisional/AsynchronousLabelAdapter.java index ff6929a9c..5abc88886 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/provisional/AsynchronousLabelAdapter.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/provisional/AsynchronousLabelAdapter.java @@ -62,16 +62,16 @@ public abstract class AsynchronousLabelAdapter implements IAsynchronousLabelAdap job.schedule(); } - /** - * Returns the scheduling rule for label jobs. - * - * @param element the element context - * @param context the presentation context - * @return scheduling rule or <code>null</code> - */ - protected ISchedulingRule getLabelRule(Object element, IPresentationContext context) { - return AsynchronousSchedulingRuleFactory.getDefault().newSerialPerObjectRule(context); - } + /** + * Returns the scheduling rule for label jobs. + * + * @param element the element context + * @param context the presentation context + * @return scheduling rule or <code>null</code> + */ + protected ISchedulingRule getLabelRule(Object element, IPresentationContext context) { + return AsynchronousSchedulingRuleFactory.getDefault().newSerialPerObjectRule(context); + } /** * Returns whether this label adapter requires to be run in the UI thread. @@ -127,49 +127,49 @@ public abstract class AsynchronousLabelAdapter implements IAsynchronousLabelAdap * @return label * @exception CoreException if an exception occurs computing label */ - protected abstract String[] getLabels(Object element, IPresentationContext context) throws CoreException; + protected abstract String[] getLabels(Object element, IPresentationContext context) throws CoreException; - /** - * Returns an image descriptor for the given element in the specified context - * or <code>null</code>. - * - * @param element element to compute image descriptor for - * @param context presentation context - * @return image descriptor or <code>null</code> - * @throws CoreException if an exception occurs computing image descriptor - */ - protected abstract ImageDescriptor[] getImageDescriptors(Object element, IPresentationContext context) throws CoreException; + /** + * Returns an image descriptor for the given element in the specified context + * or <code>null</code>. + * + * @param element element to compute image descriptor for + * @param context presentation context + * @return image descriptor or <code>null</code> + * @throws CoreException if an exception occurs computing image descriptor + */ + protected abstract ImageDescriptor[] getImageDescriptors(Object element, IPresentationContext context) throws CoreException; - /** - * Returns font data for the given element in the specified context or <code>null</code> - * to use the default font. - * - * @param element element to compute font data for - * @param context presentation context - * @return font data or <code>null</code> - * @throws CoreException if an exception occurs computing font data - */ - protected abstract FontData[] getFontDatas(Object element, IPresentationContext context) throws CoreException; + /** + * Returns font data for the given element in the specified context or <code>null</code> + * to use the default font. + * + * @param element element to compute font data for + * @param context presentation context + * @return font data or <code>null</code> + * @throws CoreException if an exception occurs computing font data + */ + protected abstract FontData[] getFontDatas(Object element, IPresentationContext context) throws CoreException; - /** - * Returns a foreground color for the given element in the specified context or <code>null</code> - * to use the default color. - * - * @param element element to compute color for - * @param context presentation context - * @return color or <code>null</code> - * @throws CoreException if an exception occurs computing color - */ - protected abstract RGB[] getForegrounds(Object element, IPresentationContext context) throws CoreException; + /** + * Returns a foreground color for the given element in the specified context or <code>null</code> + * to use the default color. + * + * @param element element to compute color for + * @param context presentation context + * @return color or <code>null</code> + * @throws CoreException if an exception occurs computing color + */ + protected abstract RGB[] getForegrounds(Object element, IPresentationContext context) throws CoreException; - /** - * Returns a background color for the given element in the specified context or <code>null</code> - * to use the default color. - * - * @param element element to compute color for - * @param context presentation context - * @return color or <code>null</code> - * @throws CoreException if an exception occurs computing color - */ - protected abstract RGB[] getBackgrounds(Object element, IPresentationContext context) throws CoreException; + /** + * Returns a background color for the given element in the specified context or <code>null</code> + * to use the default color. + * + * @param element element to compute color for + * @param context presentation context + * @return color or <code>null</code> + * @throws CoreException if an exception occurs computing color + */ + protected abstract RGB[] getBackgrounds(Object element, IPresentationContext context) throws CoreException; } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/provisional/IAsynchronousContentAdapter.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/provisional/IAsynchronousContentAdapter.java index ddad3eba0..a639cd75b 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/provisional/IAsynchronousContentAdapter.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/provisional/IAsynchronousContentAdapter.java @@ -25,27 +25,27 @@ import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationCont */ public interface IAsynchronousContentAdapter { - /** - * Asynchronously retrieves the children of the given parent reporting to the - * given monitor. If unable to retrieve children, an exception should be reported - * to the monitor with an appropriate status. - * - * @param parent the element to retrieve children for - * @param context the context in which children have been requested - * @param monitor request monitor to report children to - */ - void retrieveChildren(Object parent, IPresentationContext context, IChildrenRequestMonitor result); + /** + * Asynchronously retrieves the children of the given parent reporting to the + * given monitor. If unable to retrieve children, an exception should be reported + * to the monitor with an appropriate status. + * + * @param parent the element to retrieve children for + * @param context the context in which children have been requested + * @param monitor request monitor to report children to + */ + void retrieveChildren(Object parent, IPresentationContext context, IChildrenRequestMonitor result); - /** - * Asynchronously determines whether the given element contains children in the specified - * context reporting the result to the given monitor. If unable to determine - * whether the element has children, an exception should be reported to the monitor - * with an appropriate status. - * - * @param element the element on which children may exist - * @param context the context in which children may exist - * @param monitor request monitor to report the result to - */ - void isContainer(Object element, IPresentationContext context, IContainerRequestMonitor result); + /** + * Asynchronously determines whether the given element contains children in the specified + * context reporting the result to the given monitor. If unable to determine + * whether the element has children, an exception should be reported to the monitor + * with an appropriate status. + * + * @param element the element on which children may exist + * @param context the context in which children may exist + * @param monitor request monitor to report the result to + */ + void isContainer(Object element, IPresentationContext context, IContainerRequestMonitor result); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/provisional/IAsynchronousLabelAdapter.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/provisional/IAsynchronousLabelAdapter.java index 5237a4031..50da68172 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/provisional/IAsynchronousLabelAdapter.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/provisional/IAsynchronousLabelAdapter.java @@ -25,16 +25,16 @@ import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationCont */ public interface IAsynchronousLabelAdapter { - /** - * Asynchronously retrieves the label of the given object reporting to - * the given monitor. If unable to retrieve label information, an exception should be - * reported to the monitor with an appropriate status. - * - * @param object the element for which a label is requested - * @param context the context in which the label has been requested - * @param monitor request monitor to report the result to - */ - void retrieveLabel(Object object, IPresentationContext context, ILabelRequestMonitor result); + /** + * Asynchronously retrieves the label of the given object reporting to + * the given monitor. If unable to retrieve label information, an exception should be + * reported to the monitor with an appropriate status. + * + * @param object the element for which a label is requested + * @param context the context in which the label has been requested + * @param monitor request monitor to report the result to + */ + void retrieveLabel(Object object, IPresentationContext context, ILabelRequestMonitor result); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/provisional/IChildrenRequestMonitor.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/provisional/IChildrenRequestMonitor.java index b29f3a19c..60fc8098b 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/provisional/IChildrenRequestMonitor.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/provisional/IChildrenRequestMonitor.java @@ -29,12 +29,12 @@ public interface IChildrenRequestMonitor extends IStatusMonitor { * * @param child child to add */ - void addChild(Object child); + void addChild(Object child); - /** - * Adds the given children to this request. - * - * @param children children to add - */ - void addChildren(Object[] children); + /** + * Adds the given children to this request. + * + * @param children children to add + */ + void addChildren(Object[] children); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/provisional/IContainerRequestMonitor.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/provisional/IContainerRequestMonitor.java index 4be814f12..3ada47d14 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/provisional/IContainerRequestMonitor.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/provisional/IContainerRequestMonitor.java @@ -30,6 +30,6 @@ public interface IContainerRequestMonitor extends IStatusMonitor { * * @param container whether an element contains children */ - void setIsContainer(boolean container); + void setIsContainer(boolean container); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/provisional/ILabelRequestMonitor.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/provisional/ILabelRequestMonitor.java index 0ff3ffd8b..a25a8d1a1 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/provisional/ILabelRequestMonitor.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/provisional/ILabelRequestMonitor.java @@ -33,34 +33,34 @@ public interface ILabelRequestMonitor extends IStatusMonitor { * * @param text */ - void setLabels(String[] text); + void setLabels(String[] text); - /** - * Sets the font of the label. - * - * @param fontData - */ - void setFontDatas(FontData[] fontData); + /** + * Sets the font of the label. + * + * @param fontData + */ + void setFontDatas(FontData[] fontData); - /** - * Sets the image of the label. - * - * @param image - */ - void setImageDescriptors(ImageDescriptor[] image); + /** + * Sets the image of the label. + * + * @param image + */ + void setImageDescriptors(ImageDescriptor[] image); - /** - * Sets the foreground color of the label. - * - * @param foreground - */ - void setForegrounds(RGB[] foreground); + /** + * Sets the foreground color of the label. + * + * @param foreground + */ + void setForegrounds(RGB[] foreground); - /** - * Sets the background color of the label. - * - * @param background - */ - void setBackgrounds(RGB[] background); + /** + * Sets the background color of the label. + * + * @param background + */ + void setBackgrounds(RGB[] background); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/BreakpointManagerProxy.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/BreakpointManagerProxy.java index 67d0b84d4..ffb00b1b4 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/BreakpointManagerProxy.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/BreakpointManagerProxy.java @@ -53,24 +53,24 @@ public class BreakpointManagerProxy extends AbstractModelProxy { /** * Job to fire posted deltas. */ - private Job fFireModelChangedJob; - - /** - * Object used for describing a posted delta. - */ - private static class DeltaInfo { - final boolean fSelect; - final IModelDelta fDelta; - - DeltaInfo(boolean selectDelta, IModelDelta delta) { - fSelect = selectDelta; - fDelta = delta; - } - } - - /** - * List of posted deltas ready to be fired. - */ + private Job fFireModelChangedJob; + + /** + * Object used for describing a posted delta. + */ + private static class DeltaInfo { + final boolean fSelect; + final IModelDelta fDelta; + + DeltaInfo(boolean selectDelta, IModelDelta delta) { + fSelect = selectDelta; + fDelta = delta; + } + } + + /** + * List of posted deltas ready to be fired. + */ private List<DeltaInfo> fPendingDeltas = new LinkedList<>(); @@ -108,14 +108,14 @@ public class BreakpointManagerProxy extends AbstractModelProxy { @Override public void dispose() { - fProvider.unregisterModelProxy(fInput, this); - synchronized(this) { - if (fFireModelChangedJob != null) { - fFireModelChangedJob.cancel(); - fFireModelChangedJob = null; - } - fPendingDeltas.clear(); - } + fProvider.unregisterModelProxy(fInput, this); + synchronized(this) { + if (fFireModelChangedJob != null) { + fFireModelChangedJob.cancel(); + fFireModelChangedJob = null; + } + fPendingDeltas.clear(); + } super.dispose(); } @@ -134,48 +134,48 @@ public class BreakpointManagerProxy extends AbstractModelProxy { * viewer selection. */ public synchronized void postModelChanged(IModelDelta delta, boolean select) { - // Check for proxy being disposed. - if (isDisposed()) { - return; - } - // Check for viewer being disposed. - Widget viewerControl = getViewer().getControl(); - if (viewerControl == null) { - return; - } - - // If we are processing a select delta, remove the previous select delta. - if (select) { + // Check for proxy being disposed. + if (isDisposed()) { + return; + } + // Check for viewer being disposed. + Widget viewerControl = getViewer().getControl(); + if (viewerControl == null) { + return; + } + + // If we are processing a select delta, remove the previous select delta. + if (select) { for (Iterator<DeltaInfo> itr = fPendingDeltas.iterator(); itr.hasNext();) { - if ( itr.next().fSelect ) { - itr.remove(); - } - } - } - fPendingDeltas.add(new DeltaInfo(select, delta)); - - if (fFireModelChangedJob == null) { - fFireModelChangedJob = new WorkbenchJob(viewerControl.getDisplay(), "Select Breakpoint Job") { //$NON-NLS-1$ - { - setSystem(true); - } - - @Override + if ( itr.next().fSelect ) { + itr.remove(); + } + } + } + fPendingDeltas.add(new DeltaInfo(select, delta)); + + if (fFireModelChangedJob == null) { + fFireModelChangedJob = new WorkbenchJob(viewerControl.getDisplay(), "Select Breakpoint Job") { //$NON-NLS-1$ + { + setSystem(true); + } + + @Override public IStatus runInUIThread(IProgressMonitor monitor) { - Object[] deltas; - synchronized(BreakpointManagerProxy.this) { - deltas = fPendingDeltas.toArray(); - fPendingDeltas.clear(); - fFireModelChangedJob = null; - } - for (int i = 0; i < deltas.length; i++) { - fireModelChanged( ((DeltaInfo)deltas[i]).fDelta ); - } - return Status.OK_STATUS; - } - }; - fFireModelChangedJob.schedule(); - } + Object[] deltas; + synchronized(BreakpointManagerProxy.this) { + deltas = fPendingDeltas.toArray(); + fPendingDeltas.clear(); + fFireModelChangedJob = null; + } + for (int i = 0; i < deltas.length; i++) { + fireModelChanged( ((DeltaInfo)deltas[i]).fDelta ); + } + return Status.OK_STATUS; + } + }; + fFireModelChangedJob.schedule(); + } } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/DebugTargetEventHandler.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/DebugTargetEventHandler.java index 789d6b8bf..a9da9c74f 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/DebugTargetEventHandler.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/DebugTargetEventHandler.java @@ -51,7 +51,7 @@ public class DebugTargetEventHandler extends DebugEventHandler { @Override protected void handleCreate(DebugEvent event) { - fireDelta((IDebugTarget) event.getSource(), IModelDelta.EXPAND); + fireDelta((IDebugTarget) event.getSource(), IModelDelta.EXPAND); } @Override diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/DebugTargetProxy.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/DebugTargetProxy.java index 50b2459ec..a804e7c95 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/DebugTargetProxy.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/DebugTargetProxy.java @@ -34,11 +34,11 @@ import org.eclipse.jface.viewers.Viewer; */ public class DebugTargetProxy extends EventHandlerModelProxy { - private IDebugTarget fDebugTarget; + private IDebugTarget fDebugTarget; - public DebugTargetProxy(IDebugTarget target) { - fDebugTarget = target; - } + public DebugTargetProxy(IDebugTarget target) { + fDebugTarget = target; + } @Override public synchronized void dispose() { @@ -48,23 +48,23 @@ public class DebugTargetProxy extends EventHandlerModelProxy { @Override protected boolean containsEvent(DebugEvent event) { - Object source = event.getSource(); - if (source instanceof IDebugElement) { - IDebugTarget debugTarget = ((IDebugElement) source).getDebugTarget(); - // an expression can return null for debug target - if (debugTarget != null) { - return debugTarget.equals(fDebugTarget); - } - } - return false; - } + Object source = event.getSource(); + if (source instanceof IDebugElement) { + IDebugTarget debugTarget = ((IDebugElement) source).getDebugTarget(); + // an expression can return null for debug target + if (debugTarget != null) { + return debugTarget.equals(fDebugTarget); + } + } + return false; + } - @Override + @Override protected DebugEventHandler[] createEventHandlers() { - ThreadEventHandler threadEventHandler = new ThreadEventHandler(this); + ThreadEventHandler threadEventHandler = new ThreadEventHandler(this); return new DebugEventHandler[] { new DebugTargetEventHandler(this), threadEventHandler, new StackFrameEventHandler(this, threadEventHandler) }; - } + } @Override public void installed(Viewer viewer) { @@ -73,75 +73,75 @@ public class DebugTargetProxy extends EventHandlerModelProxy { if (target != null) { ModelDelta delta = getNextSuspendedThreadDelta(null, false); if (delta == null) { - try { - ILaunchManager manager = DebugPlugin.getDefault().getLaunchManager(); - ILaunch launch = target.getLaunch(); - int launchIndex = getLaunchIndex(launch); - int targetIndex = getTargetIndex(target); - delta = new ModelDelta(manager, IModelDelta.NO_CHANGE); - ModelDelta node = delta.addNode(launch, launchIndex, IModelDelta.NO_CHANGE, target.getLaunch().getChildren().length); - node = node.addNode(target, targetIndex, IModelDelta.EXPAND | IModelDelta.SELECT, target.getThreads().length); - } catch (DebugException e) { - // In case of exception do not fire delta - return; - } + try { + ILaunchManager manager = DebugPlugin.getDefault().getLaunchManager(); + ILaunch launch = target.getLaunch(); + int launchIndex = getLaunchIndex(launch); + int targetIndex = getTargetIndex(target); + delta = new ModelDelta(manager, IModelDelta.NO_CHANGE); + ModelDelta node = delta.addNode(launch, launchIndex, IModelDelta.NO_CHANGE, target.getLaunch().getChildren().length); + node = node.addNode(target, targetIndex, IModelDelta.EXPAND | IModelDelta.SELECT, target.getThreads().length); + } catch (DebugException e) { + // In case of exception do not fire delta + return; + } } // expand the target if no suspended thread fireModelChanged(delta); } } - protected ModelDelta getNextSuspendedThreadDelta(IThread currentThread, boolean reverse) { - IDebugTarget target = fDebugTarget; - if (target != null) { - try { - IThread[] threads = target.getThreads(); - IThread chosen = null; - int threadIndex = -1; - // select the first thread with a breakpoint, or the first suspended thread - // if none have breakpoints - boolean takeNext = currentThread == null; - int startIdx = reverse ? threads.length - 1 : 0; - int endIdx = reverse ? -1 : threads.length; - int increment = reverse ? -1 : 1; - for (int i = startIdx; i != endIdx; i = i + increment) { - IThread thread = threads[i]; - if (takeNext && thread.isSuspended()) { - IBreakpoint[] bps = thread.getBreakpoints(); - if (bps != null && bps.length > 0) { - chosen = thread; - threadIndex = i; - break; - } else { - if (chosen == null) { - chosen = thread; - threadIndex = i; - } - } - } - takeNext = takeNext || thread.equals(currentThread); - } - if (chosen != null) { - IStackFrame frame = chosen.getTopStackFrame(); - if (frame != null) { - ILaunchManager manager = DebugPlugin.getDefault().getLaunchManager(); - ILaunch launch = target.getLaunch(); - int launchIndex = getLaunchIndex(launch); - int targetIndex = getTargetIndex(target); - int stackFrameIndex = getStackFrameIndex(frame); - ModelDelta delta = new ModelDelta(manager, IModelDelta.NO_CHANGE); - ModelDelta node = delta.addNode(launch, launchIndex, IModelDelta.NO_CHANGE, target.getLaunch().getChildren().length); - node = node.addNode(target, targetIndex, IModelDelta.NO_CHANGE, threads.length); - node = node.addNode(chosen, threadIndex, IModelDelta.NO_CHANGE | IModelDelta.EXPAND, chosen.getStackFrames().length); - node = node.addNode(frame, stackFrameIndex, IModelDelta.NO_CHANGE | IModelDelta.SELECT, 0); - return delta; - } - } - } catch (DebugException e) { - } - } - return null; - } + protected ModelDelta getNextSuspendedThreadDelta(IThread currentThread, boolean reverse) { + IDebugTarget target = fDebugTarget; + if (target != null) { + try { + IThread[] threads = target.getThreads(); + IThread chosen = null; + int threadIndex = -1; + // select the first thread with a breakpoint, or the first suspended thread + // if none have breakpoints + boolean takeNext = currentThread == null; + int startIdx = reverse ? threads.length - 1 : 0; + int endIdx = reverse ? -1 : threads.length; + int increment = reverse ? -1 : 1; + for (int i = startIdx; i != endIdx; i = i + increment) { + IThread thread = threads[i]; + if (takeNext && thread.isSuspended()) { + IBreakpoint[] bps = thread.getBreakpoints(); + if (bps != null && bps.length > 0) { + chosen = thread; + threadIndex = i; + break; + } else { + if (chosen == null) { + chosen = thread; + threadIndex = i; + } + } + } + takeNext = takeNext || thread.equals(currentThread); + } + if (chosen != null) { + IStackFrame frame = chosen.getTopStackFrame(); + if (frame != null) { + ILaunchManager manager = DebugPlugin.getDefault().getLaunchManager(); + ILaunch launch = target.getLaunch(); + int launchIndex = getLaunchIndex(launch); + int targetIndex = getTargetIndex(target); + int stackFrameIndex = getStackFrameIndex(frame); + ModelDelta delta = new ModelDelta(manager, IModelDelta.NO_CHANGE); + ModelDelta node = delta.addNode(launch, launchIndex, IModelDelta.NO_CHANGE, target.getLaunch().getChildren().length); + node = node.addNode(target, targetIndex, IModelDelta.NO_CHANGE, threads.length); + node = node.addNode(chosen, threadIndex, IModelDelta.NO_CHANGE | IModelDelta.EXPAND, chosen.getStackFrames().length); + node = node.addNode(frame, stackFrameIndex, IModelDelta.NO_CHANGE | IModelDelta.SELECT, 0); + return delta; + } + } + } catch (DebugException e) { + } + } + return null; + } /** * Computes the index of a launch at top level in the {@code Debug View} tree. diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/DefaultSelectionPolicy.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/DefaultSelectionPolicy.java index 03d6dd7b2..04feb11ba 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/DefaultSelectionPolicy.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/DefaultSelectionPolicy.java @@ -109,25 +109,25 @@ public class DefaultSelectionPolicy implements IModelSelectionPolicy { return false; } - /** - * If an attempt is made to select an invalid element, it usually indicates that the - * currently selected element was removed from the model. Instead of leaving the - * selection empty, attempt to select the parent element instead. - * - * @param selection the selection to replace - * @param newSelection the selection to use if the given selection is not an {@link ITreeSelection} - * @return the replaced selection or <code>newSelection</code> if the given selection is not an {@link ITreeSelection} - * - * @see org.eclipse.debug.internal.ui.viewers.model.provisional.IModelSelectionPolicy#replaceInvalidSelection(ISelection, ISelection) - */ - @Override + /** + * If an attempt is made to select an invalid element, it usually indicates that the + * currently selected element was removed from the model. Instead of leaving the + * selection empty, attempt to select the parent element instead. + * + * @param selection the selection to replace + * @param newSelection the selection to use if the given selection is not an {@link ITreeSelection} + * @return the replaced selection or <code>newSelection</code> if the given selection is not an {@link ITreeSelection} + * + * @see org.eclipse.debug.internal.ui.viewers.model.provisional.IModelSelectionPolicy#replaceInvalidSelection(ISelection, ISelection) + */ + @Override public ISelection replaceInvalidSelection(ISelection selection, ISelection newSelection) { - if (selection instanceof ITreeSelection) { - TreePath[] paths = ((ITreeSelection)selection).getPaths(); - if (paths.length > 0 && paths[0].getSegmentCount() > 1) { - return new TreeSelection(paths[0].getParentPath()); - } - } - return newSelection; - } + if (selection instanceof ITreeSelection) { + TreePath[] paths = ((ITreeSelection)selection).getPaths(); + if (paths.length > 0 && paths[0].getSegmentCount() > 1) { + return new TreeSelection(paths[0].getParentPath()); + } + } + return newSelection; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/DefaultVariableViewModelProxy.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/DefaultVariableViewModelProxy.java index 599ab597f..109d86aac 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/DefaultVariableViewModelProxy.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/DefaultVariableViewModelProxy.java @@ -54,16 +54,16 @@ public class DefaultVariableViewModelProxy extends EventHandlerModelProxy { @Override protected synchronized boolean containsEvent(DebugEvent event) { if (!isDisposed()) { - Object source = event.getSource(); - if (source instanceof IDebugElement) { - IDebugTarget debugTarget = ((IDebugElement) source).getDebugTarget(); - if (debugTarget != null) { - // a debug target can be null for an IExpression - return debugTarget.equals(fFrame.getDebugTarget()); - } - } + Object source = event.getSource(); + if (source instanceof IDebugElement) { + IDebugTarget debugTarget = ((IDebugElement) source).getDebugTarget(); + if (debugTarget != null) { + // a debug target can be null for an IExpression + return debugTarget.equals(fFrame.getDebugTarget()); + } + } } - return false; - } + return false; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/DefaultWatchExpressionModelProxy.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/DefaultWatchExpressionModelProxy.java index b303ff888..ee7f58541 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/DefaultWatchExpressionModelProxy.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/DefaultWatchExpressionModelProxy.java @@ -56,27 +56,27 @@ public class DefaultWatchExpressionModelProxy extends DefaultExpressionModelProx UIJob job = new UIJob("install watch expression model proxy") { //$NON-NLS-1$ @Override public IStatus runInUIThread(IProgressMonitor monitor) { - if (!isDisposed()) { - IWorkbenchWindow[] workbenchWindows = PlatformUI.getWorkbench().getWorkbenchWindows(); - for (int i = 0; i < workbenchWindows.length; i++) { - IWorkbenchWindow window = workbenchWindows[i]; - // Virtual viewer may have a null control. - Control control = viewer.getControl(); - if (control != null && control.getShell().equals(window.getShell())) { - fWindow = window; - break; - } - } - if (fWindow == null) { - fWindow = DebugUIPlugin.getActiveWorkbenchWindow(); - } - IDebugContextService contextService = DebugUITools.getDebugContextManager().getContextService(fWindow); - contextService.addDebugContextListener(DefaultWatchExpressionModelProxy.this); - ISelection activeContext = contextService.getActiveContext(); - if (activeContext != null) { - contextActivated(activeContext); - } - } + if (!isDisposed()) { + IWorkbenchWindow[] workbenchWindows = PlatformUI.getWorkbench().getWorkbenchWindows(); + for (int i = 0; i < workbenchWindows.length; i++) { + IWorkbenchWindow window = workbenchWindows[i]; + // Virtual viewer may have a null control. + Control control = viewer.getControl(); + if (control != null && control.getShell().equals(window.getShell())) { + fWindow = window; + break; + } + } + if (fWindow == null) { + fWindow = DebugUIPlugin.getActiveWorkbenchWindow(); + } + IDebugContextService contextService = DebugUITools.getDebugContextManager().getContextService(fWindow); + contextService.addDebugContextListener(DefaultWatchExpressionModelProxy.this); + ISelection activeContext = contextService.getActiveContext(); + if (activeContext != null) { + contextActivated(activeContext); + } + } return Status.OK_STATUS; } @@ -89,8 +89,8 @@ public class DefaultWatchExpressionModelProxy extends DefaultExpressionModelProx public synchronized void dispose() { super.dispose(); if (fWindow != null) { - DebugUITools.getDebugContextManager().getContextService(fWindow).removeDebugContextListener(this); - fWindow = null; + DebugUITools.getDebugContextManager().getContextService(fWindow).removeDebugContextListener(this); + fWindow = null; } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/EventHandlerModelProxy.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/EventHandlerModelProxy.java index cedf4fad9..68eec9df9 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/EventHandlerModelProxy.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/EventHandlerModelProxy.java @@ -29,240 +29,240 @@ import org.eclipse.debug.internal.ui.viewers.provisional.AbstractModelProxy; */ public abstract class EventHandlerModelProxy extends AbstractModelProxy implements IDebugEventSetListener { - /** - * Map of elements to timer tasks - */ + /** + * Map of elements to timer tasks + */ private Map<Object, PendingSuspendTask> fTimerTasks = new HashMap<>(); - /** - * Timer for timer tasks - */ - private Timer fTimer = new Timer(true); + /** + * Timer for timer tasks + */ + private Timer fTimer = new Timer(true); - /** - * Map of event source to resume events with a pending suspend that timed - * out. - */ + /** + * Map of event source to resume events with a pending suspend that timed + * out. + */ private Map<Object, DebugEvent> fPendingSuspends = new HashMap<>(); - /** - * Event handlers for specific elements - */ - private DebugEventHandler[] fHandlers = new DebugEventHandler[0]; + /** + * Event handlers for specific elements + */ + private DebugEventHandler[] fHandlers = new DebugEventHandler[0]; - /** - * Task used to update an element that resumed for a step or evaluation that - * took too long to suspend. - */ - private class PendingSuspendTask extends TimerTask { + /** + * Task used to update an element that resumed for a step or evaluation that + * took too long to suspend. + */ + private class PendingSuspendTask extends TimerTask { - private DebugEvent fEvent; + private DebugEvent fEvent; - private DebugEventHandler fHandler; + private DebugEventHandler fHandler; - /** - * Resume event for which there is a pending suspend. - * - * @param resume - * event - */ - public PendingSuspendTask(DebugEventHandler handler, DebugEvent resume) { - fHandler = handler; - fEvent = resume; - } + /** + * Resume event for which there is a pending suspend. + * + * @param resume + * event + */ + public PendingSuspendTask(DebugEventHandler handler, DebugEvent resume) { + fHandler = handler; + fEvent = resume; + } - @Override + @Override public void run() { - synchronized (fPendingSuspends) { - fPendingSuspends.put(fEvent.getSource(), fEvent); - } - dispatchSuspendTimeout(fHandler, fEvent); - } + synchronized (fPendingSuspends) { + fPendingSuspends.put(fEvent.getSource(), fEvent); + } + dispatchSuspendTimeout(fHandler, fEvent); + } - } + } - /** - * Adds the given handler to this event update policy. - * - * @param handler - */ - protected abstract DebugEventHandler[] createEventHandlers(); + /** + * Adds the given handler to this event update policy. + * + * @param handler + */ + protected abstract DebugEventHandler[] createEventHandlers(); - @Override + @Override public synchronized void dispose() { - super.dispose(); - fTimer.cancel(); - fTimerTasks.clear(); - DebugPlugin.getDefault().removeDebugEventListener(this); - for (int i = 0; i < fHandlers.length; i++) { - DebugEventHandler handler = fHandlers[i]; - handler.dispose(); - } - } + super.dispose(); + fTimer.cancel(); + fTimerTasks.clear(); + DebugPlugin.getDefault().removeDebugEventListener(this); + for (int i = 0; i < fHandlers.length; i++) { + DebugEventHandler handler = fHandlers[i]; + handler.dispose(); + } + } - @Override + @Override public void init(IPresentationContext context) { - super.init(context); - DebugPlugin.getDefault().addDebugEventListener(this); - fHandlers = createEventHandlers(); - } + super.init(context); + DebugPlugin.getDefault().addDebugEventListener(this); + fHandlers = createEventHandlers(); + } - @Override + @Override public final void handleDebugEvents(DebugEvent[] events) { - if (isDisposed()) { - return; - } - for (int i = 0; i < events.length; i++) { - DebugEvent event = events[i]; - if (containsEvent(event)) { - for (int j = 0; j < fHandlers.length; j++) { - DebugEventHandler handler = fHandlers[j]; - if (isDisposed()) { - return; - } - if (handler.handlesEvent(event)) { - switch (event.getKind()) { - case DebugEvent.CREATE: - dispatchCreate(handler, event); - break; - case DebugEvent.TERMINATE: - dispatchTerminate(handler, event); - break; - case DebugEvent.SUSPEND: - dispatchSuspend(handler, event); - break; - case DebugEvent.RESUME: - dispatchResume(handler, event); - break; - case DebugEvent.CHANGE: - dispatchChange(handler, event); - break; - default: - dispatchOther(handler, event); - break; - } - } - } - } - } - } + if (isDisposed()) { + return; + } + for (int i = 0; i < events.length; i++) { + DebugEvent event = events[i]; + if (containsEvent(event)) { + for (int j = 0; j < fHandlers.length; j++) { + DebugEventHandler handler = fHandlers[j]; + if (isDisposed()) { + return; + } + if (handler.handlesEvent(event)) { + switch (event.getKind()) { + case DebugEvent.CREATE: + dispatchCreate(handler, event); + break; + case DebugEvent.TERMINATE: + dispatchTerminate(handler, event); + break; + case DebugEvent.SUSPEND: + dispatchSuspend(handler, event); + break; + case DebugEvent.RESUME: + dispatchResume(handler, event); + break; + case DebugEvent.CHANGE: + dispatchChange(handler, event); + break; + default: + dispatchOther(handler, event); + break; + } + } + } + } + } + } - /** - * Returns whether this event handler should process the event. - * - * @param event debug event - * @return whether this event handler should process the event - */ - protected boolean containsEvent(DebugEvent event) { - return true; - } + /** + * Returns whether this event handler should process the event. + * + * @param event debug event + * @return whether this event handler should process the event + */ + protected boolean containsEvent(DebugEvent event) { + return true; + } - /** - * Dispatches a create event. - * - * @param event - */ - protected void dispatchCreate(DebugEventHandler handler, DebugEvent event) { - handler.handleCreate(event); - } + /** + * Dispatches a create event. + * + * @param event + */ + protected void dispatchCreate(DebugEventHandler handler, DebugEvent event) { + handler.handleCreate(event); + } - /** - * Dispatches a terminate event. - * - * @param event - */ - protected void dispatchTerminate(DebugEventHandler handler, DebugEvent event) { - handler.handleTerminate(event); - } + /** + * Dispatches a terminate event. + * + * @param event + */ + protected void dispatchTerminate(DebugEventHandler handler, DebugEvent event) { + handler.handleTerminate(event); + } - /** - * Dispatches a suspend event. Subclasses may override. - * - * @param event - */ - protected void dispatchSuspend(DebugEventHandler handler, DebugEvent event) { - // stop timer, if any - synchronized (this) { - TimerTask task = fTimerTasks.remove(event.getSource()); - if (task != null) { - task.cancel(); - } - } - DebugEvent resume = null; - synchronized (this) { - resume = fPendingSuspends.remove(event.getSource()); - } - if (resume == null) { - handler.handleSuspend(event); - } else { - handler.handleLateSuspend(event, resume); - } - } + /** + * Dispatches a suspend event. Subclasses may override. + * + * @param event + */ + protected void dispatchSuspend(DebugEventHandler handler, DebugEvent event) { + // stop timer, if any + synchronized (this) { + TimerTask task = fTimerTasks.remove(event.getSource()); + if (task != null) { + task.cancel(); + } + } + DebugEvent resume = null; + synchronized (this) { + resume = fPendingSuspends.remove(event.getSource()); + } + if (resume == null) { + handler.handleSuspend(event); + } else { + handler.handleLateSuspend(event, resume); + } + } - /** - * Dispatches a resume event. By default, if the resume is for an evaluation - * or a step, a timer is started to update the event source if the step or - * evaluation takes more than 500ms. Otherwise the source is refreshed. - * Subclasses may override. - * - * @param event - */ - protected void dispatchResume(DebugEventHandler handler, DebugEvent event) { - if (event.isEvaluation() || event.isStepStart()) { - // start a timer to update if the corresponding suspend does not - // come quickly - synchronized (this) { - if (!isDisposed()) { - PendingSuspendTask task = new PendingSuspendTask(handler, event); - fTimerTasks.put(event.getSource(), task); - fTimer.schedule(task, 500); - } + /** + * Dispatches a resume event. By default, if the resume is for an evaluation + * or a step, a timer is started to update the event source if the step or + * evaluation takes more than 500ms. Otherwise the source is refreshed. + * Subclasses may override. + * + * @param event + */ + protected void dispatchResume(DebugEventHandler handler, DebugEvent event) { + if (event.isEvaluation() || event.isStepStart()) { + // start a timer to update if the corresponding suspend does not + // come quickly + synchronized (this) { + if (!isDisposed()) { + PendingSuspendTask task = new PendingSuspendTask(handler, event); + fTimerTasks.put(event.getSource(), task); + fTimer.schedule(task, 500); + } } - if (!isDisposed()) { - handler.handleResumeExpectingSuspend(event); - } - } else { - handler.handleResume(event); - } - } + if (!isDisposed()) { + handler.handleResumeExpectingSuspend(event); + } + } else { + handler.handleResume(event); + } + } - /** - * Dispatches a change event. - * - * @param event - */ - protected void dispatchChange(DebugEventHandler handler, DebugEvent event) { - handler.handleChange(event); - } + /** + * Dispatches a change event. + * + * @param event + */ + protected void dispatchChange(DebugEventHandler handler, DebugEvent event) { + handler.handleChange(event); + } - /** - * Dispatches an unknown event. - * - * @param event - */ - protected void dispatchOther(DebugEventHandler handler, DebugEvent event) { - handler.handleOther(event); - } + /** + * Dispatches an unknown event. + * + * @param event + */ + protected void dispatchOther(DebugEventHandler handler, DebugEvent event) { + handler.handleOther(event); + } - /** - * Notification that a pending suspend event was not received for the given - * resume event and handler within the timeout period. - * - * @param resume - * resume event with missing suspend event - */ - protected void dispatchSuspendTimeout(DebugEventHandler handler, DebugEvent resume) { - handler.handleSuspendTimeout(resume); - } + /** + * Notification that a pending suspend event was not received for the given + * resume event and handler within the timeout period. + * + * @param resume + * resume event with missing suspend event + */ + protected void dispatchSuspendTimeout(DebugEventHandler handler, DebugEvent resume) { + handler.handleSuspendTimeout(resume); + } - /** - * Returns the index of the given element in the list or -1 if - * not present. - * - * @param list - * @param element - * @return index or -1 if not present - */ + /** + * Returns the index of the given element in the list or -1 if + * not present. + * + * @param list + * @param element + * @return index or -1 if not present + */ protected int indexOf(Object[] list, Object element) { for (int i = 0; i < list.length; i++) { if (element.equals(list[i])) { diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/ExpressionEventHandler.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/ExpressionEventHandler.java index b04f1b8ca..99d2b7dd8 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/ExpressionEventHandler.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/ExpressionEventHandler.java @@ -31,46 +31,46 @@ import org.eclipse.debug.internal.ui.viewers.provisional.AbstractModelProxy; */ public class ExpressionEventHandler extends DebugEventHandler { - public ExpressionEventHandler(AbstractModelProxy proxy) { - super(proxy); - } + public ExpressionEventHandler(AbstractModelProxy proxy) { + super(proxy); + } - @Override + @Override protected boolean handlesEvent(DebugEvent event) { - return event.getKind() == DebugEvent.CHANGE; - } + return event.getKind() == DebugEvent.CHANGE; + } - @Override + @Override protected void handleChange(DebugEvent event) { - ModelDelta delta = new ModelDelta(DebugPlugin.getDefault().getExpressionManager(), IModelDelta.NO_CHANGE); + ModelDelta delta = new ModelDelta(DebugPlugin.getDefault().getExpressionManager(), IModelDelta.NO_CHANGE); IExpression expression = null; - if (event.getSource() instanceof IExpression) { - expression = (IExpression) event.getSource(); - int flags = IModelDelta.NO_CHANGE; - if ((event.getDetail() & DebugEvent.STATE) != 0) { - flags = flags | IModelDelta.STATE; - } - if ((event.getDetail() & DebugEvent.CONTENT) != 0) { - flags = flags | IModelDelta.CONTENT; - } - delta.addNode(expression, flags); + if (event.getSource() instanceof IExpression) { + expression = (IExpression) event.getSource(); + int flags = IModelDelta.NO_CHANGE; + if ((event.getDetail() & DebugEvent.STATE) != 0) { + flags = flags | IModelDelta.STATE; + } + if ((event.getDetail() & DebugEvent.CONTENT) != 0) { + flags = flags | IModelDelta.CONTENT; + } + delta.addNode(expression, flags); fireDelta(delta); } - if (event.getSource() instanceof IVariable) { - IVariable variable = (IVariable) event.getSource(); - int flags = IModelDelta.NO_CHANGE; - if (event.getDetail()==DebugEvent.CONTENT) { - flags = flags | IModelDelta.CONTENT; - } - delta.addNode(variable, flags); + if (event.getSource() instanceof IVariable) { + IVariable variable = (IVariable) event.getSource(); + int flags = IModelDelta.NO_CHANGE; + if (event.getDetail()==DebugEvent.CONTENT) { + flags = flags | IModelDelta.CONTENT; + } + delta.addNode(variable, flags); fireDelta(delta); } - } + } - @Override + @Override protected void refreshRoot(DebugEvent event) { - ModelDelta delta = new ModelDelta(DebugPlugin.getDefault().getExpressionManager(), IModelDelta.CONTENT); - fireDelta(delta); - } + ModelDelta delta = new ModelDelta(DebugPlugin.getDefault().getExpressionManager(), IModelDelta.CONTENT); + fireDelta(delta); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/ExpressionManagerModelProxy.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/ExpressionManagerModelProxy.java index 91a2fadb8..b5317ed7a 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/ExpressionManagerModelProxy.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/ExpressionManagerModelProxy.java @@ -56,7 +56,7 @@ public class ExpressionManagerModelProxy extends AbstractModelProxy implements I @Override public synchronized void dispose() { - getPresentationContext().removePropertyChangeListener(this); + getPresentationContext().removePropertyChangeListener(this); super.dispose(); getExpressionManager().removeExpressionListener(this); } @@ -64,7 +64,7 @@ public class ExpressionManagerModelProxy extends AbstractModelProxy implements I @Override public void expressionsMoved(IExpression[] expressions, int index){ int count = getElementsCount(); - ModelDelta delta = new ModelDelta(getExpressionManager(), -1, IModelDelta.NO_CHANGE, count); + ModelDelta delta = new ModelDelta(getExpressionManager(), -1, IModelDelta.NO_CHANGE, count); for (int i = 0; i < expressions.length; i++) { IExpression expression = expressions[i]; delta.addNode(expression, IModelDelta.REMOVED); @@ -78,8 +78,8 @@ public class ExpressionManagerModelProxy extends AbstractModelProxy implements I @Override public void expressionsInserted(IExpression[] expressions, int index){ - int count = getElementsCount(); - ModelDelta delta = new ModelDelta(getExpressionManager(), -1, IModelDelta.NO_CHANGE, count); + int count = getElementsCount(); + ModelDelta delta = new ModelDelta(getExpressionManager(), -1, IModelDelta.NO_CHANGE, count); for (int i = 0; i < expressions.length; i++) { IExpression expression = expressions[i]; delta.addNode(expression, index+i, IModelDelta.ADDED | IModelDelta.INSTALL, -1); @@ -89,14 +89,14 @@ public class ExpressionManagerModelProxy extends AbstractModelProxy implements I @Override public void expressionsAdded(IExpression[] expressions) { - int index = getExpressionManager().getExpressions().length - expressions.length; - int count = getElementsCount(); - ModelDelta delta = new ModelDelta(getExpressionManager(), -1, IModelDelta.NO_CHANGE, count); - for (int i = 0; i < expressions.length; i++) { - IExpression expression = expressions[i]; - delta.addNode(expression, index+i, IModelDelta.ADDED | IModelDelta.INSTALL, -1); - } - fireModelChanged(delta); + int index = getExpressionManager().getExpressions().length - expressions.length; + int count = getElementsCount(); + ModelDelta delta = new ModelDelta(getExpressionManager(), -1, IModelDelta.NO_CHANGE, count); + for (int i = 0; i < expressions.length; i++) { + IExpression expression = expressions[i]; + delta.addNode(expression, index+i, IModelDelta.ADDED | IModelDelta.INSTALL, -1); + } + fireModelChanged(delta); } @Override @@ -109,30 +109,30 @@ public class ExpressionManagerModelProxy extends AbstractModelProxy implements I updateExpressions(expressions, IModelDelta.CONTENT | IModelDelta.STATE); } - private void updateExpressions(IExpression[] expressions, int flags) { + private void updateExpressions(IExpression[] expressions, int flags) { ModelDelta delta = new ModelDelta(getExpressionManager(), IModelDelta.NO_CHANGE); for (int i = 0; i < expressions.length; i++) { IExpression expression = expressions[i]; delta.addNode(expression, flags); } fireModelChanged(delta); - } + } - private int getElementsCount() { - // Account for the "Add new expression" element only if columns are - // displayed. - return getExpressionManager().getExpressions().length + - (getPresentationContext().getColumns() != null ? 1 : 0); - } + private int getElementsCount() { + // Account for the "Add new expression" element only if columns are + // displayed. + return getExpressionManager().getExpressions().length + + (getPresentationContext().getColumns() != null ? 1 : 0); + } - @Override + @Override public void propertyChange(PropertyChangeEvent event) { - // If columns are turned on/off, refresh the view to account for the - // "Add new expression" element. - if (IPresentationContext.PROPERTY_COLUMNS.equals(event.getProperty())) { - fireModelChanged(new ModelDelta(getExpressionManager(), IModelDelta.CONTENT)); - } - } + // If columns are turned on/off, refresh the view to account for the + // "Add new expression" element. + if (IPresentationContext.PROPERTY_COLUMNS.equals(event.getProperty())) { + fireModelChanged(new ModelDelta(getExpressionManager(), IModelDelta.CONTENT)); + } + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/LaunchProxy.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/LaunchProxy.java index d85e179b0..d7e0e6ae3 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/LaunchProxy.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/LaunchProxy.java @@ -130,13 +130,13 @@ public class LaunchProxy extends AbstractModelProxy implements ILaunchesListener } List<Object> childrenList = Arrays.asList(children); for (Iterator<Object> itr = fPrevChildren.iterator(); itr.hasNext();) { - Object child = itr.next(); - if (!childrenList.contains(child)) { - itr.remove(); - changes = true; - launchDelta.addNode(child, IModelDelta.UNINSTALL); - } - } + Object child = itr.next(); + if (!childrenList.contains(child)) { + itr.remove(); + changes = true; + launchDelta.addNode(child, IModelDelta.UNINSTALL); + } + } } if (changes) { fireModelChanged(root); diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/ProcessProxy.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/ProcessProxy.java index 1b8132e76..27977d576 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/ProcessProxy.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/ProcessProxy.java @@ -24,23 +24,23 @@ import org.eclipse.jface.viewers.Viewer; public class ProcessProxy extends EventHandlerModelProxy { - private IProcess fProcess; + private IProcess fProcess; - private DebugEventHandler fProcessEventHandler = new DebugEventHandler(this) { - @Override + private DebugEventHandler fProcessEventHandler = new DebugEventHandler(this) { + @Override protected boolean handlesEvent(DebugEvent event) { - return event.getSource().equals(fProcess); - } + return event.getSource().equals(fProcess); + } @Override protected void handleChange(DebugEvent event) { fireProcessDelta(IModelDelta.STATE); - } + } - @Override + @Override protected void handleCreate(DebugEvent event) { - // do nothing - Launch change notification handles this - } + // do nothing - Launch change notification handles this + } @Override protected void handleTerminate(DebugEvent event) { @@ -48,22 +48,22 @@ public class ProcessProxy extends EventHandlerModelProxy { } - }; + }; - private void fireProcessDelta(int flags) { - ModelDelta delta = null; - synchronized (ProcessProxy.this) { - if (!isDisposed()) { - delta = new ModelDelta(DebugPlugin.getDefault().getLaunchManager(), IModelDelta.NO_CHANGE); - ModelDelta node = delta; - node = node.addNode(fProcess.getLaunch(), IModelDelta.NO_CHANGE); - node.addNode(fProcess, flags); - } - } - if (delta != null && !isDisposed()) { - fireModelChanged(delta); - } - } + private void fireProcessDelta(int flags) { + ModelDelta delta = null; + synchronized (ProcessProxy.this) { + if (!isDisposed()) { + delta = new ModelDelta(DebugPlugin.getDefault().getLaunchManager(), IModelDelta.NO_CHANGE); + ModelDelta node = delta; + node = node.addNode(fProcess.getLaunch(), IModelDelta.NO_CHANGE); + node.addNode(fProcess, flags); + } + } + if (delta != null && !isDisposed()) { + fireModelChanged(delta); + } + } @Override public synchronized void dispose() { @@ -72,18 +72,18 @@ public class ProcessProxy extends EventHandlerModelProxy { } public ProcessProxy(IProcess process) { - fProcess = process; - } + fProcess = process; + } - @Override + @Override protected synchronized boolean containsEvent(DebugEvent event) { - return event.getSource().equals(fProcess); - } + return event.getSource().equals(fProcess); + } - @Override + @Override protected DebugEventHandler[] createEventHandlers() { - return new DebugEventHandler[] {fProcessEventHandler}; - } + return new DebugEventHandler[] {fProcessEventHandler}; + } @Override public void installed(Viewer viewer) { @@ -91,18 +91,18 @@ public class ProcessProxy extends EventHandlerModelProxy { // select process if in run mode IProcess process = fProcess; if (process != null) { - if (process.isTerminated()) { - fireProcessDelta(IModelDelta.UNINSTALL); - } else { - ILaunch launch = process.getLaunch(); - if (launch != null && ILaunchManager.RUN_MODE.equals(launch.getLaunchMode())) { - // select the process - ModelDelta delta = new ModelDelta(DebugPlugin.getDefault().getLaunchManager(), IModelDelta.NO_CHANGE); - ModelDelta node = delta.addNode(process.getLaunch(), IModelDelta.NO_CHANGE); - node = node.addNode(process, IModelDelta.SELECT); - fireModelChanged(delta); - } - } + if (process.isTerminated()) { + fireProcessDelta(IModelDelta.UNINSTALL); + } else { + ILaunch launch = process.getLaunch(); + if (launch != null && ILaunchManager.RUN_MODE.equals(launch.getLaunchMode())) { + // select the process + ModelDelta delta = new ModelDelta(DebugPlugin.getDefault().getLaunchManager(), IModelDelta.NO_CHANGE); + ModelDelta node = delta.addNode(process.getLaunch(), IModelDelta.NO_CHANGE); + node = node.addNode(process, IModelDelta.SELECT); + fireModelChanged(delta); + } + } } } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/ThreadEventHandler.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/ThreadEventHandler.java index 07e80d2a2..a1f43d5a3 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/ThreadEventHandler.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/ThreadEventHandler.java @@ -65,48 +65,48 @@ public class ThreadEventHandler extends DebugEventHandler { @Override protected void handleSuspend(DebugEvent event) { - IThread thread = (IThread) event.getSource(); + IThread thread = (IThread) event.getSource(); if (event.isEvaluation()) { - ModelDelta delta = buildRootDelta(); - ModelDelta node = addPathToThread(delta, thread); + ModelDelta delta = buildRootDelta(); + ModelDelta node = addPathToThread(delta, thread); node = node.addNode(thread, IModelDelta.STATE); try { IStackFrame frame = thread.getTopStackFrame(); - if (frame != null) { - int flag = IModelDelta.NO_CHANGE; - if (event.getDetail() == DebugEvent.EVALUATION) { - // explicit evaluations can change content - flag = flag | IModelDelta.CONTENT; - } else if (event.getDetail() == DebugEvent.EVALUATION_IMPLICIT) { - // implicit evaluations can change state - flag = flag | IModelDelta.STATE; - } - node.addNode(frame, flag); - fireDelta(delta); - } + if (frame != null) { + int flag = IModelDelta.NO_CHANGE; + if (event.getDetail() == DebugEvent.EVALUATION) { + // explicit evaluations can change content + flag = flag | IModelDelta.CONTENT; + } else if (event.getDetail() == DebugEvent.EVALUATION_IMPLICIT) { + // implicit evaluations can change state + flag = flag | IModelDelta.STATE; + } + node.addNode(frame, flag); + fireDelta(delta); + } } catch (DebugException e) { } - } else { - queueSuspendedThread(event); - int extras = IModelDelta.STATE; - switch (event.getDetail()) { - case DebugEvent.BREAKPOINT: - // on breakpoint also position thread to be top element - extras = IModelDelta.EXPAND | IModelDelta.REVEAL; - break; - case DebugEvent.CLIENT_REQUEST: - extras = IModelDelta.EXPAND; - break; + } else { + queueSuspendedThread(event); + int extras = IModelDelta.STATE; + switch (event.getDetail()) { + case DebugEvent.BREAKPOINT: + // on breakpoint also position thread to be top element + extras = IModelDelta.EXPAND | IModelDelta.REVEAL; + break; + case DebugEvent.CLIENT_REQUEST: + extras = IModelDelta.EXPAND; + break; default: break; - } + } // wait until initialization is completed before sending suspend // event, see bug 491174 comment 1 waitForProxyInitialization(); - fireDeltaUpdatingSelectedFrame(thread, IModelDelta.NO_CHANGE | extras, event); - } + fireDeltaUpdatingSelectedFrame(thread, IModelDelta.NO_CHANGE | extras, event); + } } private void waitForProxyInitialization() { @@ -175,20 +175,20 @@ public class ThreadEventHandler extends DebugEventHandler { IThread thread = queueSuspendedThread(suspend); if (suspend.isEvaluation() && suspend.getDetail() == DebugEvent.EVALUATION_IMPLICIT) { // late implicit evaluation - update thread and frame - ModelDelta delta = buildRootDelta(); - ModelDelta node = addPathToThread(delta, thread); - node = node.addNode(thread, IModelDelta.STATE); + ModelDelta delta = buildRootDelta(); + ModelDelta node = addPathToThread(delta, thread); + node = node.addNode(thread, IModelDelta.STATE); try { IStackFrame frame = thread.getTopStackFrame(); - if (frame != null) { - node.addNode(frame, IModelDelta.STATE); - fireDelta(delta); - } + if (frame != null) { + node.addNode(frame, IModelDelta.STATE); + fireDelta(delta); + } } catch (DebugException e) { } - } else { - fireDeltaUpdatingSelectedFrame(thread, IModelDelta.STATE | IModelDelta.EXPAND, suspend); - } + } else { + fireDeltaUpdatingSelectedFrame(thread, IModelDelta.STATE | IModelDelta.EXPAND, suspend); + } } @Override @@ -244,11 +244,11 @@ public class ThreadEventHandler extends DebugEventHandler { private void fireDeltaUpdatingSelectedFrame(IThread thread, int flags, DebugEvent event) { ModelDelta delta = buildRootDelta(); ModelDelta node = addPathToThread(delta, thread); - IStackFrame prev = null; - synchronized (this) { - prev = fLastTopFrame.get(thread); + IStackFrame prev = null; + synchronized (this) { + prev = fLastTopFrame.get(thread); } - IStackFrame frame = null; + IStackFrame frame = null; try { Object frameToSelect = event.getData(); if (frameToSelect == null || !(frameToSelect instanceof IStackFrame)) { @@ -260,9 +260,9 @@ public class ThreadEventHandler extends DebugEventHandler { } int threadIndex = indexOf(thread); int childCount = childCount(thread); - if (isEqual(frame, prev)) { - if (frame == null) { - if (thread.isSuspended()) { + if (isEqual(frame, prev)) { + if (frame == null) { + if (thread.isSuspended()) { // try retrieving the top frame again, in case we ran into an evaluation earlier try { frame = thread.getTopStackFrame(); @@ -275,31 +275,31 @@ public class ThreadEventHandler extends DebugEventHandler { } else { node = node.addNode(thread, threadIndex, flags, childCount); } - } - } else { - node = node.addNode(thread, threadIndex, flags, childCount); - } - } else { - if (event.getDetail() == DebugEvent.STEP_END) { - if (prev == null) { - // see bug 166602 - expand the thread if this is a step end with no previous top frame - flags = flags | IModelDelta.EXPAND; - } else if (frame == null) { - // there was a previous frame and current is null on a step: transient state - return; - } - } + } + } else { + node = node.addNode(thread, threadIndex, flags, childCount); + } + } else { + if (event.getDetail() == DebugEvent.STEP_END) { + if (prev == null) { + // see bug 166602 - expand the thread if this is a step end with no previous top frame + flags = flags | IModelDelta.EXPAND; + } else if (frame == null) { + // there was a previous frame and current is null on a step: transient state + return; + } + } node = node.addNode(thread, threadIndex, flags | IModelDelta.CONTENT, childCount); - } - if (frame != null) { - node.addNode(frame, indexOf(frame), IModelDelta.STATE | IModelDelta.SELECT, childCount(frame)); - } - synchronized (this) { - if (!isDisposed()) { - fLastTopFrame.put(thread, frame); - } } - fireDelta(delta); + if (frame != null) { + node.addNode(frame, indexOf(frame), IModelDelta.STATE | IModelDelta.SELECT, childCount(frame)); + } + synchronized (this) { + if (!isDisposed()) { + fLastTopFrame.put(thread, frame); + } + } + fireDelta(delta); } /** @@ -357,8 +357,8 @@ public class ThreadEventHandler extends DebugEventHandler { private void fireDeltaUpdatingThread(IThread thread, int flags) { ModelDelta delta = buildRootDelta(); ModelDelta node = addPathToThread(delta, thread); - node = node.addNode(thread, flags); - fireDelta(delta); + node = node.addNode(thread, flags); + fireDelta(delta); } @Override diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/DebugUIViewsMessages.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/DebugUIViewsMessages.java index 95297e202..614c027b5 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/DebugUIViewsMessages.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/DebugUIViewsMessages.java @@ -46,7 +46,7 @@ public class DebugUIViewsMessages extends NLS { NLS.initializeMessages(BUNDLE_NAME, DebugUIViewsMessages.class); } - public static String InspectPopupDialog_0; + public static String InspectPopupDialog_0; - public static String InspectPopupDialog_1; + public static String InspectPopupDialog_1; } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/ViewContextService.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/ViewContextService.java index 62def7381..d779b026d 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/ViewContextService.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/ViewContextService.java @@ -95,11 +95,11 @@ public class ViewContextService implements IDebugContextListener, IPerspectiveLi */ private Set<String> fEnabledPerspectives = new HashSet<>(); - /** - * Whether to ignore perspective change call backs (set to - * true when this class is modifying views). - */ - private boolean fIgnoreChanges = false; + /** + * Whether to ignore perspective change call backs (set to + * true when this class is modifying views). + */ + private boolean fIgnoreChanges = false; /** * The window this service is working for @@ -123,193 +123,193 @@ public class ViewContextService implements IDebugContextListener, IPerspectiveLi private static final String ID_CONTEXT_VIEW_BINDINGS= "contextViewBindings"; //$NON-NLS-1$ // extension elements - private static final String ELEM_CONTEXT_VIEW_BINDING= "contextViewBinding"; //$NON-NLS-1$ - private static final String ELEM_PERSPECTIVE= "perspective"; //$NON-NLS-1$ + private static final String ELEM_CONTEXT_VIEW_BINDING= "contextViewBinding"; //$NON-NLS-1$ + private static final String ELEM_PERSPECTIVE= "perspective"; //$NON-NLS-1$ // extension attributes private static final String ATTR_CONTEXT_ID= "contextId"; //$NON-NLS-1$ private static final String ATTR_VIEW_ID= "viewId"; //$NON-NLS-1$ private static final String ATTR_AUTO_OPEN= "autoOpen"; //$NON-NLS-1$ private static final String ATTR_AUTO_CLOSE= "autoClose"; //$NON-NLS-1$ - private static final String ATTR_PERSPECTIVE_ID= "perspectiveId"; //$NON-NLS-1$ - - // XML tags - private static final String XML_ELEMENT_VIEW_BINDINGS ="viewBindings"; //$NON-NLS-1$ - private static final String XML_ELEMENT_PERSPECTIVE ="perspective"; //$NON-NLS-1$ - private static final String XML_ELEMENT_VIEW = "view"; //$NON-NLS-1$ - private static final String XML_ATTR_ID = "id"; //$NON-NLS-1$ - private static final String XML_ATTR_USER_ACTION = "userAction"; //$NON-NLS-1$ - private static final String XML_VALUE_OPENED = "opened"; //$NON-NLS-1$ - private static final String XML_VALUE_CLOSED = "closed"; //$NON-NLS-1$ - - // ids of base debug views in debug perspective that should not be auto-closed + private static final String ATTR_PERSPECTIVE_ID= "perspectiveId"; //$NON-NLS-1$ + + // XML tags + private static final String XML_ELEMENT_VIEW_BINDINGS ="viewBindings"; //$NON-NLS-1$ + private static final String XML_ELEMENT_PERSPECTIVE ="perspective"; //$NON-NLS-1$ + private static final String XML_ELEMENT_VIEW = "view"; //$NON-NLS-1$ + private static final String XML_ATTR_ID = "id"; //$NON-NLS-1$ + private static final String XML_ATTR_USER_ACTION = "userAction"; //$NON-NLS-1$ + private static final String XML_VALUE_OPENED = "opened"; //$NON-NLS-1$ + private static final String XML_VALUE_CLOSED = "closed"; //$NON-NLS-1$ + + // ids of base debug views in debug perspective that should not be auto-closed private static Set<String> fgBaseDebugViewIds = null; - static { + static { fgBaseDebugViewIds = new HashSet<>(); - fgBaseDebugViewIds.add(IDebugUIConstants.ID_DEBUG_VIEW); - fgBaseDebugViewIds.add(IDebugUIConstants.ID_VARIABLE_VIEW); - fgBaseDebugViewIds.add(IDebugUIConstants.ID_BREAKPOINT_VIEW); - fgBaseDebugViewIds.add(IConsoleConstants.ID_CONSOLE_VIEW); - } + fgBaseDebugViewIds.add(IDebugUIConstants.ID_DEBUG_VIEW); + fgBaseDebugViewIds.add(IDebugUIConstants.ID_VARIABLE_VIEW); + fgBaseDebugViewIds.add(IDebugUIConstants.ID_BREAKPOINT_VIEW); + fgBaseDebugViewIds.add(IConsoleConstants.ID_CONSOLE_VIEW); + } - private static String[] EMPTY_IDS = new String[0]; + private static String[] EMPTY_IDS = new String[0]; - /** - * View bindings for a debug context - */ - private class DebugContextViewBindings { + /** + * View bindings for a debug context + */ + private class DebugContextViewBindings { - // context id - private final String fId; + // context id + private final String fId; - // list of view bindings id's specific to this context - private String[] fViewBindingIds = EMPTY_IDS; + // list of view bindings id's specific to this context + private String[] fViewBindingIds = EMPTY_IDS; - // all bindings including inherited bindings, top down in activation order - private String[] fAllViewBindingIds = null; - // associated binding to activate + // all bindings including inherited bindings, top down in activation order + private String[] fAllViewBindingIds = null; + // associated binding to activate private final Map<String, ViewBinding> fAllViewIdToBindings = new HashMap<>(); - // all context id's in this context hierarchy (top down order) - private String[] fAllConetxtIds = null; - - // id of parent context - private String fParentId; - - /** - * Constructs an empty view binding for the given context. - * - * @param id context id - */ - public DebugContextViewBindings(String id) { - fId = id; - } - - /** - * Returns the context id for these view bindings - * - * @return context id - */ - public String getId() { - return fId; - } - - /** - * Adds the given view binding to this context - * - * @param binding view binding to add - */ - public void addBinding(ViewBinding binding) { - String[] newBindings = new String[fViewBindingIds.length + 1]; - System.arraycopy(fViewBindingIds, 0, newBindings, 0, fViewBindingIds.length); - newBindings[fViewBindingIds.length] = binding.getViewId(); - fAllViewIdToBindings.put(binding.getViewId(), binding); - fViewBindingIds = newBindings; - } - - /** - * Sets the parent id of this view bindings - * - * @param id parent context id - */ - protected void setParentId(String id) { - fParentId = id; - } - - /** - * Returns the id of parent context - * - * @return parent context id - */ - public DebugContextViewBindings getParentContext() { - if (fParentId == null) { - return null; - } - return fContextIdsToBindings.get(fParentId); - } - - /** - * Activates the views in this context hierarchy. Views are activated top down, allowing - * sub-contexts to override settings in a parent context. - * @param page the page context - * @param perspective the perspective description - * @param allViewIds that are relevant to the chain activation. - */ + // all context id's in this context hierarchy (top down order) + private String[] fAllConetxtIds = null; + + // id of parent context + private String fParentId; + + /** + * Constructs an empty view binding for the given context. + * + * @param id context id + */ + public DebugContextViewBindings(String id) { + fId = id; + } + + /** + * Returns the context id for these view bindings + * + * @return context id + */ + public String getId() { + return fId; + } + + /** + * Adds the given view binding to this context + * + * @param binding view binding to add + */ + public void addBinding(ViewBinding binding) { + String[] newBindings = new String[fViewBindingIds.length + 1]; + System.arraycopy(fViewBindingIds, 0, newBindings, 0, fViewBindingIds.length); + newBindings[fViewBindingIds.length] = binding.getViewId(); + fAllViewIdToBindings.put(binding.getViewId(), binding); + fViewBindingIds = newBindings; + } + + /** + * Sets the parent id of this view bindings + * + * @param id parent context id + */ + protected void setParentId(String id) { + fParentId = id; + } + + /** + * Returns the id of parent context + * + * @return parent context id + */ + public DebugContextViewBindings getParentContext() { + if (fParentId == null) { + return null; + } + return fContextIdsToBindings.get(fParentId); + } + + /** + * Activates the views in this context hierarchy. Views are activated top down, allowing + * sub-contexts to override settings in a parent context. + * @param page the page context + * @param perspective the perspective description + * @param allViewIds that are relevant to the chain activation. + */ public void activateChain(IWorkbenchPage page, IPerspectiveDescriptor perspective, Set<String> allViewIds) { - initializeChain(); - doActivation(page, perspective, allViewIds, fAllConetxtIds); - } - - public String[] getAllViewBindingsIds() { - initializeChain(); - return fAllViewBindingIds; - } - - /** - * Activates the view bindings for the specified views and the - * specified contexts in the given page. - * - * @param page page to activate views in - * @param perspective the perspective description - * @param allViewIds id's of all the views that are relevant in this context activation - * @param contextIds associated contexts that are activated - */ + initializeChain(); + doActivation(page, perspective, allViewIds, fAllConetxtIds); + } + + public String[] getAllViewBindingsIds() { + initializeChain(); + return fAllViewBindingIds; + } + + /** + * Activates the view bindings for the specified views and the + * specified contexts in the given page. + * + * @param page page to activate views in + * @param perspective the perspective description + * @param allViewIds id's of all the views that are relevant in this context activation + * @param contextIds associated contexts that are activated + */ private void doActivation(IWorkbenchPage page, IPerspectiveDescriptor perspective, Set<String> allViewIds, String[] contextIds) { - // note activation of all the relevant contexts - for (int i = 0; i < contextIds.length; i++) { + // note activation of all the relevant contexts + for (int i = 0; i < contextIds.length; i++) { addActivated(contextIds[i]); } - // set the active context to be this - setActive(perspective, getId()); - // activate the view bindings and bring most relevant views to top - for (int i = 0; i < fAllViewBindingIds.length; i++) { + // set the active context to be this + setActive(perspective, getId()); + // activate the view bindings and bring most relevant views to top + for (int i = 0; i < fAllViewBindingIds.length; i++) { String viewId = fAllViewBindingIds[i]; ViewBinding binding = fAllViewIdToBindings.get(viewId); binding.activated(page, perspective); - binding.checkZOrder(page, allViewIds); + binding.checkZOrder(page, allViewIds); } - } - - /** - * Builds the top down ordered list of bindings for this context allowing sub-contexts - * to override parent settings. - */ - private synchronized void initializeChain() { - if (fAllViewBindingIds == null) { + } + + /** + * Builds the top down ordered list of bindings for this context allowing sub-contexts + * to override parent settings. + */ + private synchronized void initializeChain() { + if (fAllViewBindingIds == null) { List<String> orderedIds = new ArrayList<>(); List<DebugContextViewBindings> contexts = new ArrayList<>(); - DebugContextViewBindings context = this; - while (context != null) { - contexts.add(0, context); - context = context.getParentContext(); - } - fAllConetxtIds = new String[contexts.size()]; - int pos = 0; + DebugContextViewBindings context = this; + while (context != null) { + contexts.add(0, context); + context = context.getParentContext(); + } + fAllConetxtIds = new String[contexts.size()]; + int pos = 0; for (DebugContextViewBindings bindings : contexts) { - fAllConetxtIds[pos] = bindings.getId(); - pos++; - for (int i = 0; i < bindings.fViewBindingIds.length; i++) { + fAllConetxtIds[pos] = bindings.getId(); + pos++; + for (int i = 0; i < bindings.fViewBindingIds.length; i++) { String viewId = bindings.fViewBindingIds[i]; - if (bindings == this) { - orderedIds.add(viewId); - } - if (!fAllViewIdToBindings.containsKey(viewId)) { - orderedIds.add(viewId); - fAllViewIdToBindings.put(viewId, bindings.fAllViewIdToBindings.get(viewId)); - } + if (bindings == this) { + orderedIds.add(viewId); + } + if (!fAllViewIdToBindings.containsKey(viewId)) { + orderedIds.add(viewId); + fAllViewIdToBindings.put(viewId, bindings.fAllViewIdToBindings.get(viewId)); + } } - } - fAllViewBindingIds = orderedIds.toArray(new String[orderedIds.size()]); - } - } - - /** - * Deactivates this context only (not parents) - * - * @param page workbench page - * @param perspective the perspective description - */ - public void deactivate(IWorkbenchPage page, IPerspectiveDescriptor perspective) { + } + fAllViewBindingIds = orderedIds.toArray(new String[orderedIds.size()]); + } + } + + /** + * Deactivates this context only (not parents) + * + * @param page workbench page + * @param perspective the perspective description + */ + public void deactivate(IWorkbenchPage page, IPerspectiveDescriptor perspective) { removeActivated(getId()); if (isActiveContext(getId())) { setActive(page.getPerspective(), null); @@ -319,211 +319,211 @@ public class ViewContextService implements IDebugContextListener, IPerspectiveLi ViewBinding binding = fAllViewIdToBindings.get(viewId); binding.deactivated(page, perspective); } - } - - /** - * Notes when a view is opened/closed manually. - * - * @param opened opened or closed - * @param viewId the view identifier - */ - public void setViewOpened(boolean opened, String viewId) { - initializeChain(); - ViewBinding binding = fAllViewIdToBindings.get(viewId); - if (binding != null) { - if (opened) { - binding.userOpened(); - } else { - binding.userClosed(); - } - } - } - - public void applyUserSettings(String viewId, Element viewElement) { - initializeChain(); - ViewBinding binding = fAllViewIdToBindings.get(viewId); - if (binding != null) { - binding.applyUserSettings(viewElement); - } - } - - /** - * Save view binding settings into XML document. - * - * @param document the document to save to - * @param root the root XML element - * @param alreadyDone views already done - */ + } + + /** + * Notes when a view is opened/closed manually. + * + * @param opened opened or closed + * @param viewId the view identifier + */ + public void setViewOpened(boolean opened, String viewId) { + initializeChain(); + ViewBinding binding = fAllViewIdToBindings.get(viewId); + if (binding != null) { + if (opened) { + binding.userOpened(); + } else { + binding.userClosed(); + } + } + } + + public void applyUserSettings(String viewId, Element viewElement) { + initializeChain(); + ViewBinding binding = fAllViewIdToBindings.get(viewId); + if (binding != null) { + binding.applyUserSettings(viewElement); + } + } + + /** + * Save view binding settings into XML document. + * + * @param document the document to save to + * @param root the root XML element + * @param alreadyDone views already done + */ public void saveBindings(Document document, Element root, Set<String> alreadyDone) { - for (int i = 0; i < fViewBindingIds.length; i++) { + for (int i = 0; i < fViewBindingIds.length; i++) { String viewId = fViewBindingIds[i]; - if (!alreadyDone.contains(viewId)) { - alreadyDone.add(viewId); - ViewBinding binding = fAllViewIdToBindings.get(viewId); - binding.saveBindings(document, root); - } + if (!alreadyDone.contains(viewId)) { + alreadyDone.add(viewId); + ViewBinding binding = fAllViewIdToBindings.get(viewId); + binding.saveBindings(document, root); + } } - } - } - - /** - * Information for a view - */ - private class ViewBinding { - private final IConfigurationElement fElement; - /** - * Set of perspectives this view was opened in by the user - */ + } + } + + /** + * Information for a view + */ + private class ViewBinding { + private final IConfigurationElement fElement; + /** + * Set of perspectives this view was opened in by the user + */ private final Set<String> fUserOpened = new HashSet<>(); - /** - * Set of perspectives this view was closed in by the user - */ + /** + * Set of perspectives this view was closed in by the user + */ private final Set<String> fUserClosed = new HashSet<>(); - /** - * Set of perspectives this view was auto-opened by view management. - */ + /** + * Set of perspectives this view was auto-opened by view management. + */ private final Set<String> fAutoOpened = new HashSet<>(); - public ViewBinding(IConfigurationElement element) { - fElement = element; - } - - /** - * Returns the id of the view this binding pertains to. - * - * @return the id of the view - */ - public String getViewId() { - return fElement.getAttribute(ATTR_VIEW_ID); - } - - /** - * Returns whether this view binding is set for auto-open. - * - * @return if the view is set to auto-open - */ - public boolean isAutoOpen() { - String autoopen = fElement.getAttribute(ATTR_AUTO_OPEN); - return autoopen == null || "true".equals(autoopen); //$NON-NLS-1$ - } - - /** - * Returns whether this view binding is set for auto-close. - * - * @return if the view is set to auto-close - */ - public boolean isAutoClose() { - String autoclose = fElement.getAttribute(ATTR_AUTO_CLOSE); - return autoclose == null || "true".equals(autoclose); //$NON-NLS-1$ - } - - /** - * Returns whether this view was opened by the user in the active perspective. - * @param perspective the perspective description - * @return if this view was opened by the user - */ - public boolean isUserOpened(IPerspectiveDescriptor perspective) { - return fUserOpened.contains(perspective.getId()); - } - - /** - * Returns whether this view was closed by the user in the active perspective - * @param perspective the description of the perspective - * @return if this view was closed by the user in the active perspective - */ - public boolean isUserClosed(IPerspectiveDescriptor perspective) { - return fUserClosed.contains(getActivePerspective().getId()); - } - - /** - * Returns whether this view is part of the active perspective by default - * - * TODO: we really need an API to determine which views are - * in a perspective by default, but it does not seem to exist. - * @param perspective the description of the perspective - * @return if this view is part of the active perspective by default - */ - public boolean isDefault(IPerspectiveDescriptor perspective) { - String id = perspective.getId(); - if (IDebugUIConstants.ID_DEBUG_PERSPECTIVE.equals(id)) { - return fgBaseDebugViewIds.contains(getViewId()); - } - return false; - } - - protected void userOpened() { - if (isTrackingViews()) { - String id = getActivePerspective().getId(); - fAutoOpened.remove(id); - fUserOpened.add(id); - fUserClosed.remove(id); - saveViewBindings(); - } - } - - protected void userClosed() { - if (isTrackingViews()) { - String id = getActivePerspective().getId(); - fAutoOpened.remove(id); - fUserClosed.add(id); - fUserOpened.remove(id); - saveViewBindings(); - } - } - - /** - * Returns whether the preference is set to track user view open/close. - * - * @return if the service is set to track user view open/close - */ - protected boolean isTrackingViews() { - return DebugUITools.getPreferenceStore().getBoolean(IInternalDebugUIConstants.PREF_TRACK_VIEWS); - } - - /** - * Context has been activated, open/show as required. - * - * @param page the workbench page - * @param perspective the perspective description - */ - public void activated(IWorkbenchPage page, IPerspectiveDescriptor perspective) { - if (!isUserClosed(perspective)) { - if (isAutoOpen()) { - try { - fIgnoreChanges = true; - // Remember whether the view was opened by view management. - // (Bug 128065) - if (page.findViewReference(getViewId()) == null) { - fAutoOpened.add(perspective.getId()); - } - page.showView(getViewId(), null, IWorkbenchPage.VIEW_CREATE); - } catch (PartInitException e) { - DebugUIPlugin.log(e); - } finally { - fIgnoreChanges = false; - } - } - } - } - - /** - * Context has been activated. Check the view stack to see if this view - * should be made visible. - * - * @param page the page to check - * @param relevantViews the array of view identifiers - */ + public ViewBinding(IConfigurationElement element) { + fElement = element; + } + + /** + * Returns the id of the view this binding pertains to. + * + * @return the id of the view + */ + public String getViewId() { + return fElement.getAttribute(ATTR_VIEW_ID); + } + + /** + * Returns whether this view binding is set for auto-open. + * + * @return if the view is set to auto-open + */ + public boolean isAutoOpen() { + String autoopen = fElement.getAttribute(ATTR_AUTO_OPEN); + return autoopen == null || "true".equals(autoopen); //$NON-NLS-1$ + } + + /** + * Returns whether this view binding is set for auto-close. + * + * @return if the view is set to auto-close + */ + public boolean isAutoClose() { + String autoclose = fElement.getAttribute(ATTR_AUTO_CLOSE); + return autoclose == null || "true".equals(autoclose); //$NON-NLS-1$ + } + + /** + * Returns whether this view was opened by the user in the active perspective. + * @param perspective the perspective description + * @return if this view was opened by the user + */ + public boolean isUserOpened(IPerspectiveDescriptor perspective) { + return fUserOpened.contains(perspective.getId()); + } + + /** + * Returns whether this view was closed by the user in the active perspective + * @param perspective the description of the perspective + * @return if this view was closed by the user in the active perspective + */ + public boolean isUserClosed(IPerspectiveDescriptor perspective) { + return fUserClosed.contains(getActivePerspective().getId()); + } + + /** + * Returns whether this view is part of the active perspective by default + * + * TODO: we really need an API to determine which views are + * in a perspective by default, but it does not seem to exist. + * @param perspective the description of the perspective + * @return if this view is part of the active perspective by default + */ + public boolean isDefault(IPerspectiveDescriptor perspective) { + String id = perspective.getId(); + if (IDebugUIConstants.ID_DEBUG_PERSPECTIVE.equals(id)) { + return fgBaseDebugViewIds.contains(getViewId()); + } + return false; + } + + protected void userOpened() { + if (isTrackingViews()) { + String id = getActivePerspective().getId(); + fAutoOpened.remove(id); + fUserOpened.add(id); + fUserClosed.remove(id); + saveViewBindings(); + } + } + + protected void userClosed() { + if (isTrackingViews()) { + String id = getActivePerspective().getId(); + fAutoOpened.remove(id); + fUserClosed.add(id); + fUserOpened.remove(id); + saveViewBindings(); + } + } + + /** + * Returns whether the preference is set to track user view open/close. + * + * @return if the service is set to track user view open/close + */ + protected boolean isTrackingViews() { + return DebugUITools.getPreferenceStore().getBoolean(IInternalDebugUIConstants.PREF_TRACK_VIEWS); + } + + /** + * Context has been activated, open/show as required. + * + * @param page the workbench page + * @param perspective the perspective description + */ + public void activated(IWorkbenchPage page, IPerspectiveDescriptor perspective) { + if (!isUserClosed(perspective)) { + if (isAutoOpen()) { + try { + fIgnoreChanges = true; + // Remember whether the view was opened by view management. + // (Bug 128065) + if (page.findViewReference(getViewId()) == null) { + fAutoOpened.add(perspective.getId()); + } + page.showView(getViewId(), null, IWorkbenchPage.VIEW_CREATE); + } catch (PartInitException e) { + DebugUIPlugin.log(e); + } finally { + fIgnoreChanges = false; + } + } + } + } + + /** + * Context has been activated. Check the view stack to see if this view + * should be made visible. + * + * @param page the page to check + * @param relevantViews the array of view identifiers + */ public void checkZOrder(IWorkbenchPage page, Set<String> relevantViews) { - // see if view is open already - String viewId = getViewId(); + // see if view is open already + String viewId = getViewId(); IViewPart part = page.findView(viewId); - if (part != null) { - IViewPart[] viewStack = page.getViewStack(part); - if (viewStack != null && viewStack.length > 0) { - String top = viewStack[0].getSite().getId(); - if (relevantViews.contains(top)) { - return; - } + if (part != null) { + IViewPart[] viewStack = page.getViewStack(part); + if (viewStack != null && viewStack.length > 0) { + String top = viewStack[0].getSite().getId(); + if (relevantViews.contains(top)) { + return; + } // Don't bring a minimized or fast view to front IViewReference partRef = page.findViewReference(viewId); @@ -531,93 +531,93 @@ public class ViewContextService implements IDebugContextListener, IPerspectiveLi return; } - // an irrelevant view is visible - try { - fIgnoreChanges = true; - page.bringToTop(part); - } finally { - fIgnoreChanges = false; - } - } - } - } - - /** - * Context has been deactivated, close as required. - * - * @param page the workbench page - * @param perspective the perspective description - */ - public void deactivated(IWorkbenchPage page, IPerspectiveDescriptor perspective) { - if (!isUserOpened(perspective)) { - if (fAutoOpened.remove(perspective.getId()) && isAutoClose() && !isDefault(perspective)) { - IViewReference reference = page.findViewReference(getViewId()); - if (reference != null) { - try { - fIgnoreChanges = true; - page.hideView(reference); - } finally { - fIgnoreChanges = false; - } - } - } - } - } - - /** - * Save view binding settings into XML document. - * - * @param document the document to save to - * @param root the root XML element - */ - public void saveBindings(Document document, Element root) { - Element viewElement = document.createElement(XML_ELEMENT_VIEW); - viewElement.setAttribute(XML_ATTR_ID, getViewId()); - appendPerspectives(document, viewElement, fUserOpened, XML_VALUE_OPENED); - appendPerspectives(document, viewElement, fUserClosed, XML_VALUE_CLOSED); - if (viewElement.hasChildNodes()) { - root.appendChild(viewElement); - } - } + // an irrelevant view is visible + try { + fIgnoreChanges = true; + page.bringToTop(part); + } finally { + fIgnoreChanges = false; + } + } + } + } + + /** + * Context has been deactivated, close as required. + * + * @param page the workbench page + * @param perspective the perspective description + */ + public void deactivated(IWorkbenchPage page, IPerspectiveDescriptor perspective) { + if (!isUserOpened(perspective)) { + if (fAutoOpened.remove(perspective.getId()) && isAutoClose() && !isDefault(perspective)) { + IViewReference reference = page.findViewReference(getViewId()); + if (reference != null) { + try { + fIgnoreChanges = true; + page.hideView(reference); + } finally { + fIgnoreChanges = false; + } + } + } + } + } + + /** + * Save view binding settings into XML document. + * + * @param document the document to save to + * @param root the root XML element + */ + public void saveBindings(Document document, Element root) { + Element viewElement = document.createElement(XML_ELEMENT_VIEW); + viewElement.setAttribute(XML_ATTR_ID, getViewId()); + appendPerspectives(document, viewElement, fUserOpened, XML_VALUE_OPENED); + appendPerspectives(document, viewElement, fUserClosed, XML_VALUE_CLOSED); + if (viewElement.hasChildNodes()) { + root.appendChild(viewElement); + } + } private void appendPerspectives(Document document, Element parent, Set<String> perpectives, String xmlValue) { - String[] ids = perpectives.toArray(new String[perpectives.size()]); - for (int i = 0; i < ids.length; i++) { - String id = ids[i]; - Element element = document.createElement(XML_ELEMENT_PERSPECTIVE); - element.setAttribute(XML_ATTR_ID, id); - element.setAttribute(XML_ATTR_USER_ACTION, xmlValue); - parent.appendChild(element); - } - } - - public void applyUserSettings(Element viewElement) { - NodeList list = viewElement.getChildNodes(); - int length = list.getLength(); - for (int i = 0; i < length; ++i) { - Node node = list.item(i); - short type = node.getNodeType(); - if (type == Node.ELEMENT_NODE) { - Element entry = (Element) node; - if(entry.getNodeName().equalsIgnoreCase(XML_ELEMENT_PERSPECTIVE)){ - String id = entry.getAttribute(XML_ATTR_ID); - String setting = entry.getAttribute(XML_ATTR_USER_ACTION); - if (id != null) { - if (XML_VALUE_CLOSED.equals(setting)) { - fUserClosed.add(id); - } else if (XML_VALUE_OPENED.equals(setting)) { - fUserOpened.add(id); - } - } - } - } - } - } - } - - private IDebugContextService getDebugContextService() { - return fDebugContextService; - } + String[] ids = perpectives.toArray(new String[perpectives.size()]); + for (int i = 0; i < ids.length; i++) { + String id = ids[i]; + Element element = document.createElement(XML_ELEMENT_PERSPECTIVE); + element.setAttribute(XML_ATTR_ID, id); + element.setAttribute(XML_ATTR_USER_ACTION, xmlValue); + parent.appendChild(element); + } + } + + public void applyUserSettings(Element viewElement) { + NodeList list = viewElement.getChildNodes(); + int length = list.getLength(); + for (int i = 0; i < length; ++i) { + Node node = list.item(i); + short type = node.getNodeType(); + if (type == Node.ELEMENT_NODE) { + Element entry = (Element) node; + if(entry.getNodeName().equalsIgnoreCase(XML_ELEMENT_PERSPECTIVE)){ + String id = entry.getAttribute(XML_ATTR_ID); + String setting = entry.getAttribute(XML_ATTR_USER_ACTION); + if (id != null) { + if (XML_VALUE_CLOSED.equals(setting)) { + fUserClosed.add(id); + } else if (XML_VALUE_OPENED.equals(setting)) { + fUserOpened.add(id); + } + } + } + } + } + } + } + + private IDebugContextService getDebugContextService() { + return fDebugContextService; + } /** * Creates a service for the given window @@ -627,9 +627,9 @@ public class ViewContextService implements IDebugContextListener, IPerspectiveLi ViewContextService(IWorkbenchWindow window) { fWindow = window; fContextService = PlatformUI.getWorkbench().getAdapter(IContextService.class); - fDebugContextService = DebugUITools.getDebugContextManager().getContextService(fWindow); + fDebugContextService = DebugUITools.getDebugContextManager().getContextService(fWindow); loadContextToViewExtensions(); - applyUserViewBindings(); + applyUserViewBindings(); loadPerspectives(); window.addPerspectiveListener(this); getDebugContextService().addDebugContextListener(this); @@ -639,10 +639,10 @@ public class ViewContextService implements IDebugContextListener, IPerspectiveLi } fContextService.addContextManagerListener(this); if (fWindow != null) { - IWorkbenchPage page = fWindow.getActivePage(); - if (page != null) { - fActivePerspective = page.getPerspective(); - } + IWorkbenchPage page = fWindow.getActivePage(); + if (page != null) { + fActivePerspective = page.getPerspective(); + } } } @@ -655,7 +655,7 @@ public class ViewContextService implements IDebugContextListener, IPerspectiveLi node.removePreferenceChangeListener(this); } fContextService.removeContextManagerListener(this); - fActivePerspective = null; + fActivePerspective = null; } /** @@ -668,63 +668,63 @@ public class ViewContextService implements IDebugContextListener, IPerspectiveLi for (int i = 0; i < configurationElements.length; i++) { IConfigurationElement element = configurationElements[i]; if ( ELEM_CONTEXT_VIEW_BINDING.equals(element.getName()) ) { - String viewId = element.getAttribute(ATTR_VIEW_ID); - String contextId = element.getAttribute(ATTR_CONTEXT_ID); - if (contextId == null || viewId == null) { - continue; - } - ViewBinding info = new ViewBinding(element); - DebugContextViewBindings bindings = fContextIdsToBindings.get(contextId); - if (bindings == null) { - bindings = new DebugContextViewBindings(contextId); - fContextIdsToBindings.put(contextId, bindings); - } - bindings.addBinding(info); + String viewId = element.getAttribute(ATTR_VIEW_ID); + String contextId = element.getAttribute(ATTR_CONTEXT_ID); + if (contextId == null || viewId == null) { + continue; + } + ViewBinding info = new ViewBinding(element); + DebugContextViewBindings bindings = fContextIdsToBindings.get(contextId); + if (bindings == null) { + bindings = new DebugContextViewBindings(contextId); + fContextIdsToBindings.put(contextId, bindings); + } + bindings.addBinding(info); } } linkParentContexts(); } - /** - * Applies user settings that modify view binding extensions. - */ - private void applyUserViewBindings() { - String xml = DebugUITools.getPreferenceStore().getString(IInternalDebugUIConstants.PREF_USER_VIEW_BINDINGS); - if (xml.length() > 0) { - try { - Element root = DebugPlugin.parseDocument(xml); - NodeList list = root.getChildNodes(); - int length = list.getLength(); - for (int i = 0; i < length; ++i) { - Node node = list.item(i); - short type = node.getNodeType(); - if (type == Node.ELEMENT_NODE) { - Element entry = (Element) node; - if(entry.getNodeName().equalsIgnoreCase(XML_ELEMENT_VIEW)){ - String id = entry.getAttribute(XML_ATTR_ID); + /** + * Applies user settings that modify view binding extensions. + */ + private void applyUserViewBindings() { + String xml = DebugUITools.getPreferenceStore().getString(IInternalDebugUIConstants.PREF_USER_VIEW_BINDINGS); + if (xml.length() > 0) { + try { + Element root = DebugPlugin.parseDocument(xml); + NodeList list = root.getChildNodes(); + int length = list.getLength(); + for (int i = 0; i < length; ++i) { + Node node = list.item(i); + short type = node.getNodeType(); + if (type == Node.ELEMENT_NODE) { + Element entry = (Element) node; + if(entry.getNodeName().equalsIgnoreCase(XML_ELEMENT_VIEW)){ + String id = entry.getAttribute(XML_ATTR_ID); for (DebugContextViewBindings binding : fContextIdsToBindings.values()) { - binding.applyUserSettings(id, entry); - } - } - } - } - } catch (CoreException e) { - DebugUIPlugin.log(e); - } - } - } + binding.applyUserSettings(id, entry); + } + } + } + } + } catch (CoreException e) { + DebugUIPlugin.log(e); + } + } + } /** * Load the collection of perspectives in which view management will occur from the preference store. */ private void loadPerspectives() { - String preference = DebugUIPlugin.getDefault().getPreferenceStore().getString( - IDebugUIConstants.PREF_MANAGE_VIEW_PERSPECTIVES); - if (IDebugUIConstants.PREF_MANAGE_VIEW_PERSPECTIVES_DEFAULT.equals(preference)) { - fEnabledPerspectives = getDefaultEnabledPerspectives(); - } else { - fEnabledPerspectives = parseList(preference); - } + String preference = DebugUIPlugin.getDefault().getPreferenceStore().getString( + IDebugUIConstants.PREF_MANAGE_VIEW_PERSPECTIVES); + if (IDebugUIConstants.PREF_MANAGE_VIEW_PERSPECTIVES_DEFAULT.equals(preference)) { + fEnabledPerspectives = getDefaultEnabledPerspectives(); + } else { + fEnabledPerspectives = parseList(preference); + } } /** @@ -746,11 +746,11 @@ public class ViewContextService implements IDebugContextListener, IPerspectiveLi * @return active perspective or <code>null</code> */ private IPerspectiveDescriptor getActivePerspective() { - if (fWindow == null) { - return null; - } + if (fWindow == null) { + return null; + } - return fActivePerspective; + return fActivePerspective; } /** @@ -770,29 +770,29 @@ public class ViewContextService implements IDebugContextListener, IPerspectiveLi } /** - * Calculates the default set of perspectives enabled for view management - * based on the contextViewBindings extension point. - * - * @return set of enabled perspectives. - * - * @since 3.5 - */ + * Calculates the default set of perspectives enabled for view management + * based on the contextViewBindings extension point. + * + * @return set of enabled perspectives. + * + * @since 3.5 + */ public static Set<String> getDefaultEnabledPerspectives() { Set<String> perspectives = new HashSet<>(4); - IExtensionPoint extensionPoint= Platform.getExtensionRegistry().getExtensionPoint(DebugUIPlugin.getUniqueIdentifier(), ID_CONTEXT_VIEW_BINDINGS); - IConfigurationElement[] configurationElements = extensionPoint.getConfigurationElements(); - for (int i = 0; i < configurationElements.length; i++) { - IConfigurationElement element = configurationElements[i]; - if ( ELEM_PERSPECTIVE.equals(element.getName()) ) { - String perspectiveId = element.getAttribute(ATTR_PERSPECTIVE_ID); - if (perspectiveId != null) { - perspectives.add(perspectiveId); - } - } - } - - return perspectives; - } + IExtensionPoint extensionPoint= Platform.getExtensionRegistry().getExtensionPoint(DebugUIPlugin.getUniqueIdentifier(), ID_CONTEXT_VIEW_BINDINGS); + IConfigurationElement[] configurationElements = extensionPoint.getConfigurationElements(); + for (int i = 0; i < configurationElements.length; i++) { + IConfigurationElement element = configurationElements[i]; + if ( ELEM_PERSPECTIVE.equals(element.getName()) ) { + String perspectiveId = element.getAttribute(ATTR_PERSPECTIVE_ID); + if (perspectiveId != null) { + perspectives.add(perspectiveId); + } + } + } + + return perspectives; + } public void contextActivated(ISelection selection) { if (isEnabledPerspective()) { @@ -814,26 +814,26 @@ public class ViewContextService implements IDebugContextListener, IPerspectiveLi List<String> workbenchContexts = DebugModelContextBindingManager.getDefault().getWorkbenchContextsForDebugContext(target); // TODO: do we need to check if contexts are actually enabled in workbench first? if (!workbenchContexts.isEmpty()) { - // Quickly check if any contexts need activating - boolean needToActivate = false; - for (int i = 0; i < workbenchContexts.size(); i++) { - if (!isActivated(workbenchContexts.get(i))) { - needToActivate = true; - break; - } - } - - if (needToActivate) { + // Quickly check if any contexts need activating + boolean needToActivate = false; + for (int i = 0; i < workbenchContexts.size(); i++) { + if (!isActivated(workbenchContexts.get(i))) { + needToActivate = true; + break; + } + } + + if (needToActivate) { Set<String> allViewIds = getAllContextsViewIDs(workbenchContexts); - // if all contexts already activate and last context is already active context == done - for (int i = 0; i < workbenchContexts.size(); i++) { - String contextId = workbenchContexts.get(i); - if (!isActivated(contextId)) { - activateChain(contextId, getActivePerspective(), allViewIds); - } - } - } + // if all contexts already activate and last context is already active context == done + for (int i = 0; i < workbenchContexts.size(); i++) { + String contextId = workbenchContexts.get(i); + if (!isActivated(contextId)) { + activateChain(contextId, getActivePerspective(), allViewIds); + } + } + } } } } catch (CoreException e) { @@ -942,26 +942,26 @@ public class ViewContextService implements IDebugContextListener, IPerspectiveLi public void perspectiveChanged(IWorkbenchPage page, IPerspectiveDescriptor perspective, IWorkbenchPartReference partRef, String changeId) { if (!fIgnoreChanges && page.getWorkbenchWindow().equals(fWindow)) { if(partRef != null) { - if (IWorkbenchPage.CHANGE_VIEW_SHOW == changeId || IWorkbenchPage.CHANGE_VIEW_HIDE == changeId) { - // Update only the contexts which are currently active (Bug 128065) + if (IWorkbenchPage.CHANGE_VIEW_SHOW == changeId || IWorkbenchPage.CHANGE_VIEW_HIDE == changeId) { + // Update only the contexts which are currently active (Bug 128065) Set<String> activatedContexts = fPerspectiveToActivatedContexts.get(perspective); - if (activatedContexts != null) { + if (activatedContexts != null) { for (String id : activatedContexts) { DebugContextViewBindings bindings = fContextIdsToBindings.get(id); - if (bindings != null) { - bindings.setViewOpened(IWorkbenchPage.CHANGE_VIEW_SHOW == changeId, partRef.getId()); - } - } - } - } + if (bindings != null) { + bindings.setViewOpened(IWorkbenchPage.CHANGE_VIEW_SHOW == changeId, partRef.getId()); + } + } + } + } } - } + } } @Override public void perspectiveActivated(IWorkbenchPage page, IPerspectiveDescriptor perspective) { if (page.getWorkbenchWindow().equals(fWindow)) { - fActivePerspective = perspective; + fActivePerspective = perspective; ISelection activeContext = getDebugContextService().getActiveContext(); if (activeContext != null) { contextActivated(activeContext); @@ -999,16 +999,16 @@ public class ViewContextService implements IDebugContextListener, IPerspectiveLi } TreeSet<String> viewIds = new TreeSet<>(); - for (int i = 0; i < contextsIds.size(); i++) { - DebugContextViewBindings bindings= fContextIdsToBindings.get(contextsIds.get(i)); - if (bindings != null) { - String[] bindingViewIds = bindings.getAllViewBindingsIds(); - for (int j = 0; j < bindingViewIds.length; j++) { - viewIds.add(bindingViewIds[j]); - } - } - } - return viewIds; + for (int i = 0; i < contextsIds.size(); i++) { + DebugContextViewBindings bindings= fContextIdsToBindings.get(contextsIds.get(i)); + if (bindings != null) { + String[] bindingViewIds = bindings.getAllViewBindingsIds(); + for (int j = 0; j < bindingViewIds.length; j++) { + viewIds.add(bindingViewIds[j]); + } + } + } + return viewIds; } /** @@ -1062,7 +1062,7 @@ public class ViewContextService implements IDebugContextListener, IPerspectiveLi } private void deactivate(String contextId, IPerspectiveDescriptor perspective) { - if (fWindow == null) + if (fWindow == null) { return; // disposed } @@ -1101,48 +1101,48 @@ public class ViewContextService implements IDebugContextListener, IPerspectiveLi return fContextIdsToBindings.containsKey(id); } - /** - * Save view binding settings that differ from extension settings - */ - private void saveViewBindings() { - try { - Document document = DebugPlugin.newDocument(); - Element root = document.createElement(XML_ELEMENT_VIEW_BINDINGS); - document.appendChild(root); + /** + * Save view binding settings that differ from extension settings + */ + private void saveViewBindings() { + try { + Document document = DebugPlugin.newDocument(); + Element root = document.createElement(XML_ELEMENT_VIEW_BINDINGS); + document.appendChild(root); Set<String> done = new HashSet<>(); for (DebugContextViewBindings binding : fContextIdsToBindings.values()) { - binding.saveBindings(document, root, done); - } - String prefValue = IInternalDebugCoreConstants.EMPTY_STRING; - if (root.hasChildNodes()) { - prefValue = DebugPlugin.serializeDocument(document); - } - fIgnoreChanges = true; - DebugUITools.getPreferenceStore().setValue(IInternalDebugUIConstants.PREF_USER_VIEW_BINDINGS, prefValue); - } catch (CoreException e) { - DebugUIPlugin.log(e); - } finally { - fIgnoreChanges = false; - } - - } - - /** - * Returns the perspectives in which debugging is enabled. - * - * @return the array of perspective identifiers in which debugging is enabled - */ - public String[] getEnabledPerspectives() { - return fEnabledPerspectives.toArray(new String[fEnabledPerspectives.size()]); - } - - /** - * Show the view without effecting user preferences - * - * @param viewId the id of the view to show - */ - public void showViewQuiet(String viewId) { - if (fWindow == null) + binding.saveBindings(document, root, done); + } + String prefValue = IInternalDebugCoreConstants.EMPTY_STRING; + if (root.hasChildNodes()) { + prefValue = DebugPlugin.serializeDocument(document); + } + fIgnoreChanges = true; + DebugUITools.getPreferenceStore().setValue(IInternalDebugUIConstants.PREF_USER_VIEW_BINDINGS, prefValue); + } catch (CoreException e) { + DebugUIPlugin.log(e); + } finally { + fIgnoreChanges = false; + } + + } + + /** + * Returns the perspectives in which debugging is enabled. + * + * @return the array of perspective identifiers in which debugging is enabled + */ + public String[] getEnabledPerspectives() { + return fEnabledPerspectives.toArray(new String[fEnabledPerspectives.size()]); + } + + /** + * Show the view without effecting user preferences + * + * @param viewId the id of the view to show + */ + public void showViewQuiet(String viewId) { + if (fWindow == null) { return; // disposed; } @@ -1161,12 +1161,12 @@ public class ViewContextService implements IDebugContextListener, IPerspectiveLi fIgnoreChanges = false; } } - } + } @Override public void perspectivePreDeactivate(IWorkbenchPage page, IPerspectiveDescriptor perspective) { if (page.getWorkbenchWindow().equals(fWindow)) { - fActivePerspective = null; + fActivePerspective = null; clean(perspective); } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointContainer.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointContainer.java index 319dbb85f..a643263f8 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointContainer.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointContainer.java @@ -44,587 +44,587 @@ public class BreakpointContainer extends ElementContentProvider implements IAdap */ final private List<IBreakpoint> fBreakpoints = new ArrayList<>(); - /** - * Child containers - inserting new element into this container should use the insertChildContainer method - */ + /** + * Child containers - inserting new element into this container should use the insertChildContainer method + */ final private List<BreakpointContainer> fChildContainers = new ArrayList<>(); - /** - * The category for this container - */ - private IAdaptable fCategory; - - /** - * The breakpoint organizer for this container - */ - private IBreakpointOrganizer fOrganizer; - - /** - * The nested breakpoint organizer - */ - private IBreakpointOrganizer[] fNesting; - - /** - * A flag to indicate this is the default container - */ - private boolean fDefaultContainer; - - /** - * Parent container - */ - private BreakpointContainer fParent; - - /** - * The comparator, will be use to compare the order for inserting new element into this container - */ - private ElementComparator fComparator; - - /** - * Constructor, intended to be call when creating the root container. - * - * @param organizers the breakpoint organizer for this container - * @param comparator the element comparator, can be <code>null</code>. If <code>null</code> than new element - * will be added to the end of the list. - */ - public BreakpointContainer(IBreakpointOrganizer[] organizers, ElementComparator comparator) { - fNesting = organizers; - fComparator = comparator; - } - - /** - * Constructor, intended to be call within this class only. - * - * @param parent the parent breakpoint container - * @param category the category for this container - * @param organizer the organizer for this container - * @param comparator the element comparator - * @param nesting the nested breakpoint organizer - */ - private BreakpointContainer(BreakpointContainer parent, IAdaptable category, IBreakpointOrganizer organizer, - ElementComparator comparator, IBreakpointOrganizer[] nesting) { - this(category, organizer, nesting); - fParent = parent; - fComparator = comparator; - } - - /** - * Constructor, intended to be call when reorganizing the content. - * - * @param category the breakpoint category - * @param organizer the breakpoint organizer - * @param nesting the nested breakpoint organizer - */ - BreakpointContainer(IAdaptable category, IBreakpointOrganizer organizer, IBreakpointOrganizer[] nesting) { - fCategory = category; - fOrganizer = organizer; - fNesting = nesting; - } - - /** - * Initialize the default containers. - * - * @param parentDelta the parent delta, addition child delta will be added to the parent - */ - public void initDefaultContainers(ModelDelta parentDelta) { - // seed with all nested categories - if (fNesting != null && fNesting.length > 0) { - IAdaptable[] emptyCategories = fNesting[0].getCategories(); - if (emptyCategories != null) { - for (int i = 0; i < emptyCategories.length; i++) { - IAdaptable empty = emptyCategories[i]; - BreakpointContainer container = findExistingContainer(fChildContainers, empty); - if (container == null) { - IBreakpointOrganizer[] siblings = new IBreakpointOrganizer[fNesting.length - 1]; - System.arraycopy(fNesting, 1, siblings, 0, siblings.length); - container = new BreakpointContainer(this, empty, fNesting[0], fComparator, siblings); - insertChildContainer(container); - container.fDefaultContainer = true; - - int size = container.getChildren().length; - parentDelta.addNode(container, fChildContainers.indexOf(container), IModelDelta.INSTALL|IModelDelta.ADDED|IModelDelta.EXPAND, size); - - } - } - } - } - } - - /** - * Insert the breakpoint to this container. - * - * @param breakpoint the new breakpoint - * @return the index of the breakpoint in the cache, -1 if the breakpoint already exist - */ - private int insertBreakpoint(IBreakpoint breakpoint) { - if (fBreakpoints.contains(breakpoint) || breakpoint == null) { - return -1; - } - int index = fBreakpoints.size(); - for (; fComparator != null && index > 0; index--) { - if (fComparator.compare(fBreakpoints.get(index-1), breakpoint) < 0) { + /** + * The category for this container + */ + private IAdaptable fCategory; + + /** + * The breakpoint organizer for this container + */ + private IBreakpointOrganizer fOrganizer; + + /** + * The nested breakpoint organizer + */ + private IBreakpointOrganizer[] fNesting; + + /** + * A flag to indicate this is the default container + */ + private boolean fDefaultContainer; + + /** + * Parent container + */ + private BreakpointContainer fParent; + + /** + * The comparator, will be use to compare the order for inserting new element into this container + */ + private ElementComparator fComparator; + + /** + * Constructor, intended to be call when creating the root container. + * + * @param organizers the breakpoint organizer for this container + * @param comparator the element comparator, can be <code>null</code>. If <code>null</code> than new element + * will be added to the end of the list. + */ + public BreakpointContainer(IBreakpointOrganizer[] organizers, ElementComparator comparator) { + fNesting = organizers; + fComparator = comparator; + } + + /** + * Constructor, intended to be call within this class only. + * + * @param parent the parent breakpoint container + * @param category the category for this container + * @param organizer the organizer for this container + * @param comparator the element comparator + * @param nesting the nested breakpoint organizer + */ + private BreakpointContainer(BreakpointContainer parent, IAdaptable category, IBreakpointOrganizer organizer, + ElementComparator comparator, IBreakpointOrganizer[] nesting) { + this(category, organizer, nesting); + fParent = parent; + fComparator = comparator; + } + + /** + * Constructor, intended to be call when reorganizing the content. + * + * @param category the breakpoint category + * @param organizer the breakpoint organizer + * @param nesting the nested breakpoint organizer + */ + BreakpointContainer(IAdaptable category, IBreakpointOrganizer organizer, IBreakpointOrganizer[] nesting) { + fCategory = category; + fOrganizer = organizer; + fNesting = nesting; + } + + /** + * Initialize the default containers. + * + * @param parentDelta the parent delta, addition child delta will be added to the parent + */ + public void initDefaultContainers(ModelDelta parentDelta) { + // seed with all nested categories + if (fNesting != null && fNesting.length > 0) { + IAdaptable[] emptyCategories = fNesting[0].getCategories(); + if (emptyCategories != null) { + for (int i = 0; i < emptyCategories.length; i++) { + IAdaptable empty = emptyCategories[i]; + BreakpointContainer container = findExistingContainer(fChildContainers, empty); + if (container == null) { + IBreakpointOrganizer[] siblings = new IBreakpointOrganizer[fNesting.length - 1]; + System.arraycopy(fNesting, 1, siblings, 0, siblings.length); + container = new BreakpointContainer(this, empty, fNesting[0], fComparator, siblings); + insertChildContainer(container); + container.fDefaultContainer = true; + + int size = container.getChildren().length; + parentDelta.addNode(container, fChildContainers.indexOf(container), IModelDelta.INSTALL|IModelDelta.ADDED|IModelDelta.EXPAND, size); + + } + } + } + } + } + + /** + * Insert the breakpoint to this container. + * + * @param breakpoint the new breakpoint + * @return the index of the breakpoint in the cache, -1 if the breakpoint already exist + */ + private int insertBreakpoint(IBreakpoint breakpoint) { + if (fBreakpoints.contains(breakpoint) || breakpoint == null) { + return -1; + } + int index = fBreakpoints.size(); + for (; fComparator != null && index > 0; index--) { + if (fComparator.compare(fBreakpoints.get(index-1), breakpoint) < 0) { break; } - } - if (index < 0) { - index = 0; - } - fBreakpoints.add(index, breakpoint); - return index; - } - - /** - * Insert the child container this container. - * - * @param container the child container - * @return the index of the container in the cache, -1 if the child container already exist - */ - private int insertChildContainer(BreakpointContainer container) { - int index = fChildContainers.size(); - for (; fComparator != null && index > 0; index--) { - if (fComparator.compare(fChildContainers.get(index-1), container) < 0) { + } + if (index < 0) { + index = 0; + } + fBreakpoints.add(index, breakpoint); + return index; + } + + /** + * Insert the child container this container. + * + * @param container the child container + * @return the index of the container in the cache, -1 if the child container already exist + */ + private int insertChildContainer(BreakpointContainer container) { + int index = fChildContainers.size(); + for (; fComparator != null && index > 0; index--) { + if (fComparator.compare(fChildContainers.get(index-1), container) < 0) { break; } - } + } - if (index < 0) { + if (index < 0) { index = 0; } - fChildContainers.add(index, container); - - return index; - } - - - /** - * Returns the element comparator. - * - * @return the element comparator - */ - public ElementComparator getElementComparator() { - return fComparator; - } - - /** - * Returns the parent container, can be <code>null</code>. - * - * @return the parent container - */ - public BreakpointContainer getParent() { - return fParent; - } - - /** - * Determine whether there is any nested container. - * - * @return true if has nested container - */ - private boolean hasNesting() { - return fNesting != null && fNesting.length > 0; - } - - /** - * Get the categories for the breakpoint with the given organizer. - * - * @param breakpoint the breakpoint - * @param organizer the organizer - * @return the categories - */ - private static IAdaptable[] getCategories(IBreakpoint breakpoint, IBreakpointOrganizer organizer) { - IAdaptable[] categories = organizer.getCategories(breakpoint); - if (categories == null || categories.length == 0) { + fChildContainers.add(index, container); + + return index; + } + + + /** + * Returns the element comparator. + * + * @return the element comparator + */ + public ElementComparator getElementComparator() { + return fComparator; + } + + /** + * Returns the parent container, can be <code>null</code>. + * + * @return the parent container + */ + public BreakpointContainer getParent() { + return fParent; + } + + /** + * Determine whether there is any nested container. + * + * @return true if has nested container + */ + private boolean hasNesting() { + return fNesting != null && fNesting.length > 0; + } + + /** + * Get the categories for the breakpoint with the given organizer. + * + * @param breakpoint the breakpoint + * @param organizer the organizer + * @return the categories + */ + private static IAdaptable[] getCategories(IBreakpoint breakpoint, IBreakpointOrganizer organizer) { + IAdaptable[] categories = organizer.getCategories(breakpoint); + if (categories == null || categories.length == 0) { categories = OtherBreakpointCategory.getCategories(organizer); } - return categories; - } - - /** - * Find existing breakpoint container in the container array the given category. - * - * @param containers the container array - * @param category the category - * @return the breakpoint container, can be <code>null</code>. - */ + return categories; + } + + /** + * Find existing breakpoint container in the container array the given category. + * + * @param containers the container array + * @param category the category + * @return the breakpoint container, can be <code>null</code>. + */ private static BreakpointContainer findExistingContainer(List<BreakpointContainer> containers, IAdaptable category) { for (BreakpointContainer c : containers) { - if (category.equals(c.getCategory())) { + if (category.equals(c.getCategory())) { return c; } - } - return null; - } - - // TODO [pchuong]: can be remove if BreakpointsContentProvider no longer uses this class - void addBreakpoint(IBreakpoint breakpoint) { - addBreakpoint(breakpoint, new ModelDelta(null, IModelDelta.NO_CHANGE)); - } - - /** - * Add a breakpoint to the container, additional delta will be added to the root delta. - * - * @param breakpoint the breakpoint to added - * @param rootDelta the root delta of this container - * @see #removeBreakpoint - */ - public void addBreakpoint(IBreakpoint breakpoint, ModelDelta rootDelta) { - final int bpIndex = insertBreakpoint(breakpoint); - if (bpIndex < 0) { + } + return null; + } + + // TODO [pchuong]: can be remove if BreakpointsContentProvider no longer uses this class + void addBreakpoint(IBreakpoint breakpoint) { + addBreakpoint(breakpoint, new ModelDelta(null, IModelDelta.NO_CHANGE)); + } + + /** + * Add a breakpoint to the container, additional delta will be added to the root delta. + * + * @param breakpoint the breakpoint to added + * @param rootDelta the root delta of this container + * @see #removeBreakpoint + */ + public void addBreakpoint(IBreakpoint breakpoint, ModelDelta rootDelta) { + final int bpIndex = insertBreakpoint(breakpoint); + if (bpIndex < 0) { return; } - if (hasNesting()) { - IBreakpointOrganizer organizer = fNesting[0]; - - // get the breakpoint categories from the organizer - IAdaptable[] categories = getCategories(breakpoint, organizer); - - for (int i = 0; i < categories.length; ++i) { - ModelDelta childDelta = null; - IAdaptable category = categories[i]; - BreakpointContainer container = findExistingContainer(fChildContainers, category); - - // create a new container if it doesn't exist - if (container == null) { - IBreakpointOrganizer[] nesting = null; - if (fNesting.length > 1) { - nesting = new IBreakpointOrganizer[fNesting.length - 1]; - System.arraycopy(fNesting, 1, nesting, 0, nesting.length); - } - container = new BreakpointContainer(this, category, organizer, fComparator, nesting); - insertChildContainer(container); - childDelta = rootDelta.addNode(container, fChildContainers.indexOf(container), IModelDelta.INSERTED|IModelDelta.INSTALL, -1); - - } else { + if (hasNesting()) { + IBreakpointOrganizer organizer = fNesting[0]; + + // get the breakpoint categories from the organizer + IAdaptable[] categories = getCategories(breakpoint, organizer); + + for (int i = 0; i < categories.length; ++i) { + ModelDelta childDelta = null; + IAdaptable category = categories[i]; + BreakpointContainer container = findExistingContainer(fChildContainers, category); + + // create a new container if it doesn't exist + if (container == null) { + IBreakpointOrganizer[] nesting = null; + if (fNesting.length > 1) { + nesting = new IBreakpointOrganizer[fNesting.length - 1]; + System.arraycopy(fNesting, 1, nesting, 0, nesting.length); + } + container = new BreakpointContainer(this, category, organizer, fComparator, nesting); + insertChildContainer(container); + childDelta = rootDelta.addNode(container, fChildContainers.indexOf(container), IModelDelta.INSERTED|IModelDelta.INSTALL, -1); + + } else { childDelta = rootDelta.addNode(container, fChildContainers.indexOf(container), IModelDelta.STATE, -1); - } - - container.addBreakpoint(breakpoint, childDelta); - childDelta.setChildCount(container.getChildren().length); - } - - } else { - // TODO [pchuong]: There seems to be some kind of problem when the INSERTED flag is used, - // there is a additional checkbox added to the end of the tree. - // Also the tree seems to have a strange visual effect when using the INSERTED - // flag for the child node instead of ADDED flag. Note: all breakpoint delta - // is using the ADDED flag in this class. - rootDelta.addNode(breakpoint, bpIndex, IModelDelta.ADDED|IModelDelta.INSTALL, 0); - // rootDelta.addNode(breakpoint, bpIndex, IModelDelta.INSERTED|IModelDelta.INSTALL, 0); - - rootDelta.setFlags(rootDelta.getFlags() | IModelDelta.EXPAND); - } - } - - /** - * Remove a breakpoint from the container, additional delta will be added to the root delta. - * - * @param breakpoint the breakpoint to remove - * @param rootDelta the root delta of this container - * @return if the breakpoint was successfully removed - * @see #addBreakpoint - */ - public boolean removeBreakpoint(IBreakpoint breakpoint, ModelDelta rootDelta) { - boolean removed = fBreakpoints.remove(breakpoint); - - if (removed) { - boolean addRemoveBpDelta = getContainers().length == 0; + } + + container.addBreakpoint(breakpoint, childDelta); + childDelta.setChildCount(container.getChildren().length); + } + + } else { + // TODO [pchuong]: There seems to be some kind of problem when the INSERTED flag is used, + // there is a additional checkbox added to the end of the tree. + // Also the tree seems to have a strange visual effect when using the INSERTED + // flag for the child node instead of ADDED flag. Note: all breakpoint delta + // is using the ADDED flag in this class. + rootDelta.addNode(breakpoint, bpIndex, IModelDelta.ADDED|IModelDelta.INSTALL, 0); + // rootDelta.addNode(breakpoint, bpIndex, IModelDelta.INSERTED|IModelDelta.INSTALL, 0); + + rootDelta.setFlags(rootDelta.getFlags() | IModelDelta.EXPAND); + } + } + + /** + * Remove a breakpoint from the container, additional delta will be added to the root delta. + * + * @param breakpoint the breakpoint to remove + * @param rootDelta the root delta of this container + * @return if the breakpoint was successfully removed + * @see #addBreakpoint + */ + public boolean removeBreakpoint(IBreakpoint breakpoint, ModelDelta rootDelta) { + boolean removed = fBreakpoints.remove(breakpoint); + + if (removed) { + boolean addRemoveBpDelta = getContainers().length == 0; Iterator<BreakpointContainer> it = fChildContainers.iterator(); - while (it.hasNext()) { - BreakpointContainer container = it.next(); + while (it.hasNext()) { + BreakpointContainer container = it.next(); // if the breakpoint contains in the container and it is the only breakpoint, // than remove the container from the collection - if (container.contains(breakpoint)) { - ModelDelta childDelta = null; - if ((!container.isDefaultContainer()) && (container.getBreakpoints().length <= 1)) { - it.remove(); - childDelta = rootDelta.addNode(container, IModelDelta.REMOVED|IModelDelta.UNINSTALL); - - } else { - childDelta = rootDelta.addNode(container, IModelDelta.STATE); - } - // remove the breakpoint from the nested containers - container.removeBreakpoint(breakpoint, childDelta); - } - } - - if (addRemoveBpDelta) { - rootDelta.addNode(breakpoint, IModelDelta.REMOVED|IModelDelta.UNINSTALL); - } - } - return removed; - } - - /** - * A helper method to copy the organizers between two containers. - * - * @param destContainer the destination container - * @param sourceContainer the source container - */ - public static void copyOrganizers(BreakpointContainer destContainer, BreakpointContainer sourceContainer) { - destContainer.fNesting = sourceContainer.fNesting; - destContainer.fOrganizer = sourceContainer.fOrganizer; + if (container.contains(breakpoint)) { + ModelDelta childDelta = null; + if ((!container.isDefaultContainer()) && (container.getBreakpoints().length <= 1)) { + it.remove(); + childDelta = rootDelta.addNode(container, IModelDelta.REMOVED|IModelDelta.UNINSTALL); + + } else { + childDelta = rootDelta.addNode(container, IModelDelta.STATE); + } + // remove the breakpoint from the nested containers + container.removeBreakpoint(breakpoint, childDelta); + } + } + + if (addRemoveBpDelta) { + rootDelta.addNode(breakpoint, IModelDelta.REMOVED|IModelDelta.UNINSTALL); + } + } + return removed; + } + + /** + * A helper method to copy the organizers between two containers. + * + * @param destContainer the destination container + * @param sourceContainer the source container + */ + public static void copyOrganizers(BreakpointContainer destContainer, BreakpointContainer sourceContainer) { + destContainer.fNesting = sourceContainer.fNesting; + destContainer.fOrganizer = sourceContainer.fOrganizer; destContainer.fCategory = sourceContainer.fCategory; - } - - /** - * A helper method to update the breakpoint cache of the container and it's ancestors. - * - * @param container the breakpoint container - * @param breakpoints the breakpoint to update - * @param add true if breakpoint should be added to the cache, otherwise remove the breakpoint from the cache - */ + } + + /** + * A helper method to update the breakpoint cache of the container and it's ancestors. + * + * @param container the breakpoint container + * @param breakpoints the breakpoint to update + * @param add true if breakpoint should be added to the cache, otherwise remove the breakpoint from the cache + */ private static void updateSelfAndAncestorsBreakpointCache(BreakpointContainer container, List<IBreakpoint> breakpoints, boolean add) { - if (container != null) { - container.fBreakpoints.removeAll(breakpoints); - if (add) { + if (container != null) { + container.fBreakpoints.removeAll(breakpoints); + if (add) { container.fBreakpoints.addAll(breakpoints); } - updateSelfAndAncestorsBreakpointCache(container.getParent(), breakpoints, add); - } - } - - /** - * A helper method to add a breakpoint to an existing container. - * - * @param destContainer the destination container - * @param breakpoint the breakpoint to add - * @param destContainerDelta the destination container delta, additional delta will be added to this delta - */ - static public void addBreakpoint(BreakpointContainer destContainer, IBreakpoint breakpoint, ModelDelta destContainerDelta) { - int index = destContainer.insertBreakpoint(breakpoint); - Assert.isTrue(index >= 0); + updateSelfAndAncestorsBreakpointCache(container.getParent(), breakpoints, add); + } + } + + /** + * A helper method to add a breakpoint to an existing container. + * + * @param destContainer the destination container + * @param breakpoint the breakpoint to add + * @param destContainerDelta the destination container delta, additional delta will be added to this delta + */ + static public void addBreakpoint(BreakpointContainer destContainer, IBreakpoint breakpoint, ModelDelta destContainerDelta) { + int index = destContainer.insertBreakpoint(breakpoint); + Assert.isTrue(index >= 0); List<IBreakpoint> breakpoints = destContainer.fBreakpoints; - destContainerDelta.addNode(breakpoint, index/*breakpoints.indexOf(breakpoint)*/, IModelDelta.ADDED|IModelDelta.INSTALL, 0); - destContainerDelta.setFlags(destContainerDelta.getFlags() | IModelDelta.EXPAND); - - // add the breakpoints to the parent containers. - updateSelfAndAncestorsBreakpointCache(destContainer.getParent(), breakpoints, true); - } - - /** - * A helper method to add a child container to an existing container. - * - * @param destContainer the destination container - * @param sourceContainer the source container - * @param destContainerDelta the delta of the destination container, additional delta will be added to this delta - */ - static public void addChildContainer(BreakpointContainer destContainer, BreakpointContainer sourceContainer, ModelDelta destContainerDelta) { - destContainer.insertChildContainer(sourceContainer); - sourceContainer.fParent = destContainer; - - // add the breakpoints to the parent containers. + destContainerDelta.addNode(breakpoint, index/*breakpoints.indexOf(breakpoint)*/, IModelDelta.ADDED|IModelDelta.INSTALL, 0); + destContainerDelta.setFlags(destContainerDelta.getFlags() | IModelDelta.EXPAND); + + // add the breakpoints to the parent containers. + updateSelfAndAncestorsBreakpointCache(destContainer.getParent(), breakpoints, true); + } + + /** + * A helper method to add a child container to an existing container. + * + * @param destContainer the destination container + * @param sourceContainer the source container + * @param destContainerDelta the delta of the destination container, additional delta will be added to this delta + */ + static public void addChildContainer(BreakpointContainer destContainer, BreakpointContainer sourceContainer, ModelDelta destContainerDelta) { + destContainer.insertChildContainer(sourceContainer); + sourceContainer.fParent = destContainer; + + // add the breakpoints to the parent containers. List<IBreakpoint> breakpoints = Arrays.asList(sourceContainer.getBreakpoints()); - updateSelfAndAncestorsBreakpointCache(destContainer, breakpoints, true); - - int index = destContainer.fChildContainers.indexOf(sourceContainer); - int size = sourceContainer.getChildren().length; - ModelDelta childDelta = destContainerDelta.addNode(sourceContainer, index, IModelDelta.INSERTED|IModelDelta.INSTALL|IModelDelta.EXPAND, size); - - appendContainerDelta(sourceContainer, childDelta); - } - - /** - * A helper method to append delta to the breakpoint container. This method is used by addContainer only. - * - * @param container the container to append child delta - * @param containerDelta the delta of the breakpoint container, additional delta will be added to this delta - */ - static private void appendContainerDelta(BreakpointContainer container, ModelDelta containerDelta) { - Object[] children = container.getChildren(); - for (int i = 0; i < children.length; ++i) { - boolean isBreakpoint = children[0] instanceof IBreakpoint; - int numChild = isBreakpoint ? 0 : children.length; - int flag = isBreakpoint ? IModelDelta.ADDED|IModelDelta.INSTALL - : IModelDelta.INSERTED|IModelDelta.INSTALL|IModelDelta.EXPAND; - ModelDelta childDelta = containerDelta.addNode(children[i], i, flag, numChild); - - if (children[i] instanceof BreakpointContainer) { - BreakpointContainer childContainer = (BreakpointContainer) children[i]; - appendContainerDelta(childContainer, childDelta); - } - } - } - - /** - * A helper method to remove the breakpoint from the container. - * - * @param container the container to remove the breakpoint - * @param breakpoint the breakpoint to remove - * @param containerDelta the delta of the breakpoint container, additional delta will be added to this delta - */ - static public void removeBreakpoint(BreakpointContainer container, IBreakpoint breakpoint, ModelDelta containerDelta) { - container.removeBreakpoint(breakpoint, containerDelta); + updateSelfAndAncestorsBreakpointCache(destContainer, breakpoints, true); + + int index = destContainer.fChildContainers.indexOf(sourceContainer); + int size = sourceContainer.getChildren().length; + ModelDelta childDelta = destContainerDelta.addNode(sourceContainer, index, IModelDelta.INSERTED|IModelDelta.INSTALL|IModelDelta.EXPAND, size); + + appendContainerDelta(sourceContainer, childDelta); + } + + /** + * A helper method to append delta to the breakpoint container. This method is used by addContainer only. + * + * @param container the container to append child delta + * @param containerDelta the delta of the breakpoint container, additional delta will be added to this delta + */ + static private void appendContainerDelta(BreakpointContainer container, ModelDelta containerDelta) { + Object[] children = container.getChildren(); + for (int i = 0; i < children.length; ++i) { + boolean isBreakpoint = children[0] instanceof IBreakpoint; + int numChild = isBreakpoint ? 0 : children.length; + int flag = isBreakpoint ? IModelDelta.ADDED|IModelDelta.INSTALL + : IModelDelta.INSERTED|IModelDelta.INSTALL|IModelDelta.EXPAND; + ModelDelta childDelta = containerDelta.addNode(children[i], i, flag, numChild); + + if (children[i] instanceof BreakpointContainer) { + BreakpointContainer childContainer = (BreakpointContainer) children[i]; + appendContainerDelta(childContainer, childDelta); + } + } + } + + /** + * A helper method to remove the breakpoint from the container. + * + * @param container the container to remove the breakpoint + * @param breakpoint the breakpoint to remove + * @param containerDelta the delta of the breakpoint container, additional delta will be added to this delta + */ + static public void removeBreakpoint(BreakpointContainer container, IBreakpoint breakpoint, ModelDelta containerDelta) { + container.removeBreakpoint(breakpoint, containerDelta); List<IBreakpoint> breakpoints = new ArrayList<>(); - breakpoints.add(breakpoint); - updateSelfAndAncestorsBreakpointCache(container.getParent(), breakpoints, false); - } - - /** - * Remove all child elements including the given container itself. - * - * @param container the breakpoint container - * @param delta the parent delta - */ - static public void removeAll(BreakpointContainer container, ModelDelta delta) { - BreakpointContainer parent = container.getParent(); - if (parent != null) { - parent.fChildContainers.remove(container); - delta = delta.addNode(container, IModelDelta.UNINSTALL|IModelDelta.REMOVED); - } - - if (container.fChildContainers.isEmpty()) { + breakpoints.add(breakpoint); + updateSelfAndAncestorsBreakpointCache(container.getParent(), breakpoints, false); + } + + /** + * Remove all child elements including the given container itself. + * + * @param container the breakpoint container + * @param delta the parent delta + */ + static public void removeAll(BreakpointContainer container, ModelDelta delta) { + BreakpointContainer parent = container.getParent(); + if (parent != null) { + parent.fChildContainers.remove(container); + delta = delta.addNode(container, IModelDelta.UNINSTALL|IModelDelta.REMOVED); + } + + if (container.fChildContainers.isEmpty()) { List<IBreakpoint> breakpoints = new ArrayList<>(); Iterator<IBreakpoint> iterator = container.fBreakpoints.iterator(); - while (iterator.hasNext()) { + while (iterator.hasNext()) { IBreakpoint obj = iterator.next(); breakpoints.add(obj); delta.addNode(obj, IModelDelta.UNINSTALL|IModelDelta.REMOVED); iterator.remove(); - } + } - // remove the breakpoints from the parent containers. + // remove the breakpoints from the parent containers. updateSelfAndAncestorsBreakpointCache(container.getParent(), breakpoints, false); - return; - } + return; + } Iterator<BreakpointContainer> iterator = container.fChildContainers.iterator(); - while (iterator.hasNext()) { - BreakpointContainer childContainer = iterator.next(); - ModelDelta childDelta = delta.addNode(childContainer, IModelDelta.REMOVED|IModelDelta.UNINSTALL); - iterator.remove(); - removeAll(childContainer, childDelta); - } - } - - /** - * Returns whether this is the default container. - * - * @return true if it is a default container - */ - boolean isDefaultContainer() { - return fDefaultContainer; - } - - /** - * Returns the breakpoints in this container - * - * @return the breakpoints in this container - */ - @Override + while (iterator.hasNext()) { + BreakpointContainer childContainer = iterator.next(); + ModelDelta childDelta = delta.addNode(childContainer, IModelDelta.REMOVED|IModelDelta.UNINSTALL); + iterator.remove(); + removeAll(childContainer, childDelta); + } + } + + /** + * Returns whether this is the default container. + * + * @return true if it is a default container + */ + boolean isDefaultContainer() { + return fDefaultContainer; + } + + /** + * Returns the breakpoints in this container + * + * @return the breakpoints in this container + */ + @Override public IBreakpoint[] getBreakpoints() { - return fBreakpoints.toArray(new IBreakpoint[fBreakpoints.size()]); - } - - /** - * Returns this container's category. - * - * @return container category - */ - @Override + return fBreakpoints.toArray(new IBreakpoint[fBreakpoints.size()]); + } + + /** + * Returns this container's category. + * + * @return container category + */ + @Override public IAdaptable getCategory() { - return fCategory; - } - - /** - * Returns children as breakpoints or nested containers. - * - * @return children as breakpoints or nested containers - */ - public Object[] getChildren() { - if (fChildContainers.isEmpty()) { - return getBreakpoints(); - } - return getContainers(); - } - - /** - * Returns the index of the given child element (breakpoint or container. - * - * @param child Child to calculate index of. - * @return index of child - */ - public int getChildIndex(Object child) { - if (fChildContainers.isEmpty()) { - return fBreakpoints.indexOf(child); - } - return fChildContainers.indexOf(child); - } - - /** - * Returns the containers nested in this container, possibly empty. - * - * @return the containers nested in this container, can be empty. - */ - public BreakpointContainer[] getContainers() { - return fChildContainers.toArray(new BreakpointContainer[fChildContainers.size()]); - } - - /** - * Returns this container's organizer. - * - * @return this container's organizer - */ - @Override + return fCategory; + } + + /** + * Returns children as breakpoints or nested containers. + * + * @return children as breakpoints or nested containers + */ + public Object[] getChildren() { + if (fChildContainers.isEmpty()) { + return getBreakpoints(); + } + return getContainers(); + } + + /** + * Returns the index of the given child element (breakpoint or container. + * + * @param child Child to calculate index of. + * @return index of child + */ + public int getChildIndex(Object child) { + if (fChildContainers.isEmpty()) { + return fBreakpoints.indexOf(child); + } + return fChildContainers.indexOf(child); + } + + /** + * Returns the containers nested in this container, possibly empty. + * + * @return the containers nested in this container, can be empty. + */ + public BreakpointContainer[] getContainers() { + return fChildContainers.toArray(new BreakpointContainer[fChildContainers.size()]); + } + + /** + * Returns this container's organizer. + * + * @return this container's organizer + */ + @Override public IBreakpointOrganizer getOrganizer() { - return fOrganizer; - } - - /** - * Returns whether this container contains the given breakpoint. - * - * @param breakpoint the breakpoint to check - * @return true if this container contains the given breakpoint - */ - @Override + return fOrganizer; + } + + /** + * Returns whether this container contains the given breakpoint. + * + * @param breakpoint the breakpoint to check + * @return true if this container contains the given breakpoint + */ + @Override public boolean contains(IBreakpoint breakpoint) { - return fBreakpoints.contains(breakpoint); - } - - /** - * Returns the child containers for the given breakpoint. - * - * @param breakpoint the breakpoint to get containers for - * @return child containers - */ - public BreakpointContainer[] getContainers(IBreakpoint breakpoint) { - if (contains(breakpoint)) { - BreakpointContainer[] containers = getContainers(); - if (containers.length == 0) { - return new BreakpointContainer[]{this}; - } + return fBreakpoints.contains(breakpoint); + } + + /** + * Returns the child containers for the given breakpoint. + * + * @param breakpoint the breakpoint to get containers for + * @return child containers + */ + public BreakpointContainer[] getContainers(IBreakpoint breakpoint) { + if (contains(breakpoint)) { + BreakpointContainer[] containers = getContainers(); + if (containers.length == 0) { + return new BreakpointContainer[]{this}; + } ArrayList<BreakpointContainer> list = new ArrayList<>(); - for (int i = 0; i < containers.length; i++) { - BreakpointContainer container = containers[i]; - BreakpointContainer[] subcontainers = container.getContainers(breakpoint); - if (subcontainers != null) { - for (int j = 0; j < subcontainers.length; j++) { - list.add(subcontainers[j]); - } - } - } - return list.toArray(new BreakpointContainer[list.size()]); - } - return new BreakpointContainer[0]; - } + for (int i = 0; i < containers.length; i++) { + BreakpointContainer container = containers[i]; + BreakpointContainer[] subcontainers = container.getContainers(breakpoint); + if (subcontainers != null) { + for (int j = 0; j < subcontainers.length; j++) { + list.add(subcontainers[j]); + } + } + } + return list.toArray(new BreakpointContainer[list.size()]); + } + return new BreakpointContainer[0]; + } @Override public boolean equals(Object obj) { - if (obj instanceof BreakpointContainer) { - BreakpointContainer container = (BreakpointContainer) obj; - // With Group by "Advanced" the same category can contain a different subset of breakpoints, - // therefore to have the same category is not enough to be equal. - if (! (fParent != null && container.fParent != null && fParent.equals(container.fParent) || - fParent == null && container.fParent == null) ) { - return false; - } - if (getCategory() != null && container.getCategory() != null) { - return getCategory().equals(container.getCategory()); - } else { - return true; - } - } - return super.equals(obj); + if (obj instanceof BreakpointContainer) { + BreakpointContainer container = (BreakpointContainer) obj; + // With Group by "Advanced" the same category can contain a different subset of breakpoints, + // therefore to have the same category is not enough to be equal. + if (! (fParent != null && container.fParent != null && fParent.equals(container.fParent) || + fParent == null && container.fParent == null) ) { + return false; + } + if (getCategory() != null && container.getCategory() != null) { + return getCategory().equals(container.getCategory()); + } else { + return true; + } + } + return super.equals(obj); } @Override diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointContainerWorkbenchAdapter.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointContainerWorkbenchAdapter.java index aaee66875..e2b07dbc1 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointContainerWorkbenchAdapter.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointContainerWorkbenchAdapter.java @@ -28,86 +28,86 @@ import org.eclipse.ui.model.IWorkbenchAdapter2; */ public class BreakpointContainerWorkbenchAdapter implements IWorkbenchAdapter, IWorkbenchAdapter2{ - @Override + @Override public Object[] getChildren(Object o) { - // not used - return null; - } + // not used + return null; + } - @Override + @Override public ImageDescriptor getImageDescriptor(Object object) { - if (object instanceof IBreakpointContainer) { - IBreakpointContainer container = (IBreakpointContainer) object; - IAdaptable category = container.getCategory(); - if (category != null) { - IWorkbenchAdapter adapter = category.getAdapter(IWorkbenchAdapter.class); - if (adapter != null) { - return adapter.getImageDescriptor(category); - } - return container.getOrganizer().getImageDescriptor(); - } - } - return null; - } + if (object instanceof IBreakpointContainer) { + IBreakpointContainer container = (IBreakpointContainer) object; + IAdaptable category = container.getCategory(); + if (category != null) { + IWorkbenchAdapter adapter = category.getAdapter(IWorkbenchAdapter.class); + if (adapter != null) { + return adapter.getImageDescriptor(category); + } + return container.getOrganizer().getImageDescriptor(); + } + } + return null; + } - @Override + @Override public String getLabel(Object object) { - if (object instanceof IBreakpointContainer) { - IBreakpointContainer container = (IBreakpointContainer) object; - IAdaptable category = container.getCategory(); - if (category != null) { - IWorkbenchAdapter adapter = category.getAdapter(IWorkbenchAdapter.class); - if (adapter != null) { - return adapter.getLabel(category); - } - return container.getOrganizer().getLabel(); - } - } - return IInternalDebugCoreConstants.EMPTY_STRING; - } + if (object instanceof IBreakpointContainer) { + IBreakpointContainer container = (IBreakpointContainer) object; + IAdaptable category = container.getCategory(); + if (category != null) { + IWorkbenchAdapter adapter = category.getAdapter(IWorkbenchAdapter.class); + if (adapter != null) { + return adapter.getLabel(category); + } + return container.getOrganizer().getLabel(); + } + } + return IInternalDebugCoreConstants.EMPTY_STRING; + } - @Override + @Override public Object getParent(Object o) { - return null; - } + return null; + } - @Override + @Override public RGB getForeground(Object object) { - if (object instanceof IBreakpointContainer) { - IBreakpointContainer container = (IBreakpointContainer) object; - IAdaptable category = container.getCategory(); - IWorkbenchAdapter2 adapter = category.getAdapter(IWorkbenchAdapter2.class); - if (adapter != null) { - return adapter.getForeground(category); - } - } - return null; - } + if (object instanceof IBreakpointContainer) { + IBreakpointContainer container = (IBreakpointContainer) object; + IAdaptable category = container.getCategory(); + IWorkbenchAdapter2 adapter = category.getAdapter(IWorkbenchAdapter2.class); + if (adapter != null) { + return adapter.getForeground(category); + } + } + return null; + } - @Override + @Override public RGB getBackground(Object object) { - if (object instanceof IBreakpointContainer) { - IBreakpointContainer container = (IBreakpointContainer) object; - IAdaptable category = container.getCategory(); - IWorkbenchAdapter2 adapter = category.getAdapter(IWorkbenchAdapter2.class); - if (adapter != null) { - return adapter.getBackground(category); - } - } - return null; - } + if (object instanceof IBreakpointContainer) { + IBreakpointContainer container = (IBreakpointContainer) object; + IAdaptable category = container.getCategory(); + IWorkbenchAdapter2 adapter = category.getAdapter(IWorkbenchAdapter2.class); + if (adapter != null) { + return adapter.getBackground(category); + } + } + return null; + } - @Override + @Override public FontData getFont(Object object) { - if (object instanceof IBreakpointContainer) { - IBreakpointContainer container = (IBreakpointContainer) object; - IAdaptable category = container.getCategory(); - IWorkbenchAdapter2 adapter = category.getAdapter(IWorkbenchAdapter2.class); - if (adapter != null) { - return adapter.getFont(category); - } - } - return null; - } + if (object instanceof IBreakpointContainer) { + IBreakpointContainer container = (IBreakpointContainer) object; + IAdaptable category = container.getCategory(); + IWorkbenchAdapter2 adapter = category.getAdapter(IWorkbenchAdapter2.class); + if (adapter != null) { + return adapter.getFont(category); + } + } + return null; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointFactory.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointFactory.java index 7f2e199a6..d8ad046c8 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointFactory.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointFactory.java @@ -27,29 +27,29 @@ import org.eclipse.ui.PlatformUI; */ public class BreakpointFactory implements IElementFactory { - @Override + @Override public IAdaptable createElement(IMemento memento) { - String longString = memento.getString(BreakpointPersistableElementAdapter.TAG_MARKER_ID); - String factoryId = memento.getString(BreakpointPersistableElementAdapter.TAG_RESOURCE_FACTORY_ID); - if (factoryId != null && longString != null) { - IElementFactory elementFactory = PlatformUI.getWorkbench().getElementFactory(factoryId); - if (elementFactory != null) { - IAdaptable adaptable = elementFactory.createElement(memento); - if (adaptable instanceof IResource) { - IResource resource = (IResource) adaptable; - try { - long id = Long.parseLong(longString); - IMarker marker = resource.findMarker(id); - if (marker != null) { - return DebugPlugin.getDefault().getBreakpointManager().getBreakpoint(marker); - } - } catch (NumberFormatException e) { - } catch (CoreException e) { - } - } - } - } - return null; - } + String longString = memento.getString(BreakpointPersistableElementAdapter.TAG_MARKER_ID); + String factoryId = memento.getString(BreakpointPersistableElementAdapter.TAG_RESOURCE_FACTORY_ID); + if (factoryId != null && longString != null) { + IElementFactory elementFactory = PlatformUI.getWorkbench().getElementFactory(factoryId); + if (elementFactory != null) { + IAdaptable adaptable = elementFactory.createElement(memento); + if (adaptable instanceof IResource) { + IResource resource = (IResource) adaptable; + try { + long id = Long.parseLong(longString); + IMarker marker = resource.findMarker(id); + if (marker != null) { + return DebugPlugin.getDefault().getBreakpointManager().getBreakpoint(marker); + } + } catch (NumberFormatException e) { + } catch (CoreException e) { + } + } + } + } + return null; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointOrganizerExtension.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointOrganizerExtension.java index be2005ce3..9c7bf8d82 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointOrganizerExtension.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointOrganizerExtension.java @@ -39,7 +39,7 @@ public class BreakpointOrganizerExtension implements IBreakpointOrganizer, IBrea public static final String ATTR_CLASS = "class"; //$NON-NLS-1$ public static final String ATTR_ID = "id"; //$NON-NLS-1$ public static final String ATTR_ICON = "icon"; //$NON-NLS-1$ - public static final String ATTR_OTHERS_LABEL = "othersLabel"; //$NON-NLS-1$ + public static final String ATTR_OTHERS_LABEL = "othersLabel"; //$NON-NLS-1$ public BreakpointOrganizerExtension(IConfigurationElement element) { fElement = element; @@ -71,15 +71,15 @@ public class BreakpointOrganizerExtension implements IBreakpointOrganizer, IBrea return fElement.getAttribute(ATTR_LABEL); } - /** - * Returns this organizer's identifier. - * - * @return this organizer's identifier - */ - @Override + /** + * Returns this organizer's identifier. + * + * @return this organizer's identifier + */ + @Override public String getIdentifier() { - return fElement.getAttribute(ATTR_ID); - } + return fElement.getAttribute(ATTR_ID); + } /** * Returns this organizer's delegate, instantiating it if required. @@ -97,62 +97,62 @@ public class BreakpointOrganizerExtension implements IBreakpointOrganizer, IBrea return fDelegate; } - @Override + @Override public IAdaptable[] getCategories(IBreakpoint breakpoint) { - return getOrganizer().getCategories(breakpoint); - } + return getOrganizer().getCategories(breakpoint); + } - @Override + @Override public void addPropertyChangeListener(IPropertyChangeListener listener) { - getOrganizer().addPropertyChangeListener(listener); - } + getOrganizer().addPropertyChangeListener(listener); + } - @Override + @Override public void removePropertyChangeListener(IPropertyChangeListener listener) { - getOrganizer().removePropertyChangeListener(listener); - } + getOrganizer().removePropertyChangeListener(listener); + } - @Override + @Override public void addBreakpoint(IBreakpoint breakpoint, IAdaptable category) { - getOrganizer().addBreakpoint(breakpoint, category); - } + getOrganizer().addBreakpoint(breakpoint, category); + } - @Override + @Override public void removeBreakpoint(IBreakpoint breakpoint, IAdaptable category) { - getOrganizer().removeBreakpoint(breakpoint, category); - } + getOrganizer().removeBreakpoint(breakpoint, category); + } - @Override + @Override public boolean canAdd(IBreakpoint breakpoint, IAdaptable category) { - return getOrganizer().canAdd(breakpoint, category); - } + return getOrganizer().canAdd(breakpoint, category); + } - @Override + @Override public boolean canRemove(IBreakpoint breakpoint, IAdaptable category) { - return getOrganizer().canRemove(breakpoint, category); - } + return getOrganizer().canRemove(breakpoint, category); + } - @Override + @Override public void dispose() { - // don't instantiate the delegate if it has not been used - if (fDelegate != null) { - fDelegate.dispose(); - } - } + // don't instantiate the delegate if it has not been used + if (fDelegate != null) { + fDelegate.dispose(); + } + } - @Override + @Override public String getOthersLabel() { - String attribute = fElement.getAttribute(ATTR_OTHERS_LABEL); - if (attribute == null) { - return DebugUIViewsMessages.OtherBreakpointOrganizer_0; - } - return attribute; - } - - @Override + String attribute = fElement.getAttribute(ATTR_OTHERS_LABEL); + if (attribute == null) { + return DebugUIViewsMessages.OtherBreakpointOrganizer_0; + } + return attribute; + } + + @Override public IAdaptable[] getCategories() { - return getOrganizer().getCategories(); - } + return getOrganizer().getCategories(); + } @Override public void addBreakpoints(IBreakpoint[] breakpoints, IAdaptable category) { diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointOrganizerManager.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointOrganizerManager.java index eec404099..49e1ef05f 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointOrganizerManager.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointOrganizerManager.java @@ -46,7 +46,7 @@ public class BreakpointOrganizerManager { // map for lookup by id private Map<String, IBreakpointOrganizer> fOrganizers = new HashMap<>(); - // cached sorted list by label + // cached sorted list by label private List<IBreakpointOrganizer> fSorted = null; /** @@ -65,10 +65,10 @@ public class BreakpointOrganizerManager { * Creates and initializes a new breakpoint container factory. */ private BreakpointOrganizerManager() { - loadOrganizers(); - // force the working set organizers to initialize their listeners - start("org.eclipse.debug.ui.workingSetOrganizer"); //$NON-NLS-1$ - start("org.eclipse.debug.ui.breakpointWorkingSetOrganizer"); //$NON-NLS-1$ + loadOrganizers(); + // force the working set organizers to initialize their listeners + start("org.eclipse.debug.ui.workingSetOrganizer"); //$NON-NLS-1$ + start("org.eclipse.debug.ui.breakpointWorkingSetOrganizer"); //$NON-NLS-1$ } /** @@ -77,53 +77,53 @@ public class BreakpointOrganizerManager { * @param organizerId organizer to start */ private void start(String organizerId) { - IBreakpointOrganizer organizer = getOrganizer(organizerId); - IPropertyChangeListener listener = new IPropertyChangeListener() { - @Override + IBreakpointOrganizer organizer = getOrganizer(organizerId); + IPropertyChangeListener listener = new IPropertyChangeListener() { + @Override public void propertyChange(PropertyChangeEvent event) { - } - }; - organizer.addPropertyChangeListener(listener); - organizer.removePropertyChangeListener(listener); + } + }; + organizer.addPropertyChangeListener(listener); + organizer.removePropertyChangeListener(listener); } - /** - * Loads all contributed breakpoint organizers. - */ - private void loadOrganizers() { - IExtensionPoint extensionPoint= Platform.getExtensionRegistry().getExtensionPoint(DebugUIPlugin.getUniqueIdentifier(), IDebugUIConstants.EXTENSION_POINT_BREAKPOINT_ORGANIZERS); - IConfigurationElement[] configurationElements = extensionPoint.getConfigurationElements(); - for (int i = 0; i < configurationElements.length; i++) { - IConfigurationElement element= configurationElements[i]; - IBreakpointOrganizer organizer = new BreakpointOrganizerExtension(element); - if (validateOrganizer(organizer)) { - fOrganizers.put(organizer.getIdentifier(), organizer); - } - } - } + /** + * Loads all contributed breakpoint organizers. + */ + private void loadOrganizers() { + IExtensionPoint extensionPoint= Platform.getExtensionRegistry().getExtensionPoint(DebugUIPlugin.getUniqueIdentifier(), IDebugUIConstants.EXTENSION_POINT_BREAKPOINT_ORGANIZERS); + IConfigurationElement[] configurationElements = extensionPoint.getConfigurationElements(); + for (int i = 0; i < configurationElements.length; i++) { + IConfigurationElement element= configurationElements[i]; + IBreakpointOrganizer organizer = new BreakpointOrganizerExtension(element); + if (validateOrganizer(organizer)) { + fOrganizers.put(organizer.getIdentifier(), organizer); + } + } + } - /** - * Validates the given organizer. Checks that certain required attributes - * are available. - * @param organizer the organizer to check - * @return whether the given organizer is valid - */ - protected static boolean validateOrganizer(IBreakpointOrganizer organizer) { - String id = organizer.getIdentifier(); - String label = organizer.getLabel(); - return id != null && id.length() > 0 && label != null && label.length() > 0; - } + /** + * Validates the given organizer. Checks that certain required attributes + * are available. + * @param organizer the organizer to check + * @return whether the given organizer is valid + */ + protected static boolean validateOrganizer(IBreakpointOrganizer organizer) { + String id = organizer.getIdentifier(); + String label = organizer.getLabel(); + return id != null && id.length() > 0 && label != null && label.length() > 0; + } - /** - * Returns all contributed breakpoint organizers. - * - * @return all contributed breakpoint organizers - */ - public IBreakpointOrganizer[] getOrganizers() { - if (fSorted == null) { + /** + * Returns all contributed breakpoint organizers. + * + * @return all contributed breakpoint organizers + */ + public IBreakpointOrganizer[] getOrganizers() { + if (fSorted == null) { Collection<IBreakpointOrganizer> collection = fOrganizers.values(); fSorted = new ArrayList<>(); - fSorted.addAll(collection); + fSorted.addAll(collection); Collections.sort(fSorted, new Comparator<Object>() { @Override public int compare(Object o1, Object o2) { @@ -132,28 +132,28 @@ public class BreakpointOrganizerManager { return b1.getLabel().compareTo(b2.getLabel()); } }); - } - return fSorted.toArray(new IBreakpointOrganizer[fSorted.size()]); - } + } + return fSorted.toArray(new IBreakpointOrganizer[fSorted.size()]); + } - /** - * Returns the specified breakpoint organizer or <code>null</code> - * @param id organizer identifier - * @return breakpoint organizer or <code>null</code> - */ - public IBreakpointOrganizer getOrganizer(String id) { - return fOrganizers.get(id); - } + /** + * Returns the specified breakpoint organizer or <code>null</code> + * @param id organizer identifier + * @return breakpoint organizer or <code>null</code> + */ + public IBreakpointOrganizer getOrganizer(String id) { + return fOrganizers.get(id); + } - /** - * Shuts down the organizer manager, disposing organizers. - */ - public void shutdown() { - IBreakpointOrganizer[] organizers = getOrganizers(); - for (int i = 0; i < organizers.length; i++) { - IBreakpointOrganizer organizer = organizers[i]; - organizer.dispose(); - } - } + /** + * Shuts down the organizer manager, disposing organizers. + */ + public void shutdown() { + IBreakpointOrganizer[] organizers = getOrganizers(); + for (int i = 0; i < organizers.length; i++) { + IBreakpointOrganizer organizer = organizers[i]; + organizer.dispose(); + } + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointPersistableElementAdapter.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointPersistableElementAdapter.java index f961845e5..6155fd8b5 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointPersistableElementAdapter.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointPersistableElementAdapter.java @@ -24,39 +24,39 @@ import org.eclipse.ui.IPersistableElement; */ public class BreakpointPersistableElementAdapter implements IPersistableElement { - private IBreakpoint fBreakpoint; + private IBreakpoint fBreakpoint; - public static final String TAG_MARKER_ID = "TAG_MARKER_ID"; //$NON-NLS-1$ - public static final String TAG_RESOURCE_FACTORY_ID = "TAG_RESOURCE_FACTORY_ID"; //$NON-NLS-1$ + public static final String TAG_MARKER_ID = "TAG_MARKER_ID"; //$NON-NLS-1$ + public static final String TAG_RESOURCE_FACTORY_ID = "TAG_RESOURCE_FACTORY_ID"; //$NON-NLS-1$ - /** - * Constructs a new persitable element adapter for the given breakpoint. - * - * @param breakpoint the backing {@link IBreakpoint} - */ - public BreakpointPersistableElementAdapter(IBreakpoint breakpoint) { - fBreakpoint = breakpoint; - } + /** + * Constructs a new persitable element adapter for the given breakpoint. + * + * @param breakpoint the backing {@link IBreakpoint} + */ + public BreakpointPersistableElementAdapter(IBreakpoint breakpoint) { + fBreakpoint = breakpoint; + } - @Override + @Override public String getFactoryId() { - return "org.eclipse.debug.ui.elementFactory.breakpoints"; //$NON-NLS-1$ - } + return "org.eclipse.debug.ui.elementFactory.breakpoints"; //$NON-NLS-1$ + } - @Override + @Override public void saveState(IMemento memento) { - IMarker marker = fBreakpoint.getMarker(); - if (marker != null) { - IResource resource = marker.getResource(); - IPersistableElement pe = resource.getAdapter(IPersistableElement.class); - if (pe != null) { - long id = marker.getId(); - String longString = Long.toString(id); - memento.putString(TAG_MARKER_ID, longString); - memento.putString(TAG_RESOURCE_FACTORY_ID, pe.getFactoryId()); - pe.saveState(memento); - } - } - } + IMarker marker = fBreakpoint.getMarker(); + if (marker != null) { + IResource resource = marker.getResource(); + IPersistableElement pe = resource.getAdapter(IPersistableElement.class); + if (pe != null) { + long id = marker.getId(); + String longString = Long.toString(id); + memento.putString(TAG_MARKER_ID, longString); + memento.putString(TAG_RESOURCE_FACTORY_ID, pe.getFactoryId()); + pe.saveState(memento); + } + } + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointTypeOrganizer.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointTypeOrganizer.java index c810780fe..aa926628c 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointTypeOrganizer.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointTypeOrganizer.java @@ -32,26 +32,26 @@ public class BreakpointTypeOrganizer extends AbstractBreakpointOrganizerDelegate private Map<String, IAdaptable[]> fTypes = new HashMap<>(); - @Override + @Override public IAdaptable[] getCategories(IBreakpoint breakpoint) { - IBreakpointTypeCategory category = breakpoint.getAdapter(IBreakpointTypeCategory.class); - if (category != null) { - return new IAdaptable[]{category}; - } - String name = DebugPlugin.getDefault().getBreakpointManager().getTypeName(breakpoint); - if (name != null) { - IAdaptable[] categories = fTypes.get(name); - if (categories == null) { - categories = new IAdaptable[]{new BreakpointTypeCategory(name)}; - fTypes.put(name, categories); - } - return categories; - } - return null; - } + IBreakpointTypeCategory category = breakpoint.getAdapter(IBreakpointTypeCategory.class); + if (category != null) { + return new IAdaptable[]{category}; + } + String name = DebugPlugin.getDefault().getBreakpointManager().getTypeName(breakpoint); + if (name != null) { + IAdaptable[] categories = fTypes.get(name); + if (categories == null) { + categories = new IAdaptable[]{new BreakpointTypeCategory(name)}; + fTypes.put(name, categories); + } + return categories; + } + return null; + } - @Override + @Override public void dispose() { - fTypes.clear(); - } + fTypes.clear(); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointWorkingSetElementAdapter.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointWorkingSetElementAdapter.java index 6134a9a71..f35696e10 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointWorkingSetElementAdapter.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointWorkingSetElementAdapter.java @@ -34,7 +34,7 @@ public class BreakpointWorkingSetElementAdapter implements IWorkingSetElementAda @Override public IAdaptable[] adaptElements(IWorkingSet ws, IAdaptable[] elements) { for (int i = 0; i < elements.length; i++) { - IBreakpoint breakpoint = (IBreakpoint)DebugPlugin.getAdapter(elements[i], IBreakpoint.class); + IBreakpoint breakpoint = (IBreakpoint)DebugPlugin.getAdapter(elements[i], IBreakpoint.class); if (breakpoint != null) { return selectBreakpoints(elements); } @@ -45,7 +45,7 @@ public class BreakpointWorkingSetElementAdapter implements IWorkingSetElementAda private IAdaptable[] selectBreakpoints(IAdaptable[] elements) { List<IBreakpoint> breakpoints = new ArrayList<>(elements.length); for (int i = 0; i < elements.length; i++) { - IBreakpoint breakpoint = (IBreakpoint)DebugPlugin.getAdapter(elements[i], IBreakpoint.class); + IBreakpoint breakpoint = (IBreakpoint)DebugPlugin.getAdapter(elements[i], IBreakpoint.class); if (breakpoint != null) { breakpoints.add(breakpoint); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointWorkingSetPage.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointWorkingSetPage.java index 5f021a796..47c2e2716 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointWorkingSetPage.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointWorkingSetPage.java @@ -172,7 +172,7 @@ public class BreakpointWorkingSetPage extends WizardPage implements IWorkingSetP ArrayList<IBreakpoint> elements = new ArrayList<>(); //weed out non-breakpoint elements since 3.2 for(int i = 0; i < adaptable.length; i++) { - IBreakpoint breakpoint = (IBreakpoint)DebugPlugin.getAdapter(adaptable[i], IBreakpoint.class); + IBreakpoint breakpoint = (IBreakpoint)DebugPlugin.getAdapter(adaptable[i], IBreakpoint.class); if(breakpoint != null) { elements.add(breakpoint); }//end if diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointsComparator.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointsComparator.java index 37a66b30c..f720c8346 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointsComparator.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointsComparator.java @@ -59,9 +59,9 @@ public class BreakpointsComparator extends ViewerComparator { */ @Override public int compare(Viewer viewer, Object e1, Object e2) { - if (!(e1 instanceof IBreakpoint)) { - return super.compare(viewer, e1, e2); - } + if (!(e1 instanceof IBreakpoint)) { + return super.compare(viewer, e1, e2); + } IBreakpoint b1= (IBreakpoint)e1; IBreakpoint b2= (IBreakpoint)e2; @@ -138,7 +138,7 @@ public class BreakpointsComparator extends ViewerComparator { * E.g. * <p><code> * "0", "1", "9", "11" - * <p></code> + * <p></code> * * Note that String.compareTo orders "11" before "9". * @@ -146,10 +146,10 @@ public class BreakpointsComparator extends ViewerComparator { * in this case the numerical value is compared. * E.g. * <p><code> - * stringNumberCompareTo("a_01", "a_1") returns 0. - * <p></code> - * Note: For now no additional elements (spaces) are considered, for numbers only base 10 numbers are supported. - * + * stringNumberCompareTo("a_01", "a_1") returns 0. + * <p></code> + * Note: For now no additional elements (spaces) are considered, for numbers only base 10 numbers are supported. + * * @param n1 the first string to compare * @param n2 the second string to compare * @return @@ -162,8 +162,8 @@ public class BreakpointsComparator extends ViewerComparator { int index2 = 0; int digitLen = 0; // Number of identical digits prior to the current index position. for (; index1 < n1.length() && index2 < n2.length(); ) { - char c1 = n1.charAt(index1); - char c2 = n2.charAt(index2); + char c1 = n1.charAt(index1); + char c2 = n2.charAt(index2); if (c1 != c2) { // Strings are different starting at index. @@ -205,8 +205,8 @@ public class BreakpointsComparator extends ViewerComparator { } else { digitLen = 0; } - index1++; - index2++; + index1++; + index2++; } // Same characters up to index1/index2. Return < 0 if remaining in n1 is shorter than remaining in n2. return (n1.length() - index1) - (n2.length() - index2); diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointsContentProvider.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointsContentProvider.java index e7c438e79..7672e1aed 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointsContentProvider.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointsContentProvider.java @@ -35,182 +35,182 @@ import org.eclipse.jface.viewers.Viewer; */ public class BreakpointsContentProvider implements ITreeContentProvider, IPropertyChangeListener { - private IBreakpointOrganizer[] fOrganizers = null; - private BreakpointsViewer fViewer; - private Object[] fElements; - private boolean fDisposed = false; + private IBreakpointOrganizer[] fOrganizers = null; + private BreakpointsViewer fViewer; + private Object[] fElements; + private boolean fDisposed = false; - @Override + @Override public Object[] getChildren(Object parentElement) { - if (parentElement.equals(DebugPlugin.getDefault().getBreakpointManager())) { - return fElements; - } else if (parentElement instanceof BreakpointContainer) { - return ((BreakpointContainer)parentElement).getChildren(); - } - return new Object[0]; - } + if (parentElement.equals(DebugPlugin.getDefault().getBreakpointManager())) { + return fElements; + } else if (parentElement instanceof BreakpointContainer) { + return ((BreakpointContainer)parentElement).getChildren(); + } + return new Object[0]; + } - @Override + @Override public Object getParent(Object element) { - return null; - } + return null; + } - @Override + @Override public boolean hasChildren(Object element) { - return getChildren(element).length > 0; - } + return getChildren(element).length > 0; + } - @Override + @Override public Object[] getElements(Object inputElement) { - return getChildren(inputElement); - } + return getChildren(inputElement); + } - @Override + @Override public void dispose() { - fDisposed = true; - fElements = null; - setOrganizers(null); - } + fDisposed = true; + fElements = null; + setOrganizers(null); + } - @Override + @Override public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { - fViewer = (BreakpointsViewer)viewer; - if (newInput != null) { - reorganize(); - } - } + fViewer = (BreakpointsViewer)viewer; + if (newInput != null) { + reorganize(); + } + } - /** - * Sets the nested order of breakpoint organizers, or <code>null</code> - * if none. - * - * @param organizers the nested order of breakpoint organizers, or <code>null</code> - * if none - */ - public void setOrganizers(IBreakpointOrganizer[] organizers) { - // remove previous listeners - if (fOrganizers != null) { - for (int i = 0; i < fOrganizers.length; i++) { + /** + * Sets the nested order of breakpoint organizers, or <code>null</code> + * if none. + * + * @param organizers the nested order of breakpoint organizers, or <code>null</code> + * if none + */ + public void setOrganizers(IBreakpointOrganizer[] organizers) { + // remove previous listeners + if (fOrganizers != null) { + for (int i = 0; i < fOrganizers.length; i++) { fOrganizers[i].removePropertyChangeListener(this); } - } + } fOrganizers = organizers; if (organizers != null && organizers.length == 0) { fOrganizers = null; } - // add listeners - if (fOrganizers != null) { - for (int i = 0; i < fOrganizers.length; i++) { + // add listeners + if (fOrganizers != null) { + for (int i = 0; i < fOrganizers.length; i++) { fOrganizers[i].addPropertyChangeListener(this); } - } - if (!fDisposed) { - fViewer.getControl().setRedraw(false); - // maintain expansion based on visible breakpoints - IBreakpoint[] breakpoints = null; - if (isShowingGroups()) { - breakpoints = fViewer.getVisibleBreakpoints(); - } - reorganize(); - if (isShowingGroups() && breakpoints != null) { - // restore expansion - for (int i = 0; i < fElements.length; i++) { - BreakpointContainer container = (BreakpointContainer) fElements[i]; - for (int j = 0; j < breakpoints.length; j++) { - if (container.contains(breakpoints[j])) { - fViewer.expandToLevel(container, AbstractTreeViewer.ALL_LEVELS); - fViewer.updateCheckedState(container); - break; - } - } + } + if (!fDisposed) { + fViewer.getControl().setRedraw(false); + // maintain expansion based on visible breakpoints + IBreakpoint[] breakpoints = null; + if (isShowingGroups()) { + breakpoints = fViewer.getVisibleBreakpoints(); + } + reorganize(); + if (isShowingGroups() && breakpoints != null) { + // restore expansion + for (int i = 0; i < fElements.length; i++) { + BreakpointContainer container = (BreakpointContainer) fElements[i]; + for (int j = 0; j < breakpoints.length; j++) { + if (container.contains(breakpoints[j])) { + fViewer.expandToLevel(container, AbstractTreeViewer.ALL_LEVELS); + fViewer.updateCheckedState(container); + break; + } + } - } - } - fViewer.getControl().setRedraw(true); - } - } + } + } + fViewer.getControl().setRedraw(true); + } + } - /** - * Returns the root containers containing the given breakpoint, or <code>null</code> - * if none - * - * @param breakpoint the breakpoint to get containers for - * @return root containers containing the given breakpoint or <code>null</code> - */ - public BreakpointContainer[] getRoots(IBreakpoint breakpoint) { - if (isShowingGroups()) { + /** + * Returns the root containers containing the given breakpoint, or <code>null</code> + * if none + * + * @param breakpoint the breakpoint to get containers for + * @return root containers containing the given breakpoint or <code>null</code> + */ + public BreakpointContainer[] getRoots(IBreakpoint breakpoint) { + if (isShowingGroups()) { List<BreakpointContainer> list = new ArrayList<>(); - for (int i = 0; i < fElements.length; i++) { - BreakpointContainer container = (BreakpointContainer) fElements[i]; - if (container.contains(breakpoint)) { - list.add(container); - } - } - return list.toArray(new BreakpointContainer[list.size()]); - } - return null; - } + for (int i = 0; i < fElements.length; i++) { + BreakpointContainer container = (BreakpointContainer) fElements[i]; + if (container.contains(breakpoint)) { + list.add(container); + } + } + return list.toArray(new BreakpointContainer[list.size()]); + } + return null; + } - /** - * Returns the nested order of breakpoint organizers being used, or <code>null</code> - * if none. - * - * @return the nested order of breakpoint organizers being used, or <code>null</code> - * if none - */ - IBreakpointOrganizer[] getOrganizers() { - return fOrganizers; - } + /** + * Returns the nested order of breakpoint organizers being used, or <code>null</code> + * if none. + * + * @return the nested order of breakpoint organizers being used, or <code>null</code> + * if none + */ + IBreakpointOrganizer[] getOrganizers() { + return fOrganizers; + } - /** - * Organizes the breakpoints based on nested categories, if any. - */ - protected void reorganize() { - IBreakpoint[] breakpoints = DebugPlugin.getDefault().getBreakpointManager().getBreakpoints(); - if (fOrganizers == null) { - fElements = breakpoints; - } else { - IBreakpointOrganizer organizer = fOrganizers[0]; + /** + * Organizes the breakpoints based on nested categories, if any. + */ + protected void reorganize() { + IBreakpoint[] breakpoints = DebugPlugin.getDefault().getBreakpointManager().getBreakpoints(); + if (fOrganizers == null) { + fElements = breakpoints; + } else { + IBreakpointOrganizer organizer = fOrganizers[0]; Map<IAdaptable, BreakpointContainer> categoriesToContainers = new HashMap<>(); - for (int i = 0; i < breakpoints.length; i++) { - IBreakpoint breakpoint = breakpoints[i]; - IAdaptable[] categories = organizer.getCategories(breakpoint); - if (categories == null || categories.length == 0) { - categories = OtherBreakpointCategory.getCategories(organizer); - } - for (int j = 0; j < categories.length; j++) { - IAdaptable category = categories[j]; - BreakpointContainer container = categoriesToContainers.get(category); - if (container == null) { - IBreakpointOrganizer[] nesting = null; - if (fOrganizers.length > 1) { - nesting = new IBreakpointOrganizer[fOrganizers.length - 1]; - System.arraycopy(fOrganizers, 1, nesting, 0, nesting.length); - } - container = new BreakpointContainer(category, organizer, nesting); - categoriesToContainers.put(category, container); - } - container.addBreakpoint(breakpoint); - } - } - // add empty categories - IAdaptable[] emptyCategories = organizer.getCategories(); - if (emptyCategories != null) { - for (int i = 0; i < emptyCategories.length; i++) { - IAdaptable category = emptyCategories[i]; - BreakpointContainer container = categoriesToContainers.get(category); - if (container == null) { - container = new BreakpointContainer(category, organizer, null); - categoriesToContainers.put(category, container); - } - } - } - fElements = categoriesToContainers.values().toArray(); - } - fViewer.getControl().setRedraw(false); - fViewer.refresh(); - fViewer.getControl().setRedraw(true); - } + for (int i = 0; i < breakpoints.length; i++) { + IBreakpoint breakpoint = breakpoints[i]; + IAdaptable[] categories = organizer.getCategories(breakpoint); + if (categories == null || categories.length == 0) { + categories = OtherBreakpointCategory.getCategories(organizer); + } + for (int j = 0; j < categories.length; j++) { + IAdaptable category = categories[j]; + BreakpointContainer container = categoriesToContainers.get(category); + if (container == null) { + IBreakpointOrganizer[] nesting = null; + if (fOrganizers.length > 1) { + nesting = new IBreakpointOrganizer[fOrganizers.length - 1]; + System.arraycopy(fOrganizers, 1, nesting, 0, nesting.length); + } + container = new BreakpointContainer(category, organizer, nesting); + categoriesToContainers.put(category, container); + } + container.addBreakpoint(breakpoint); + } + } + // add empty categories + IAdaptable[] emptyCategories = organizer.getCategories(); + if (emptyCategories != null) { + for (int i = 0; i < emptyCategories.length; i++) { + IAdaptable category = emptyCategories[i]; + BreakpointContainer container = categoriesToContainers.get(category); + if (container == null) { + container = new BreakpointContainer(category, organizer, null); + categoriesToContainers.put(category, container); + } + } + } + fElements = categoriesToContainers.values().toArray(); + } + fViewer.getControl().setRedraw(false); + fViewer.refresh(); + fViewer.getControl().setRedraw(true); + } @Override public void propertyChange(PropertyChangeEvent event) { @@ -220,41 +220,41 @@ public class BreakpointsContentProvider implements ITreeContentProvider, IProper } } - /** - * Returns the existing containers the given breakpoint is contained in, or <code>null</code>. - * - * @param breakpoint the breakpoint to get containers for - * @return the existing containers the given breakpoint is contained in, or <code>null</code> - */ - protected BreakpointContainer[] getContainers(IBreakpoint breakpoint) { - if (isShowingGroups()) { - IAdaptable[] categories = fOrganizers[0].getCategories(breakpoint); - if (categories == null || categories.length == 0) { - categories = OtherBreakpointCategory.getCategories(fOrganizers[0]); - } - BreakpointContainer[] containers = new BreakpointContainer[categories.length]; - int index = 0; - for (int i = 0; i < fElements.length; i++) { - BreakpointContainer container = (BreakpointContainer)fElements[i]; - for (int j = 0; j < categories.length; j++) { - IAdaptable category = categories[j]; - if (container.getCategory().equals(category)) { - containers[index] = container; - index++; - } - } - } - return containers; - } - return null; - } + /** + * Returns the existing containers the given breakpoint is contained in, or <code>null</code>. + * + * @param breakpoint the breakpoint to get containers for + * @return the existing containers the given breakpoint is contained in, or <code>null</code> + */ + protected BreakpointContainer[] getContainers(IBreakpoint breakpoint) { + if (isShowingGroups()) { + IAdaptable[] categories = fOrganizers[0].getCategories(breakpoint); + if (categories == null || categories.length == 0) { + categories = OtherBreakpointCategory.getCategories(fOrganizers[0]); + } + BreakpointContainer[] containers = new BreakpointContainer[categories.length]; + int index = 0; + for (int i = 0; i < fElements.length; i++) { + BreakpointContainer container = (BreakpointContainer)fElements[i]; + for (int j = 0; j < categories.length; j++) { + IAdaptable category = categories[j]; + if (container.getCategory().equals(category)) { + containers[index] = container; + index++; + } + } + } + return containers; + } + return null; + } - /** - * Returns whether content is grouped by categories. - * - * @return whether content is grouped by categories - */ - protected boolean isShowingGroups() { - return fOrganizers != null; - } + /** + * Returns whether content is grouped by categories. + * + * @return whether content is grouped by categories + */ + protected boolean isShowingGroups() { + return fOrganizers != null; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointsDragAdapter.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointsDragAdapter.java index 485d369ac..fbdadf001 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointsDragAdapter.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointsDragAdapter.java @@ -32,80 +32,80 @@ import org.eclipse.swt.widgets.Item; */ public class BreakpointsDragAdapter extends DragSourceAdapter implements TransferDragSourceListener { - /** - * the associated viewer for the adapter - */ - private AbstractTreeViewer fViewer; - private Item[] fItems = null; + /** + * the associated viewer for the adapter + */ + private AbstractTreeViewer fViewer; + private Item[] fItems = null; - private BreakpointsView fView; - private TreePath[] fTreePaths = null; + private BreakpointsView fView; + private TreePath[] fTreePaths = null; - /** - * Constructor - * @param viewer the associated viewer, which acts as the selection provider and therefore <b>must</b> implement <code>ISelectionProvider</code> - */ - public BreakpointsDragAdapter(BreakpointsViewer viewer) { - Assert.isNotNull(viewer); - fViewer = viewer; - } - public BreakpointsDragAdapter(AbstractTreeViewer viewer, BreakpointsView view) { - Assert.isNotNull(view); - fViewer = viewer; - fView = view; - } + /** + * Constructor + * @param viewer the associated viewer, which acts as the selection provider and therefore <b>must</b> implement <code>ISelectionProvider</code> + */ + public BreakpointsDragAdapter(BreakpointsViewer viewer) { + Assert.isNotNull(viewer); + fViewer = viewer; + } + public BreakpointsDragAdapter(AbstractTreeViewer viewer, BreakpointsView view) { + Assert.isNotNull(view); + fViewer = viewer; + fView = view; + } - @Override + @Override public Transfer getTransfer() { - return LocalSelectionTransfer.getTransfer(); - } + return LocalSelectionTransfer.getTransfer(); + } - @Override + @Override public void dragStart(DragSourceEvent event) { - ISelection selection = fViewer.getSelection(); - LocalSelectionTransfer.getTransfer().setSelection(selection); - LocalSelectionTransfer.getTransfer().setSelectionSetTime(event.time & 0xFFFFFFFFL); - if (fViewer instanceof BreakpointsViewer) { - BreakpointsViewer viewer = (BreakpointsViewer)fViewer; - fItems = viewer.getSelectedItems(); - event.doit = viewer.canDrag(fItems); - } else { - if (selection instanceof ITreeSelection) { - fTreePaths = ((ITreeSelection) selection).getPaths(); - } else { - fTreePaths = new TreePath[0]; - } - event.doit = fView.canDrag(fTreePaths); - } - } + ISelection selection = fViewer.getSelection(); + LocalSelectionTransfer.getTransfer().setSelection(selection); + LocalSelectionTransfer.getTransfer().setSelectionSetTime(event.time & 0xFFFFFFFFL); + if (fViewer instanceof BreakpointsViewer) { + BreakpointsViewer viewer = (BreakpointsViewer)fViewer; + fItems = viewer.getSelectedItems(); + event.doit = viewer.canDrag(fItems); + } else { + if (selection instanceof ITreeSelection) { + fTreePaths = ((ITreeSelection) selection).getPaths(); + } else { + fTreePaths = new TreePath[0]; + } + event.doit = fView.canDrag(fTreePaths); + } + } - /* non Java-doc - * @see org.eclipse.swt.dnd.DragSourceListener#dragSetData - */ - @Override + /* non Java-doc + * @see org.eclipse.swt.dnd.DragSourceListener#dragSetData + */ + @Override public void dragSetData(DragSourceEvent event) { - // For consistency set the data to the selection even though - // the selection is provided by the LocalSelectionTransfer - // to the drop target adapter. - event.data = LocalSelectionTransfer.getTransfer().getSelection(); - } + // For consistency set the data to the selection even though + // the selection is provided by the LocalSelectionTransfer + // to the drop target adapter. + event.data = LocalSelectionTransfer.getTransfer().getSelection(); + } - /* non Java-doc - * @see org.eclipse.swt.dnd.DragSourceListener#dragFinished - */ - @Override + /* non Java-doc + * @see org.eclipse.swt.dnd.DragSourceListener#dragFinished + */ + @Override public void dragFinished(DragSourceEvent event) { - if (event.detail == DND.DROP_MOVE) { - // remove from source on move operation - if (fViewer instanceof BreakpointsViewer) { - BreakpointsViewer viewer = (BreakpointsViewer)fViewer; - viewer.performDrag(fItems); - } else { - fView.performDrag(fTreePaths); - } - } - fItems = null; - LocalSelectionTransfer.getTransfer().setSelection(null); - LocalSelectionTransfer.getTransfer().setSelectionSetTime(0); - } + if (event.detail == DND.DROP_MOVE) { + // remove from source on move operation + if (fViewer instanceof BreakpointsViewer) { + BreakpointsViewer viewer = (BreakpointsViewer)fViewer; + viewer.performDrag(fItems); + } else { + fView.performDrag(fTreePaths); + } + } + fItems = null; + LocalSelectionTransfer.getTransfer().setSelection(null); + LocalSelectionTransfer.getTransfer().setSelectionSetTime(0); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointsDropAdapter.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointsDropAdapter.java index 3f3f6ee35..85c59a891 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointsDropAdapter.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointsDropAdapter.java @@ -38,36 +38,36 @@ public class BreakpointsDropAdapter extends ViewerDropAdapter { private TreePath fPath = null; private BreakpointsView fView; - /** - * Constructor - * @param viewer the backing viewer - */ - protected BreakpointsDropAdapter(TreeViewer viewer) { - super(viewer); - setFeedbackEnabled(false); - } + /** + * Constructor + * @param viewer the backing viewer + */ + protected BreakpointsDropAdapter(TreeViewer viewer) { + super(viewer); + setFeedbackEnabled(false); + } - protected BreakpointsDropAdapter(TreeViewer viewer, BreakpointsView view) { - this(viewer); - fView = view; - } + protected BreakpointsDropAdapter(TreeViewer viewer, BreakpointsView view) { + this(viewer); + fView = view; + } - /** - * @see org.eclipse.jface.viewers.ViewerDropAdapter#performDrop(java.lang.Object) - */ - @Override + /** + * @see org.eclipse.jface.viewers.ViewerDropAdapter#performDrop(java.lang.Object) + */ + @Override public boolean performDrop(Object data) { - // This is temporary - if (getViewer() instanceof BreakpointsViewer) { - return ((BreakpointsViewer)getViewer()).performDrop(fTarget, (IStructuredSelection) LocalSelectionTransfer.getTransfer().getSelection()); - } else if (fView != null) { - ISelection selection = LocalSelectionTransfer.getTransfer().getSelection(); - if (fPath != null && selection instanceof ITreeSelection) { + // This is temporary + if (getViewer() instanceof BreakpointsViewer) { + return ((BreakpointsViewer)getViewer()).performDrop(fTarget, (IStructuredSelection) LocalSelectionTransfer.getTransfer().getSelection()); + } else if (fView != null) { + ISelection selection = LocalSelectionTransfer.getTransfer().getSelection(); + if (fPath != null && selection instanceof ITreeSelection) { return fView.performDrop(fPath, (ITreeSelection) selection); - } - } - return false; - } + } + } + return false; + } /** * @see org.eclipse.jface.viewers.ViewerDropAdapter#determineTarget(org.eclipse.swt.dnd.DropTargetEvent) @@ -89,20 +89,20 @@ public class BreakpointsDropAdapter extends ViewerDropAdapter { return fTarget; } - /** - * @see org.eclipse.jface.viewers.ViewerDropAdapter#validateDrop(java.lang.Object, int, org.eclipse.swt.dnd.TransferData) - */ - @Override + /** + * @see org.eclipse.jface.viewers.ViewerDropAdapter#validateDrop(java.lang.Object, int, org.eclipse.swt.dnd.TransferData) + */ + @Override public boolean validateDrop(Object target, int operation, TransferData transferType) { - // This is temporary - if (getViewer() instanceof BreakpointsViewer) { - return ((BreakpointsViewer)getViewer()).canDrop(fTarget, (IStructuredSelection) LocalSelectionTransfer.getTransfer().getSelection()); - } else { - ISelection selection = LocalSelectionTransfer.getTransfer().getSelection(); - if (fPath != null && selection instanceof ITreeSelection) { + // This is temporary + if (getViewer() instanceof BreakpointsViewer) { + return ((BreakpointsViewer)getViewer()).canDrop(fTarget, (IStructuredSelection) LocalSelectionTransfer.getTransfer().getSelection()); + } else { + ISelection selection = LocalSelectionTransfer.getTransfer().getSelection(); + if (fPath != null && selection instanceof ITreeSelection) { return fView.canDrop(fPath, (ITreeSelection) LocalSelectionTransfer.getTransfer().getSelection()); - } - } - return false; - } + } + } + return false; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointsLabelProvider.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointsLabelProvider.java index 3b096d177..a9fc85730 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointsLabelProvider.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointsLabelProvider.java @@ -30,74 +30,74 @@ import org.eclipse.ui.model.WorkbenchLabelProvider; */ public class BreakpointsLabelProvider extends LabelProvider implements IFontProvider { - private WorkbenchLabelProvider fWorkbenchLabelProvider; - private IDebugModelPresentation fPresentation; + private WorkbenchLabelProvider fWorkbenchLabelProvider; + private IDebugModelPresentation fPresentation; - /** - * Constructs a new label provide for the breakpoints view. - */ - public BreakpointsLabelProvider() { - fWorkbenchLabelProvider = new WorkbenchLabelProvider(); - fPresentation = DebugUITools.newDebugModelPresentation(); - } + /** + * Constructs a new label provide for the breakpoints view. + */ + public BreakpointsLabelProvider() { + fWorkbenchLabelProvider = new WorkbenchLabelProvider(); + fPresentation = DebugUITools.newDebugModelPresentation(); + } - @Override + @Override public void dispose() { - fWorkbenchLabelProvider.dispose(); - fPresentation.dispose(); - super.dispose(); - } + fWorkbenchLabelProvider.dispose(); + fPresentation.dispose(); + super.dispose(); + } - @Override + @Override public Image getImage(Object element) { - if (element instanceof IBreakpoint) { - return fPresentation.getImage(element); - } - Image image = fWorkbenchLabelProvider.getImage(element); - if (image != null) { - int flags= computeAdornmentFlags(); - if (flags > 0) { - CompositeDebugImageDescriptor descriptor= new CompositeDebugImageDescriptor(image, flags); - return DebugUIPlugin.getImageDescriptorRegistry().get(descriptor); - } - } - return image; - } + if (element instanceof IBreakpoint) { + return fPresentation.getImage(element); + } + Image image = fWorkbenchLabelProvider.getImage(element); + if (image != null) { + int flags= computeAdornmentFlags(); + if (flags > 0) { + CompositeDebugImageDescriptor descriptor= new CompositeDebugImageDescriptor(image, flags); + return DebugUIPlugin.getImageDescriptorRegistry().get(descriptor); + } + } + return image; + } /** - * Computes and return common adornment flags for the given category. - * - * @return adornment flags defined in CompositeDebugImageDescriptor - */ - private int computeAdornmentFlags() { - if (!DebugPlugin.getDefault().getBreakpointManager().isEnabled()) { - return CompositeDebugImageDescriptor.SKIP_BREAKPOINT; - } - return 0; - } + * Computes and return common adornment flags for the given category. + * + * @return adornment flags defined in CompositeDebugImageDescriptor + */ + private int computeAdornmentFlags() { + if (!DebugPlugin.getDefault().getBreakpointManager().isEnabled()) { + return CompositeDebugImageDescriptor.SKIP_BREAKPOINT; + } + return 0; + } - @Override + @Override public String getText(Object element) { - if (element instanceof IBreakpoint) { - return fPresentation.getText(element); - } - return fWorkbenchLabelProvider.getText(element); - } + if (element instanceof IBreakpoint) { + return fPresentation.getText(element); + } + return fWorkbenchLabelProvider.getText(element); + } - @Override + @Override public Font getFont(Object element) { - if (element instanceof IBreakpoint) { - return null; - } - return fWorkbenchLabelProvider.getFont(element); - } + if (element instanceof IBreakpoint) { + return null; + } + return fWorkbenchLabelProvider.getFont(element); + } - /** - * Returns the debug model presentation used by this label provider. - * - * @return the debug model presentation used by this label provider - */ - public IDebugModelPresentation getPresentation() { - return fPresentation; - } + /** + * Returns the debug model presentation used by this label provider. + * + * @return the debug model presentation used by this label provider + */ + public IDebugModelPresentation getPresentation() { + return fPresentation; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointsView.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointsView.java index 76a100ff5..fa3719e8e 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointsView.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointsView.java @@ -146,9 +146,9 @@ public class BreakpointsView extends VariablesView implements IBreakpointManager IPresentationContext presentationContext = viewer.getPresentationContext(); presentationContext.setProperty(IBreakpointUIConstants.PROP_BREAKPOINTS_ORGANIZERS, fOrganizers); - presentationContext.setProperty(IBreakpointUIConstants.PROP_BREAKPOINTS_ELEMENT_COMPARATOR, new ElementComparator(presentationContext)); + presentationContext.setProperty(IBreakpointUIConstants.PROP_BREAKPOINTS_ELEMENT_COMPARATOR, new ElementComparator(presentationContext)); - return viewer; + return viewer; } @Override @@ -160,11 +160,11 @@ public class BreakpointsView extends VariablesView implements IBreakpointManager */ @Override public String getText(Object element) { - IDebugModelPresentation lp= getConfiguredPresentation(element); - if (lp != null) { - return lp.getText(element); - } - return getDefaultText(element); + IDebugModelPresentation lp= getConfiguredPresentation(element); + if (lp != null) { + return lp.getText(element); + } + return getDefaultText(element); } }; } @@ -220,7 +220,7 @@ public class BreakpointsView extends VariablesView implements IBreakpointManager SkipAllBreakpointsAction skipAll = new SkipAllBreakpointsAction(this); setAction(ACTION_SKIP_BREAKPOINTS, skipAll); skipAll.setActionDefinitionId(SkipAllBreakpointsAction.ACTION_DEFINITION_ID); - DebugPlugin.getDefault().getBreakpointManager().addBreakpointManagerListener(this); + DebugPlugin.getDefault().getBreakpointManager().addBreakpointManagerListener(this); fClipboard = new Clipboard(getSite().getShell().getDisplay()); @@ -229,8 +229,8 @@ public class BreakpointsView extends VariablesView implements IBreakpointManager paste.setActionDefinitionId(ActionFactory.PASTE.getCommandId()); //actionBars.setGlobalActionHandler(ActionFactory.PASTE.getId(), paste); setGlobalAction(PASTE_ACTION, paste); - getViewer().addSelectionChangedListener(paste); - paste.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_TOOL_PASTE)); + getViewer().addSelectionChangedListener(paste); + paste.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_TOOL_PASTE)); SelectionListenerAction remove = new RemoveFromWorkingSetAction(this); setAction(ACTION_REMOVE_FROM_GROUP, remove); @@ -264,7 +264,7 @@ public class BreakpointsView extends VariablesView implements IBreakpointManager return; } - IPresentationContext presentationContext = getTreeModelViewer().getPresentationContext(); + IPresentationContext presentationContext = getTreeModelViewer().getPresentationContext(); if (selection == null || selection.isEmpty()) { Object input = new DefaultBreakpointsViewInput(presentationContext); @@ -293,20 +293,20 @@ public class BreakpointsView extends VariablesView implements IBreakpointManager // Expand all elements when the view is first shown. (bug 297762) if (!fFirstInputSet) { - fFirstInputSet = true; - expandAllElementsInViewer(); + fFirstInputSet = true; + expandAllElementsInViewer(); } } @Override protected void viewerInputUpdateComplete(IViewerInputUpdate update) { // handles non-standard debug model - IStatus status = update.getStatus(); - if ( (status == null || status.isOK()) && update.getElement() != null) { - setViewerInput(update.getInputElement()); - } else { - setViewerInput(new DefaultBreakpointsViewInput(getTreeModelViewer().getPresentationContext())); - } + IStatus status = update.getStatus(); + if ( (status == null || status.isOK()) && update.getElement() != null) { + setViewerInput(update.getInputElement()); + } else { + setViewerInput(new DefaultBreakpointsViewInput(getTreeModelViewer().getPresentationContext())); + } } @@ -316,12 +316,12 @@ public class BreakpointsView extends VariablesView implements IBreakpointManager * @return whether this view is currently tracking the debug view's selection */ public boolean isTrackingSelection() { - final TreeModelViewer viewer = getTreeModelViewer(); - if (viewer != null) { - return Boolean.TRUE.equals( - viewer.getPresentationContext().getProperty(IBreakpointUIConstants.PROP_BREAKPOINTS_TRACK_SELECTION) ); - } - return false; + final TreeModelViewer viewer = getTreeModelViewer(); + if (viewer != null) { + return Boolean.TRUE.equals( + viewer.getPresentationContext().getProperty(IBreakpointUIConstants.PROP_BREAKPOINTS_TRACK_SELECTION) ); + } + return false; } /** @@ -334,8 +334,8 @@ public class BreakpointsView extends VariablesView implements IBreakpointManager final TreeModelViewer viewer = getTreeModelViewer(); if (viewer != null) { viewer.getPresentationContext().setProperty( - IBreakpointUIConstants.PROP_BREAKPOINTS_TRACK_SELECTION, - trackSelection ? Boolean.TRUE : Boolean.FALSE); + IBreakpointUIConstants.PROP_BREAKPOINTS_TRACK_SELECTION, + trackSelection ? Boolean.TRUE : Boolean.FALSE); } } @@ -348,55 +348,55 @@ public class BreakpointsView extends VariablesView implements IBreakpointManager IMemento node = memento.getChild(IDebugUIConstants.EXTENSION_POINT_BREAKPOINT_ORGANIZERS); if (node == null) { fOrganizers = null; - } else { + } else { String value = node.getString(KEY_VALUE); - if (value != null) { - String[] ids = value.split(","); //$NON-NLS-1$ - BreakpointOrganizerManager manager = BreakpointOrganizerManager.getDefault(); + if (value != null) { + String[] ids = value.split(","); //$NON-NLS-1$ + BreakpointOrganizerManager manager = BreakpointOrganizerManager.getDefault(); List<IBreakpointOrganizer> organziers = new ArrayList<>(); - for (int i = 0; i < ids.length; i++) { - IBreakpointOrganizer organizer = manager.getOrganizer(ids[i]); - if (organizer != null) { - organziers.add(organizer); - } - } - fOrganizers = organziers.toArray(new IBreakpointOrganizer[organziers.size()]); - - for (int i = 0; i < fOrganizers.length; i++) { + for (int i = 0; i < ids.length; i++) { + IBreakpointOrganizer organizer = manager.getOrganizer(ids[i]); + if (organizer != null) { + organziers.add(organizer); + } + } + fOrganizers = organziers.toArray(new IBreakpointOrganizer[organziers.size()]); + + for (int i = 0; i < fOrganizers.length; i++) { fOrganizers[i].addPropertyChangeListener(this); } - } + } } } } - /** - * Initializes drag and drop for the breakpoints viewer - * @param viewer the viewer to add drag and drop support to - */ + /** + * Initializes drag and drop for the breakpoints viewer + * @param viewer the viewer to add drag and drop support to + */ @Override protected void initDragAndDrop(TreeModelViewer viewer) { - int ops = DND.DROP_MOVE | DND.DROP_COPY; - // drop - viewer.addDropSupport(ops, new Transfer[] {LocalSelectionTransfer.getTransfer()}, new BreakpointsDropAdapter(viewer, this)); - // Drag - viewer.addDragSupport(ops, new Transfer[] {LocalSelectionTransfer.getTransfer()}, new BreakpointsDragAdapter(viewer, this)); - } + int ops = DND.DROP_MOVE | DND.DROP_COPY; + // drop + viewer.addDropSupport(ops, new Transfer[] {LocalSelectionTransfer.getTransfer()}, new BreakpointsDropAdapter(viewer, this)); + // Drag + viewer.addDragSupport(ops, new Transfer[] {LocalSelectionTransfer.getTransfer()}, new BreakpointsDragAdapter(viewer, this)); + } @Override public void saveViewerState(IMemento memento) { StringBuilder buffer = new StringBuilder(); - if (fOrganizers != null) { - for (int i = 0; i < fOrganizers.length; i++) { - IBreakpointOrganizer organizer = fOrganizers[i]; - buffer.append(organizer.getIdentifier()); - if (i < (fOrganizers.length - 1)) { - buffer.append(','); - } - } - IMemento node = memento.createChild(IDebugUIConstants.EXTENSION_POINT_BREAKPOINT_ORGANIZERS); - node.putString(KEY_VALUE, buffer.toString()); - } + if (fOrganizers != null) { + for (int i = 0; i < fOrganizers.length; i++) { + IBreakpointOrganizer organizer = fOrganizers[i]; + buffer.append(organizer.getIdentifier()); + if (i < (fOrganizers.length - 1)) { + buffer.append(','); + } + } + IMemento node = memento.createChild(IDebugUIConstants.EXTENSION_POINT_BREAKPOINT_ORGANIZERS); + node.putString(KEY_VALUE, buffer.toString()); + } super.saveViewerState(memento); } @@ -464,7 +464,7 @@ public class BreakpointsView extends VariablesView implements IBreakpointManager if (viewer != null) { // update the presentation context filter viewer.getPresentationContext().setProperty( - IBreakpointUIConstants.PROP_BREAKPOINTS_FILTER_SELECTION, filter ? Boolean.TRUE : Boolean.FALSE); + IBreakpointUIConstants.PROP_BREAKPOINTS_FILTER_SELECTION, filter ? Boolean.TRUE : Boolean.FALSE); } } @@ -482,31 +482,31 @@ public class BreakpointsView extends VariablesView implements IBreakpointManager * Expands all elements in the viewer. */ public void expandAllElementsInViewer() { - Display display = getSite().getShell().getDisplay(); + Display display = getSite().getShell().getDisplay(); - final VirtualTreeModelViewer virtualViewer = new VirtualTreeModelViewer( - display, 0, ((ITreeModelViewer)getViewer()).getPresentationContext()); + final VirtualTreeModelViewer virtualViewer = new VirtualTreeModelViewer( + display, 0, ((ITreeModelViewer)getViewer()).getPresentationContext()); - virtualViewer.setAutoExpandLevel(-1); - virtualViewer.addViewerUpdateListener(new IViewerUpdateListener() { - @Override + virtualViewer.setAutoExpandLevel(-1); + virtualViewer.addViewerUpdateListener(new IViewerUpdateListener() { + @Override public void viewerUpdatesComplete() { - ModelDelta stateDelta = new ModelDelta(virtualViewer.getInput(), IModelDelta.NO_CHANGE); - virtualViewer.saveElementState(TreePath.EMPTY, stateDelta, IModelDelta.EXPAND); - ITreeModelViewer treeModelViewer = ((ITreeModelViewer) getViewer()); - if (treeModelViewer != null) { - ((ITreeModelViewer) getViewer()).updateViewer(stateDelta); - } - virtualViewer.dispose(); - } - @Override + ModelDelta stateDelta = new ModelDelta(virtualViewer.getInput(), IModelDelta.NO_CHANGE); + virtualViewer.saveElementState(TreePath.EMPTY, stateDelta, IModelDelta.EXPAND); + ITreeModelViewer treeModelViewer = ((ITreeModelViewer) getViewer()); + if (treeModelViewer != null) { + ((ITreeModelViewer) getViewer()).updateViewer(stateDelta); + } + virtualViewer.dispose(); + } + @Override public void viewerUpdatesBegin() {} - @Override + @Override public void updateStarted(IViewerUpdate update) {} - @Override + @Override public void updateComplete(IViewerUpdate update) {} - }); - virtualViewer.setInput(getViewer().getInput()); + }); + virtualViewer.setInput(getViewer().getInput()); } @@ -520,120 +520,120 @@ public class BreakpointsView extends VariablesView implements IBreakpointManager } /** - * Returns whether the given selection can be pasted into the given target. - * <p> - * Scheme: - * <ul> - * <li>Breakpoints can only be pasted into allowable containers (i..e. like workings sets)</li> - * <li>Breakpoints can only be pasted into containers that they do not already reside in</li> - * <li>Breakpoints can only be pasted into containers, not other breakpoints</li> - * </ul> - * </p> - * - * @param target target of the paste - * @param selection the selection to paste - * @return whether the given selection can be pasted into the given target - * - * TODO Remove in favor of using <code>TreeItem</code>s and <code>TreePath</code>s to determine paste targets - */ - public boolean canPaste(Object target, ISelection selection) { - if(!(target instanceof IBreakpointContainer) || !(selection instanceof IStructuredSelection)) { - return false; - } - if(selection == null || selection.isEmpty()) { - return false; - } - IStructuredSelection ss = (IStructuredSelection) selection; - IBreakpointContainer container = (IBreakpointContainer) target; + * Returns whether the given selection can be pasted into the given target. + * <p> + * Scheme: + * <ul> + * <li>Breakpoints can only be pasted into allowable containers (i..e. like workings sets)</li> + * <li>Breakpoints can only be pasted into containers that they do not already reside in</li> + * <li>Breakpoints can only be pasted into containers, not other breakpoints</li> + * </ul> + * </p> + * + * @param target target of the paste + * @param selection the selection to paste + * @return whether the given selection can be pasted into the given target + * + * TODO Remove in favor of using <code>TreeItem</code>s and <code>TreePath</code>s to determine paste targets + */ + public boolean canPaste(Object target, ISelection selection) { + if(!(target instanceof IBreakpointContainer) || !(selection instanceof IStructuredSelection)) { + return false; + } + if(selection == null || selection.isEmpty()) { + return false; + } + IStructuredSelection ss = (IStructuredSelection) selection; + IBreakpointContainer container = (IBreakpointContainer) target; for (Iterator<?> iter = ss.iterator(); iter.hasNext();) { - IBreakpoint breakpoint = (IBreakpoint)DebugPlugin.getAdapter(iter.next(), IBreakpoint.class); - if (breakpoint == null || container.contains(breakpoint) || !container.getOrganizer().canAdd(breakpoint, container.getCategory())) { - return false; - } - } - return true; - } - - /** - * Pastes the selection into the given target - * - * @param target target of the paste, either a IBreakpointContainer, - * or a Breakpoint within a IBreakpointContainer - * @param selection breakpoints - * @return whether successful - * - * TODO remove in favor of using <code>TreeItem</code> as paste target - */ - public boolean performPaste(Object target, ISelection selection) { - if (target instanceof IBreakpointContainer && selection instanceof IStructuredSelection) { - IBreakpointContainer container = (IBreakpointContainer) target; - Object[] objects = ((IStructuredSelection)selection).toArray(); - for (int i = 0; i < objects.length; i++) { - IBreakpoint breakpoint = (IBreakpoint)DebugPlugin.getAdapter(objects[i], IBreakpoint.class); - if (breakpoint != null) { - container.getOrganizer().addBreakpoint(breakpoint, container.getCategory()); - } - } - return true; - } - return false; - } + IBreakpoint breakpoint = (IBreakpoint)DebugPlugin.getAdapter(iter.next(), IBreakpoint.class); + if (breakpoint == null || container.contains(breakpoint) || !container.getOrganizer().canAdd(breakpoint, container.getCategory())) { + return false; + } + } + return true; + } + + /** + * Pastes the selection into the given target + * + * @param target target of the paste, either a IBreakpointContainer, + * or a Breakpoint within a IBreakpointContainer + * @param selection breakpoints + * @return whether successful + * + * TODO remove in favor of using <code>TreeItem</code> as paste target + */ + public boolean performPaste(Object target, ISelection selection) { + if (target instanceof IBreakpointContainer && selection instanceof IStructuredSelection) { + IBreakpointContainer container = (IBreakpointContainer) target; + Object[] objects = ((IStructuredSelection)selection).toArray(); + for (int i = 0; i < objects.length; i++) { + IBreakpoint breakpoint = (IBreakpoint)DebugPlugin.getAdapter(objects[i], IBreakpoint.class); + if (breakpoint != null) { + container.getOrganizer().addBreakpoint(breakpoint, container.getCategory()); + } + } + return true; + } + return false; + } /** - * Returns the container from within the specified path that is the container the breakpoint can be removed from + * Returns the container from within the specified path that is the container the breakpoint can be removed from * @param path the path to get the container from - * @return the first found container that includes the breakpoint that allows removal, or <code>null</code> if none found - * @since 3.3 - */ - public IBreakpointContainer getRemovableContainer(TreePath path) { - if (path != null) { - IBreakpoint breakpoint = (IBreakpoint)DebugPlugin.getAdapter(path.getLastSegment(), IBreakpoint.class); - if (breakpoint != null) { - IBreakpointContainer container = null; - for(int i = path.getSegmentCount()-2; i > -1; i--) { - Object segment = path.getSegment(i); - if (segment instanceof IBreakpointContainer) { - container = (IBreakpointContainer) segment; - if(container.contains(breakpoint) && - container.getOrganizer() != null && - container.getOrganizer().canRemove(breakpoint, container.getCategory())) { - return container; - } - } - } - } - } - return null; - } - - /** - * Returns the addable breakpoint container of the specified tree path - * @param path the path to get the container for - * @return the first found addable container for the specified tree path or <code>null</code> if none found - * @since 3.3 - */ - protected IBreakpointContainer getAddableContainer(TreePath path) { - if (path != null) { - Object element = path.getLastSegment(); - if (element instanceof IBreakpointContainer) { - return (IBreakpointContainer)element; - } - IBreakpoint breakpoint = (IBreakpoint)DebugPlugin.getAdapter(element, IBreakpoint.class); - if (breakpoint != null) { - IBreakpointContainer container = null; - for (int i = path.getSegmentCount()-2; i > -1; i--) { - Object segment = path.getSegment(i); - if (segment instanceof IBreakpointContainer) { - container = (IBreakpointContainer) segment; - if (container.contains(breakpoint) && container.getOrganizer().canAdd(breakpoint, container.getCategory())) { - return container; - } - } - } - } - } - return null; - } + * @return the first found container that includes the breakpoint that allows removal, or <code>null</code> if none found + * @since 3.3 + */ + public IBreakpointContainer getRemovableContainer(TreePath path) { + if (path != null) { + IBreakpoint breakpoint = (IBreakpoint)DebugPlugin.getAdapter(path.getLastSegment(), IBreakpoint.class); + if (breakpoint != null) { + IBreakpointContainer container = null; + for(int i = path.getSegmentCount()-2; i > -1; i--) { + Object segment = path.getSegment(i); + if (segment instanceof IBreakpointContainer) { + container = (IBreakpointContainer) segment; + if(container.contains(breakpoint) && + container.getOrganizer() != null && + container.getOrganizer().canRemove(breakpoint, container.getCategory())) { + return container; + } + } + } + } + } + return null; + } + + /** + * Returns the addable breakpoint container of the specified tree path + * @param path the path to get the container for + * @return the first found addable container for the specified tree path or <code>null</code> if none found + * @since 3.3 + */ + protected IBreakpointContainer getAddableContainer(TreePath path) { + if (path != null) { + Object element = path.getLastSegment(); + if (element instanceof IBreakpointContainer) { + return (IBreakpointContainer)element; + } + IBreakpoint breakpoint = (IBreakpoint)DebugPlugin.getAdapter(element, IBreakpoint.class); + if (breakpoint != null) { + IBreakpointContainer container = null; + for (int i = path.getSegmentCount()-2; i > -1; i--) { + Object segment = path.getSegment(i); + if (segment instanceof IBreakpointContainer) { + container = (IBreakpointContainer) segment; + if (container.contains(breakpoint) && container.getOrganizer().canAdd(breakpoint, container.getCategory())) { + return container; + } + } + } + } + } + return null; + } /** * This method is used to determine if there is an addable parent container available for the specified drop target. * <p> @@ -652,72 +652,72 @@ public class BreakpointsView extends VariablesView implements IBreakpointManager if (element instanceof IBreakpointContainer) { IBreakpointContainer container = (IBreakpointContainer) element; if (container.contains(breakpoint) || !container.getOrganizer().canAdd(breakpoint, container.getCategory())) { - return false; - } + return false; + } } } } return true; } - /** - * Returns if the selected item in the tree can be dragged - * <p> - * Scheme: - * <ul> - * <li>breakpoint containers cannot be dragged</li> - * <li>breakpoints can be dragged iff the container they reside in supports the removal of breakpoints</li> - * </ul> - * </p> - * @param items the tree paths to check if they can be dragged - * @return true if the selected element can be dragged, false otherwise - * @since 3.3 - */ - boolean canDrag(TreePath[] items) { - if(items == null) { - return false; - } - if (items.length == 0) { - return false; - } - for (int i = 0; i < items.length; i++) { - if (getRemovableContainer(items[i]) == null) { - return false; - } - } - return true; - } - - /** - * Performs the actual removal of breakpoints from their respective (removable) containers on a successful drag operation - * @param paths the tree paths to drag - * @since 3.3 - */ - void performDrag(TreePath[] paths) { - if (paths == null) { - return; - } + /** + * Returns if the selected item in the tree can be dragged + * <p> + * Scheme: + * <ul> + * <li>breakpoint containers cannot be dragged</li> + * <li>breakpoints can be dragged iff the container they reside in supports the removal of breakpoints</li> + * </ul> + * </p> + * @param items the tree paths to check if they can be dragged + * @return true if the selected element can be dragged, false otherwise + * @since 3.3 + */ + boolean canDrag(TreePath[] items) { + if(items == null) { + return false; + } + if (items.length == 0) { + return false; + } + for (int i = 0; i < items.length; i++) { + if (getRemovableContainer(items[i]) == null) { + return false; + } + } + return true; + } + + /** + * Performs the actual removal of breakpoints from their respective (removable) containers on a successful drag operation + * @param paths the tree paths to drag + * @since 3.3 + */ + void performDrag(TreePath[] paths) { + if (paths == null) { + return; + } Map<IBreakpointContainer, List<IBreakpoint>> containersToBreakpoints = new HashMap<>(); - for (int i = 0; i < paths.length; i++) { - IBreakpoint breakpoint = (IBreakpoint)DebugPlugin.getAdapter(paths[i].getLastSegment(), IBreakpoint.class); - if (breakpoint != null) { - IBreakpointContainer container = getRemovableContainer(paths[i]); - if(container != null) { + for (int i = 0; i < paths.length; i++) { + IBreakpoint breakpoint = (IBreakpoint)DebugPlugin.getAdapter(paths[i].getLastSegment(), IBreakpoint.class); + if (breakpoint != null) { + IBreakpointContainer container = getRemovableContainer(paths[i]); + if(container != null) { List<IBreakpoint> list = containersToBreakpoints.get(container); - if (list == null) { + if (list == null) { list = new ArrayList<>(); - containersToBreakpoints.put(container, list); - } - list.add(breakpoint); - } - } - } + containersToBreakpoints.put(container, list); + } + list.add(breakpoint); + } + } + } for (Entry<IBreakpointContainer, List<IBreakpoint>> entry : containersToBreakpoints.entrySet()) { - IBreakpointContainer container = entry.getKey(); + IBreakpointContainer container = entry.getKey(); List<IBreakpoint> list = entry.getValue(); - IBreakpointOrganizer organizer = container.getOrganizer(); - IBreakpoint[] breakpoints = list.toArray(new IBreakpoint[list.size()]); - if (organizer instanceof IBreakpointOrganizerDelegateExtension) { + IBreakpointOrganizer organizer = container.getOrganizer(); + IBreakpoint[] breakpoints = list.toArray(new IBreakpoint[list.size()]); + if (organizer instanceof IBreakpointOrganizerDelegateExtension) { IBreakpointOrganizerDelegateExtension extension = (IBreakpointOrganizerDelegateExtension) organizer; extension.removeBreakpoints(breakpoints, container.getCategory()); } else { @@ -725,71 +725,71 @@ public class BreakpointsView extends VariablesView implements IBreakpointManager organizer.removeBreakpoint(breakpoints[i], container.getCategory()); } } - } - } + } + } /** - * Performs the actual addition of the selected breakpoints to the specified target - * @param target the target to add the selection of breakpoints to - * @param selection the selection of breakpoints - * @return true if the drop occurred, false otherwise - * @since 3.3 - */ - protected boolean performDrop(TreePath target, ITreeSelection selection) { + * Performs the actual addition of the selected breakpoints to the specified target + * @param target the target to add the selection of breakpoints to + * @param selection the selection of breakpoints + * @return true if the drop occurred, false otherwise + * @since 3.3 + */ + protected boolean performDrop(TreePath target, ITreeSelection selection) { if(target == null || selection == null) { - return false; - } - IBreakpointContainer container = getAddableContainer(target); - if (container == null) { + return false; + } + IBreakpointContainer container = getAddableContainer(target); + if (container == null) { return false; } - IBreakpointOrganizer organizer = container.getOrganizer(); + IBreakpointOrganizer organizer = container.getOrganizer(); List<IBreakpoint> breakpoints = new ArrayList<>(selection.size()); for (Iterator<?> iter = selection.iterator(); iter.hasNext();) { - IBreakpoint breakpoint = (IBreakpoint) DebugPlugin.getAdapter(iter.next(), IBreakpoint.class); - if (breakpoint != null) { - breakpoints.add(breakpoint); - } - } - if (organizer instanceof IBreakpointOrganizerDelegateExtension) { - IBreakpointOrganizerDelegateExtension extension = (IBreakpointOrganizerDelegateExtension) organizer; - extension.addBreakpoints( - breakpoints.toArray(new IBreakpoint[breakpoints.size()]), - container.getCategory()); - } else { - for (int i = 0; i < breakpoints.size(); i++) { - organizer.addBreakpoint(breakpoints.get(i), container.getCategory()); - } - } - // TODO expandToLevel(target.getData(), ALL_LEVELS); - return true; - } - - /** - * Determines if the specified element can be dropped into the specified target - * <p> - * Scheme: - * <ul> - * <li>Breakpoints can be dropped into working sets</li> - * <li>Breakpoints can be dropped into breakpoints, provided there is a drop-able parent of the target breakpoint</li> - * </ul> - * </p> - * @param target the target for the drop - * @param selection the selection to see if we can drop - * @return true if the specified element can be dropped into the specified target, false otherwise - * @since 3.3 - */ - boolean canDrop(TreePath target, ITreeSelection selection) { - if (selection == null || target == null) { - return false; - } + IBreakpoint breakpoint = (IBreakpoint) DebugPlugin.getAdapter(iter.next(), IBreakpoint.class); + if (breakpoint != null) { + breakpoints.add(breakpoint); + } + } + if (organizer instanceof IBreakpointOrganizerDelegateExtension) { + IBreakpointOrganizerDelegateExtension extension = (IBreakpointOrganizerDelegateExtension) organizer; + extension.addBreakpoints( + breakpoints.toArray(new IBreakpoint[breakpoints.size()]), + container.getCategory()); + } else { + for (int i = 0; i < breakpoints.size(); i++) { + organizer.addBreakpoint(breakpoints.get(i), container.getCategory()); + } + } + // TODO expandToLevel(target.getData(), ALL_LEVELS); + return true; + } + + /** + * Determines if the specified element can be dropped into the specified target + * <p> + * Scheme: + * <ul> + * <li>Breakpoints can be dropped into working sets</li> + * <li>Breakpoints can be dropped into breakpoints, provided there is a drop-able parent of the target breakpoint</li> + * </ul> + * </p> + * @param target the target for the drop + * @param selection the selection to see if we can drop + * @return true if the specified element can be dropped into the specified target, false otherwise + * @since 3.3 + */ + boolean canDrop(TreePath target, ITreeSelection selection) { + if (selection == null || target == null) { + return false; + } for (Iterator<?> iter = selection.iterator(); iter.hasNext();) { - IBreakpoint breakpoint = (IBreakpoint)DebugPlugin.getAdapter(iter.next(), IBreakpoint.class); - if (breakpoint == null || !checkAddableParentContainers(target, breakpoint)){ - return false; - } - } - return true; - } + IBreakpoint breakpoint = (IBreakpoint)DebugPlugin.getAdapter(iter.next(), IBreakpoint.class); + if (breakpoint == null || !checkAddableParentContainers(target, breakpoint)){ + return false; + } + } + return true; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointsViewer.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointsViewer.java index c72c2333c..437bfd1dd 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointsViewer.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointsViewer.java @@ -43,202 +43,202 @@ import org.eclipse.swt.widgets.Widget; */ public class BreakpointsViewer extends CheckboxTreeViewer { - /** - * Constructs a new breakpoints viewer with the given tree. - * - * @param tree the backing tree widget - */ - public BreakpointsViewer(Tree tree) { - super(tree); - } + /** + * Constructs a new breakpoints viewer with the given tree. + * + * @param tree the backing tree widget + */ + public BreakpointsViewer(Tree tree) { + super(tree); + } - /** - * Returns the selected items. - * - * @return selected items - */ - public Item[] getSelectedItems() { - return getSelection(getControl()); - } + /** + * Returns the selected items. + * + * @return selected items + */ + public Item[] getSelectedItems() { + return getSelection(getControl()); + } - /** - * Returns the item associated with the given element, or <code>null</code>. - * - * @param element element in breakpoints view - * @return item associated with the given element, or <code>null</code> - */ - public Widget searchItem(Object element) { - return findItem(element); - } + /** + * Returns the item associated with the given element, or <code>null</code>. + * + * @param element element in breakpoints view + * @return item associated with the given element, or <code>null</code> + */ + public Widget searchItem(Object element) { + return findItem(element); + } - /** - * Refreshes the given item in the tree. - * - * @param item item to refresh - */ - public void refreshItem(TreeItem item) { - updateItem(item, item.getData()); - } + /** + * Refreshes the given item in the tree. + * + * @param item item to refresh + */ + public void refreshItem(TreeItem item) { + updateItem(item, item.getData()); + } - /** - * Returns a collection of currently visible breakpoints. - * - * @return collection of currently visible breakpoints - */ - public IBreakpoint[] getVisibleBreakpoints() { - IBreakpointManager manager= DebugPlugin.getDefault().getBreakpointManager(); - Object[] elements= ((ITreeContentProvider)getContentProvider()).getElements(manager); + /** + * Returns a collection of currently visible breakpoints. + * + * @return collection of currently visible breakpoints + */ + public IBreakpoint[] getVisibleBreakpoints() { + IBreakpointManager manager= DebugPlugin.getDefault().getBreakpointManager(); + Object[] elements= ((ITreeContentProvider)getContentProvider()).getElements(manager); List<IBreakpoint> list = new ArrayList<>(); - for (int i = 0; i < elements.length; i++) { - TreeItem item = (TreeItem) searchItem(elements[i]); - if (item != null) { - collectExpandedBreakpoints(item, list); - } - } - return list.toArray(new IBreakpoint[list.size()]); - } + for (int i = 0; i < elements.length; i++) { + TreeItem item = (TreeItem) searchItem(elements[i]); + if (item != null) { + collectExpandedBreakpoints(item, list); + } + } + return list.toArray(new IBreakpoint[list.size()]); + } - /** - * Adds expanded breakpoints to the list. Traverses children of the given - * tree item if any. - * - * @param item the item to get breakpoints from - * @param list collection of visible breakpoints - */ + /** + * Adds expanded breakpoints to the list. Traverses children of the given + * tree item if any. + * + * @param item the item to get breakpoints from + * @param list collection of visible breakpoints + */ private void collectExpandedBreakpoints(TreeItem item, List<IBreakpoint> list) { - Object data = item.getData(); - if (data instanceof IBreakpoint) { + Object data = item.getData(); + if (data instanceof IBreakpoint) { list.add((IBreakpoint) data); - return; - } - if (item.getExpanded()) { - TreeItem[] items = item.getItems(); - for (int i = 0; i < items.length; i++) { - collectExpandedBreakpoints(items[i], list); - } - } - } + return; + } + if (item.getExpanded()) { + TreeItem[] items = item.getItems(); + for (int i = 0; i < items.length; i++) { + collectExpandedBreakpoints(items[i], list); + } + } + } - /** - * Sets the selection to a specific tree item - * - * @param item the item to set as the current tree selection - */ - protected void setSelection(TreeItem item) { - getTree().setSelection(new TreeItem[]{item}); - updateSelection(getSelection()); - } + /** + * Sets the selection to a specific tree item + * + * @param item the item to set as the current tree selection + */ + protected void setSelection(TreeItem item) { + getTree().setSelection(new TreeItem[]{item}); + updateSelection(getSelection()); + } /** - * Returns the container from within the specified path that is the container the breakpoint can be removed from - * @param item the item to get the container for - * @return the first found container that includes the breakpoint that allows removal, or <code>null</code> if none found - * @since 3.3 - */ - public IBreakpointContainer getRemovableContainer(Item item) { - if(item == null) { - return null; - } - if(item.getData() instanceof IBreakpoint) { - TreePath path = getTreePathFromItem(item); - if(path != null) { - IBreakpoint breakpoint = (IBreakpoint) path.getLastSegment(); - IBreakpointContainer container = null; - for(int i = path.getSegmentCount()-2; i > -1; i--) { - container = (IBreakpointContainer) path.getSegment(i); - if(container.contains(breakpoint) && container.getOrganizer().canRemove(breakpoint, container.getCategory())) { - return container; - } - } - } - } - return null; - } + * Returns the container from within the specified path that is the container the breakpoint can be removed from + * @param item the item to get the container for + * @return the first found container that includes the breakpoint that allows removal, or <code>null</code> if none found + * @since 3.3 + */ + public IBreakpointContainer getRemovableContainer(Item item) { + if(item == null) { + return null; + } + if(item.getData() instanceof IBreakpoint) { + TreePath path = getTreePathFromItem(item); + if(path != null) { + IBreakpoint breakpoint = (IBreakpoint) path.getLastSegment(); + IBreakpointContainer container = null; + for(int i = path.getSegmentCount()-2; i > -1; i--) { + container = (IBreakpointContainer) path.getSegment(i); + if(container.contains(breakpoint) && container.getOrganizer().canRemove(breakpoint, container.getCategory())) { + return container; + } + } + } + } + return null; + } - /** - * Returns the addable breakpoint container of the specified breakpoint - * @param item the item to get the container for - * @return the first found addable container for the specified breakpoint or <code>null</code> if none found - * @since 3.3 - */ - public IBreakpointContainer getAddableContainer(Item item) { - TreePath path = getTreePathFromItem(item); - if(path != null) { - Object element = path.getLastSegment(); - if(element instanceof IBreakpoint) { - IBreakpointContainer container = null; - IBreakpoint breakpoint = (IBreakpoint) element; - for(int i = path.getSegmentCount()-2; i > -1; i--) { - container = (IBreakpointContainer) path.getSegment(i); - if(container.contains(breakpoint) && container.getOrganizer().canAdd(breakpoint, container.getCategory())) { - return container; - } - } - } - } - return null; - } + /** + * Returns the addable breakpoint container of the specified breakpoint + * @param item the item to get the container for + * @return the first found addable container for the specified breakpoint or <code>null</code> if none found + * @since 3.3 + */ + public IBreakpointContainer getAddableContainer(Item item) { + TreePath path = getTreePathFromItem(item); + if(path != null) { + Object element = path.getLastSegment(); + if(element instanceof IBreakpoint) { + IBreakpointContainer container = null; + IBreakpoint breakpoint = (IBreakpoint) element; + for(int i = path.getSegmentCount()-2; i > -1; i--) { + container = (IBreakpointContainer) path.getSegment(i); + if(container.contains(breakpoint) && container.getOrganizer().canAdd(breakpoint, container.getCategory())) { + return container; + } + } + } + } + return null; + } - /** - * Returns if the selected item in the tree can be dragged - * <p> - * Scheme: - * <ul> - * <li>breakpoint containers cannot be dragged</li> - * <li>breakpoints can be dragged iff the container they reside in supports the removal of breakpoints</li> - * </ul> - * </p> - * @param items the items to test if they can be dragged - * @return true if the selected element can be dragged, false otherwise - * @since 3.3 - */ - public boolean canDrag(Item[] items) { - if(items == null) { - return false; - } - if(items.length == 0) { - return false; - } - for(int i = 0; i < items.length; i++) { - if(getRemovableContainer(items[i]) == null) { - return false; - } - } - return true; - } + /** + * Returns if the selected item in the tree can be dragged + * <p> + * Scheme: + * <ul> + * <li>breakpoint containers cannot be dragged</li> + * <li>breakpoints can be dragged iff the container they reside in supports the removal of breakpoints</li> + * </ul> + * </p> + * @param items the items to test if they can be dragged + * @return true if the selected element can be dragged, false otherwise + * @since 3.3 + */ + public boolean canDrag(Item[] items) { + if(items == null) { + return false; + } + if(items.length == 0) { + return false; + } + for(int i = 0; i < items.length; i++) { + if(getRemovableContainer(items[i]) == null) { + return false; + } + } + return true; + } - /** - * Performs the actual removal of breakpoints from their respective (removable) containers on a successful drag operation - * @param items the items involved in the drag - * @since 3.3 - */ - public void performDrag(Item[] items) { - if(items == null) { - return; - } + /** + * Performs the actual removal of breakpoints from their respective (removable) containers on a successful drag operation + * @param items the items involved in the drag + * @since 3.3 + */ + public void performDrag(Item[] items) { + if(items == null) { + return; + } Map<IBreakpointContainer, List<IBreakpoint>> containersToBreakpoints = new HashMap<>(); IBreakpointContainer container = null; - IBreakpoint breakpoint = null; - for(int i = 0; i < items.length; i++) { - if(!items[i].isDisposed()) { - breakpoint = (IBreakpoint)items[i].getData(); - container = getRemovableContainer(items[i]); - if(container != null) { + IBreakpoint breakpoint = null; + for(int i = 0; i < items.length; i++) { + if(!items[i].isDisposed()) { + breakpoint = (IBreakpoint)items[i].getData(); + container = getRemovableContainer(items[i]); + if(container != null) { List<IBreakpoint> list = containersToBreakpoints.get(container); - if (list == null) { + if (list == null) { list = new ArrayList<>(); - containersToBreakpoints.put(container, list); - } - list.add(breakpoint); - } - } - } + containersToBreakpoints.put(container, list); + } + list.add(breakpoint); + } + } + } for (Entry<IBreakpointContainer, List<IBreakpoint>> entry : containersToBreakpoints.entrySet()) { - container = entry.getKey(); + container = entry.getKey(); List<IBreakpoint> list = entry.getValue(); - IBreakpointOrganizer organizer = container.getOrganizer(); - IBreakpoint[] breakpoints = list.toArray(new IBreakpoint[list.size()]); - if (organizer instanceof IBreakpointOrganizerDelegateExtension) { + IBreakpointOrganizer organizer = container.getOrganizer(); + IBreakpoint[] breakpoints = list.toArray(new IBreakpoint[list.size()]); + if (organizer instanceof IBreakpointOrganizerDelegateExtension) { IBreakpointOrganizerDelegateExtension extension = (IBreakpointOrganizerDelegateExtension) organizer; extension.removeBreakpoints(breakpoints, container.getCategory()); } else { @@ -246,35 +246,35 @@ public class BreakpointsViewer extends CheckboxTreeViewer { organizer.removeBreakpoint(breakpoints[i], container.getCategory()); } } - } - } + } + } - /** - * Determines if the specified element can be dropped into the specified target - * <p> - * Scheme: - * <ul> - * <li>Breakpoints can be dropped into working sets</li> - * <li>Breakpoints can be dropped into breakpoints, provided there is a droppable parent of the target breakpoint</li> - * </ul> - * </p> - * @param target the target for the drop - * @param selection the selection we want to drop - * @return true if the specified element can be dropped into the specified target, false otherwise - * @since 3.3 - */ - public boolean canDrop(Item target, IStructuredSelection selection) { - if(selection == null || target == null) { - return false; - } + /** + * Determines if the specified element can be dropped into the specified target + * <p> + * Scheme: + * <ul> + * <li>Breakpoints can be dropped into working sets</li> + * <li>Breakpoints can be dropped into breakpoints, provided there is a droppable parent of the target breakpoint</li> + * </ul> + * </p> + * @param target the target for the drop + * @param selection the selection we want to drop + * @return true if the specified element can be dropped into the specified target, false otherwise + * @since 3.3 + */ + public boolean canDrop(Item target, IStructuredSelection selection) { + if(selection == null || target == null) { + return false; + } for (Iterator<?> iter = selection.iterator(); iter.hasNext();) { - Object currentObject = iter.next(); - if (!(currentObject instanceof IBreakpoint) || !checkAddableParentContainers(target, (IBreakpoint)currentObject)){ - return false; - } - } - return true; - } + Object currentObject = iter.next(); + if (!(currentObject instanceof IBreakpoint) || !checkAddableParentContainers(target, (IBreakpoint)currentObject)){ + return false; + } + } + return true; + } /** * This method is used to determine if there is an addable parent container available for the specified drop target. @@ -296,8 +296,8 @@ public class BreakpointsViewer extends CheckboxTreeViewer { if(element instanceof IBreakpointContainer) { container = (IBreakpointContainer) element; if(container.contains(breakpoint) || !container.getOrganizer().canAdd(breakpoint, container.getCategory())) { - return false; - } + return false; + } } } } @@ -305,38 +305,38 @@ public class BreakpointsViewer extends CheckboxTreeViewer { } /** - * Performs the actual addition of the selected breakpoints to the specified target - * @param target the target to add the selection of breakpoints to - * @param selection the selection of breakpoints - * @return true if the drop occurred, false otherwise - * @since 3.3 - */ - public boolean performDrop(Item target, IStructuredSelection selection) { + * Performs the actual addition of the selected breakpoints to the specified target + * @param target the target to add the selection of breakpoints to + * @param selection the selection of breakpoints + * @return true if the drop occurred, false otherwise + * @since 3.3 + */ + public boolean performDrop(Item target, IStructuredSelection selection) { if(target == null || selection == null) { - return false; - } - IBreakpoint breakpoint = null; - Object element = target.getData(); - IBreakpointContainer container = (element instanceof IBreakpointContainer ? (IBreakpointContainer)element : getAddableContainer(target)); - if(container == null) { return false; } - IBreakpointOrganizer organizer = container.getOrganizer(); - if (organizer instanceof IBreakpointOrganizerDelegateExtension) { - IBreakpointOrganizerDelegateExtension extension = (IBreakpointOrganizerDelegateExtension) organizer; - Object[] array = selection.toArray(); - IBreakpoint[] breakpoints = new IBreakpoint[array.length]; - System.arraycopy(array, 0, breakpoints, 0, array.length); - extension.addBreakpoints(breakpoints, container.getCategory()); - } else { + IBreakpoint breakpoint = null; + Object element = target.getData(); + IBreakpointContainer container = (element instanceof IBreakpointContainer ? (IBreakpointContainer)element : getAddableContainer(target)); + if(container == null) { + return false; + } + IBreakpointOrganizer organizer = container.getOrganizer(); + if (organizer instanceof IBreakpointOrganizerDelegateExtension) { + IBreakpointOrganizerDelegateExtension extension = (IBreakpointOrganizerDelegateExtension) organizer; + Object[] array = selection.toArray(); + IBreakpoint[] breakpoints = new IBreakpoint[array.length]; + System.arraycopy(array, 0, breakpoints, 0, array.length); + extension.addBreakpoints(breakpoints, container.getCategory()); + } else { for (Iterator<?> iter = selection.iterator(); iter.hasNext();) { - breakpoint = (IBreakpoint) iter.next(); + breakpoint = (IBreakpoint) iter.next(); organizer.addBreakpoint(breakpoint, container.getCategory()); - } - } - expandToLevel(target.getData(), ALL_LEVELS); - return true; - } + } + } + expandToLevel(target.getData(), ALL_LEVELS); + return true; + } @Override public void refresh() { @@ -354,19 +354,19 @@ public class BreakpointsViewer extends CheckboxTreeViewer { } } - /** - * Update the checked state up the given element and all of its children. - * - * @param element the element to update - */ + /** + * Update the checked state up the given element and all of its children. + * + * @param element the element to update + */ public void updateCheckedState(Object element) { - Widget[] widgets = searchItems(element); - for (int i = 0; i < widgets.length; i++) { - Widget widget = widgets[i]; - if (widget != null) { - updateCheckedState((TreeItem)widget); - } - } + Widget[] widgets = searchItems(element); + for (int i = 0; i < widgets.length; i++) { + Widget widget = widgets[i]; + if (widget != null) { + updateCheckedState((TreeItem)widget); + } + } } /** @@ -374,76 +374,76 @@ public class BreakpointsViewer extends CheckboxTreeViewer { * @param element the element to search for when finding occurrences * @return a list of widget occurrences to update or an empty list */ - private Widget[] searchItems(Object element) { + private Widget[] searchItems(Object element) { ArrayList<TreeItem> list = new ArrayList<>(); - TreeItem[] items = getTree().getItems(); - for (int i = 0; i < items.length; i++) { - findAllOccurrences(items[i], element, list); - } - return list.toArray(new Widget[0]); - } + TreeItem[] items = getTree().getItems(); + for (int i = 0; i < items.length; i++) { + findAllOccurrences(items[i], element, list); + } + return list.toArray(new Widget[0]); + } - /** - * performs the actual search for items in the tree - * @param list the list to add matches to - * @param item the item in the tree - * @param element the element to compare - */ + /** + * performs the actual search for items in the tree + * @param list the list to add matches to + * @param item the item in the tree + * @param element the element to compare + */ private void findAllOccurrences(TreeItem item, Object element, ArrayList<TreeItem> list) { - if (element.equals(item.getData())) { + if (element.equals(item.getData())) { list.add(item); - } - TreeItem[] items = item.getItems(); - for (int i = 0; i < items.length; i++) { - findAllOccurrences(items[i], element, list); - } - } + } + TreeItem[] items = item.getItems(); + for (int i = 0; i < items.length; i++) { + findAllOccurrences(items[i], element, list); + } + } - /** - * Update the checked state up the given element and all of its children. - * - * @param item the item to update - */ - public void updateCheckedState(TreeItem item) { - Object element = item.getData(); - if (element instanceof IBreakpoint) { - try { - item.setChecked(((IBreakpoint) element).isEnabled()); - refreshItem(item); - } catch (CoreException e) { - DebugUIPlugin.log(e); - } - } else if (element instanceof IBreakpointContainer) { - IBreakpoint[] breakpoints = ((IBreakpointContainer) element).getBreakpoints(); - int enabledChildren= 0; - for (int i = 0; i < breakpoints.length; i++) { - IBreakpoint breakpoint = breakpoints[i]; - try { - if (breakpoint.isEnabled()) { - enabledChildren++; - } - } catch (CoreException e) { - DebugUIPlugin.log(e); - } - } - if (enabledChildren == 0) { - // Uncheck the container node if no children are enabled - item.setGrayed(false); - item.setChecked(false); - } else if (enabledChildren == breakpoints.length) { - // Check the container if all children are enabled - item.setGrayed(false); - item.setChecked(true); - } else { - // If some but not all children are enabled, gray the container node - item.setGrayed(true); - item.setChecked(true); - } - // Update any children (breakpoints and containers) - TreeItem[] items = item.getItems(); - for (int i = 0; i < items.length; i++) { - updateCheckedState(items[i]); - } - } - } + /** + * Update the checked state up the given element and all of its children. + * + * @param item the item to update + */ + public void updateCheckedState(TreeItem item) { + Object element = item.getData(); + if (element instanceof IBreakpoint) { + try { + item.setChecked(((IBreakpoint) element).isEnabled()); + refreshItem(item); + } catch (CoreException e) { + DebugUIPlugin.log(e); + } + } else if (element instanceof IBreakpointContainer) { + IBreakpoint[] breakpoints = ((IBreakpointContainer) element).getBreakpoints(); + int enabledChildren= 0; + for (int i = 0; i < breakpoints.length; i++) { + IBreakpoint breakpoint = breakpoints[i]; + try { + if (breakpoint.isEnabled()) { + enabledChildren++; + } + } catch (CoreException e) { + DebugUIPlugin.log(e); + } + } + if (enabledChildren == 0) { + // Uncheck the container node if no children are enabled + item.setGrayed(false); + item.setChecked(false); + } else if (enabledChildren == breakpoints.length) { + // Check the container if all children are enabled + item.setGrayed(false); + item.setChecked(true); + } else { + // If some but not all children are enabled, gray the container node + item.setGrayed(true); + item.setChecked(true); + } + // Update any children (breakpoints and containers) + TreeItem[] items = item.getItems(); + for (int i = 0; i < items.length; i++) { + updateCheckedState(items[i]); + } + } + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/ElementComparator.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/ElementComparator.java index d7a0fb9ec..e13ac561c 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/ElementComparator.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/ElementComparator.java @@ -48,9 +48,9 @@ public class ElementComparator implements Comparator<Object> { @Override public int compare(Object arg0, Object arg1) { - IBreakpoint bp0 = (IBreakpoint)DebugPlugin.getAdapter(arg0, IBreakpoint.class); - IBreakpoint bp1 = (IBreakpoint)DebugPlugin.getAdapter(arg1, IBreakpoint.class); - if (bp0 != null && bp1 != null) { + IBreakpoint bp0 = (IBreakpoint)DebugPlugin.getAdapter(arg0, IBreakpoint.class); + IBreakpoint bp1 = (IBreakpoint)DebugPlugin.getAdapter(arg1, IBreakpoint.class); + if (bp0 != null && bp1 != null) { return doCompare(bp0, bp1); } else if (arg0 instanceof IBreakpointContainer && arg1 instanceof IBreakpointContainer) { return doCompare((IBreakpointContainer) arg0, (IBreakpointContainer) arg1); @@ -67,18 +67,18 @@ public class ElementComparator implements Comparator<Object> { * @return */ private int doCompare(IBreakpointContainer c1, IBreakpointContainer c2) { - // The "Other" breakpoint category should be listed last. - // (Bug 311457). - if (c1.getCategory() instanceof OtherBreakpointCategory) { - if (c2.getCategory() instanceof OtherBreakpointCategory) { - return 0; - } - return 1; - } else if (c2.getCategory() instanceof OtherBreakpointCategory) { - return -1; - } - - // Rest of categories should be listed alphabetically. + // The "Other" breakpoint category should be listed last. + // (Bug 311457). + if (c1.getCategory() instanceof OtherBreakpointCategory) { + if (c2.getCategory() instanceof OtherBreakpointCategory) { + return 0; + } + return 1; + } else if (c2.getCategory() instanceof OtherBreakpointCategory) { + return -1; + } + + // Rest of categories should be listed alphabetically. if (fContext != null) { String name1 = fContext.getModelPresentation().getText(c1); String name2 = fContext.getModelPresentation().getText(c2); diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/FileBreakpointOrganizer.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/FileBreakpointOrganizer.java index a712c77ed..1d2a95b9f 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/FileBreakpointOrganizer.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/FileBreakpointOrganizer.java @@ -27,16 +27,16 @@ import org.eclipse.debug.ui.AbstractBreakpointOrganizerDelegate; */ public class FileBreakpointOrganizer extends AbstractBreakpointOrganizerDelegate { - @Override + @Override public IAdaptable[] getCategories(IBreakpoint breakpoint) { - IMarker marker = breakpoint.getMarker(); - if (marker != null) { - IResource resource = marker.getResource(); - if (resource.getType() == IResource.FILE) { - return new IAdaptable[]{(IFile)resource}; - } - } - return null; - } + IMarker marker = breakpoint.getMarker(); + if (marker != null) { + IResource resource = marker.getResource(); + if (resource.getType() == IResource.FILE) { + return new IAdaptable[]{(IFile)resource}; + } + } + return null; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/ProjectBreakpointOrganizer.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/ProjectBreakpointOrganizer.java index 406ae6506..0aad8cea4 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/ProjectBreakpointOrganizer.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/ProjectBreakpointOrganizer.java @@ -26,16 +26,16 @@ import org.eclipse.debug.ui.AbstractBreakpointOrganizerDelegate; */ public class ProjectBreakpointOrganizer extends AbstractBreakpointOrganizerDelegate { - @Override + @Override public IAdaptable[] getCategories(IBreakpoint breakpoint) { - IMarker marker = breakpoint.getMarker(); - if (marker != null) { - IProject project = marker.getResource().getProject(); - if (project != null) { - return new IAdaptable[]{project}; - } - } - return null; - } + IMarker marker = breakpoint.getMarker(); + if (marker != null) { + IProject project = marker.getResource().getProject(); + if (project != null) { + return new IAdaptable[]{project}; + } + } + return null; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/WorkingSetBreakpointOrganizer.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/WorkingSetBreakpointOrganizer.java index 3f443c9e8..2dec7323c 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/WorkingSetBreakpointOrganizer.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/WorkingSetBreakpointOrganizer.java @@ -34,63 +34,63 @@ import org.eclipse.ui.PlatformUI; */ public class WorkingSetBreakpointOrganizer extends AbstractBreakpointOrganizerDelegate implements IPropertyChangeListener { - IWorkingSetManager fWorkingSetManager = PlatformUI.getWorkbench().getWorkingSetManager(); + IWorkingSetManager fWorkingSetManager = PlatformUI.getWorkbench().getWorkingSetManager(); - /** - * Constructs a working set breakpoint organizer. Listens for changes in - * working sets and fires property change notification. - */ - public WorkingSetBreakpointOrganizer() { - fWorkingSetManager.addPropertyChangeListener(this); - } + /** + * Constructs a working set breakpoint organizer. Listens for changes in + * working sets and fires property change notification. + */ + public WorkingSetBreakpointOrganizer() { + fWorkingSetManager.addPropertyChangeListener(this); + } - @Override + @Override public IAdaptable[] getCategories(IBreakpoint breakpoint) { List<IAdaptable> result = new ArrayList<>(); List<IResource> parents = new ArrayList<>(); - IResource res = breakpoint.getMarker().getResource(); - parents.add(res); - while (res != null) { - res = res.getParent(); - if (res != null) { - parents.add(res); - } - } - IWorkingSet[] workingSets = fWorkingSetManager.getWorkingSets(); - for (int i = 0; i < workingSets.length; i++) { - if (!IDebugUIConstants.BREAKPOINT_WORKINGSET_ID.equals(workingSets[i].getId())) { - IAdaptable[] elements = workingSets[i].getElements(); - for (int j = 0; j < elements.length; j++) { - IResource resource = elements[j].getAdapter(IResource.class); - if (resource != null) { - if (parents.contains(resource)) { - result.add(new WorkingSetCategory(workingSets[i])); - break; - } - } - } - } - } - return result.toArray(new IAdaptable[result.size()]); - } + IResource res = breakpoint.getMarker().getResource(); + parents.add(res); + while (res != null) { + res = res.getParent(); + if (res != null) { + parents.add(res); + } + } + IWorkingSet[] workingSets = fWorkingSetManager.getWorkingSets(); + for (int i = 0; i < workingSets.length; i++) { + if (!IDebugUIConstants.BREAKPOINT_WORKINGSET_ID.equals(workingSets[i].getId())) { + IAdaptable[] elements = workingSets[i].getElements(); + for (int j = 0; j < elements.length; j++) { + IResource resource = elements[j].getAdapter(IResource.class); + if (resource != null) { + if (parents.contains(resource)) { + result.add(new WorkingSetCategory(workingSets[i])); + break; + } + } + } + } + } + return result.toArray(new IAdaptable[result.size()]); + } - @Override + @Override public void dispose() { - fWorkingSetManager.removePropertyChangeListener(this); - fWorkingSetManager = null; - super.dispose(); - } + fWorkingSetManager.removePropertyChangeListener(this); + fWorkingSetManager = null; + super.dispose(); + } - @Override + @Override public void propertyChange(PropertyChangeEvent event) { - IWorkingSet set = null; - if (event.getNewValue() instanceof IWorkingSet) { - set = (IWorkingSet) event.getNewValue(); - } else if (event.getOldValue() instanceof IWorkingSet) { - set = (IWorkingSet) event.getOldValue(); - } - if (set != null && !IDebugUIConstants.BREAKPOINT_WORKINGSET_ID.equals(set.getId())) { - fireCategoryChanged(new WorkingSetCategory(set)); - } - } + IWorkingSet set = null; + if (event.getNewValue() instanceof IWorkingSet) { + set = (IWorkingSet) event.getNewValue(); + } else if (event.getOldValue() instanceof IWorkingSet) { + set = (IWorkingSet) event.getOldValue(); + } + if (set != null && !IDebugUIConstants.BREAKPOINT_WORKINGSET_ID.equals(set.getId())) { + fireCategoryChanged(new WorkingSetCategory(set)); + } + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/WorkingSetCategory.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/WorkingSetCategory.java index 6fe66273f..415f04862 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/WorkingSetCategory.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/WorkingSetCategory.java @@ -29,99 +29,99 @@ import org.eclipse.ui.model.IWorkbenchAdapter2; */ public class WorkingSetCategory extends PlatformObject implements IWorkbenchAdapter, IWorkbenchAdapter2 { - private IWorkingSet fWorkingSet; - - /** - * Constructs a new workings set category for the given working set. - * - * @param workingSet - */ - public WorkingSetCategory(IWorkingSet workingSet) { - fWorkingSet = workingSet; - } - - @Override + private IWorkingSet fWorkingSet; + + /** + * Constructs a new workings set category for the given working set. + * + * @param workingSet + */ + public WorkingSetCategory(IWorkingSet workingSet) { + fWorkingSet = workingSet; + } + + @Override public Object[] getChildren(Object o) { - return null; - } + return null; + } - @Override + @Override public ImageDescriptor getImageDescriptor(Object object) { - return fWorkingSet.getImageDescriptor(); - } + return fWorkingSet.getImageDescriptor(); + } - @Override + @Override public String getLabel(Object o) { - StringBuilder name = new StringBuilder(fWorkingSet.getName()); - if (isDefault()) { - name.append(DebugUIViewsMessages.WorkingSetCategory_0); - } - return name.toString(); - } - - @Override + StringBuilder name = new StringBuilder(fWorkingSet.getName()); + if (isDefault()) { + name.append(DebugUIViewsMessages.WorkingSetCategory_0); + } + return name.toString(); + } + + @Override public Object getParent(Object o) { - return null; - } - - /** - * Returns the working set for this category. - * - * @return - */ - public IWorkingSet getWorkingSet() { - return fWorkingSet; - } - - @Override + return null; + } + + /** + * Returns the working set for this category. + * + * @return + */ + public IWorkingSet getWorkingSet() { + return fWorkingSet; + } + + @Override public boolean equals(Object obj) { - if (obj instanceof WorkingSetCategory) { - WorkingSetCategory category = (WorkingSetCategory) obj; - return category.getWorkingSet().equals(fWorkingSet); - } - return false; - } - - @Override + if (obj instanceof WorkingSetCategory) { + WorkingSetCategory category = (WorkingSetCategory) obj; + return category.getWorkingSet().equals(fWorkingSet); + } + return false; + } + + @Override public int hashCode() { - return fWorkingSet.hashCode(); - } + return fWorkingSet.hashCode(); + } - @Override + @Override public RGB getForeground(Object element) { - return null; - } + return null; + } - @Override + @Override public RGB getBackground(Object element) { - return null; - } + return null; + } - @Override + @Override public FontData getFont(Object element) { - if (isDefault()) { - FontData[] fontData = JFaceResources.getDefaultFont().getFontData(); - if (fontData != null && fontData.length > 0) { - FontData data = fontData[0]; - data.setStyle(SWT.BOLD); - return data; - } - } - return null; - } - - /** - * Whether this is the default breakpoint working set. - * - * @return whether this is the default breakpoint working set - */ - private boolean isDefault() { - return fWorkingSet.equals(BreakpointSetOrganizer.getDefaultWorkingSet()); - } - - @Override + if (isDefault()) { + FontData[] fontData = JFaceResources.getDefaultFont().getFontData(); + if (fontData != null && fontData.length > 0) { + FontData data = fontData[0]; + data.setStyle(SWT.BOLD); + return data; + } + } + return null; + } + + /** + * Whether this is the default breakpoint working set. + * + * @return whether this is the default breakpoint working set + */ + private boolean isDefault() { + return fWorkingSet.equals(BreakpointSetOrganizer.getDefaultWorkingSet()); + } + + @Override public String toString() { - return fWorkingSet.getName(); - } + return fWorkingSet.getName(); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ConsoleLineNotifier.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ConsoleLineNotifier.java index 9b22fb2fa..e9961aab6 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ConsoleLineNotifier.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ConsoleLineNotifier.java @@ -48,104 +48,104 @@ public class ConsoleLineNotifier implements IPatternMatchListener, IPropertyChan @Override public void connect(TextConsole console) { - if (console instanceof ProcessConsole) { - fConsole = (ProcessConsole)console; + if (console instanceof ProcessConsole) { + fConsole = (ProcessConsole)console; - IConsoleLineTracker[] lineTrackers = DebugUIPlugin.getDefault().getProcessConsoleManager().getLineTrackers(fConsole.getProcess()); - for (int i = 0; i < lineTrackers.length; i++) { - lineTrackers[i].init(fConsole); - addConsoleListener(lineTrackers[i]); - } + IConsoleLineTracker[] lineTrackers = DebugUIPlugin.getDefault().getProcessConsoleManager().getLineTrackers(fConsole.getProcess()); + for (int i = 0; i < lineTrackers.length; i++) { + lineTrackers[i].init(fConsole); + addConsoleListener(lineTrackers[i]); + } - fConsole.addPropertyChangeListener(this); - } + fConsole.addPropertyChangeListener(this); + } } @Override public synchronized void disconnect() { - try { - IDocument document = fConsole.getDocument(); - if (document != null) { - int lastLine = document.getNumberOfLines() - 1; - if (document.getLineDelimiter(lastLine) == null) { - IRegion lineInformation = document.getLineInformation(lastLine); - lineAppended(lineInformation); - } - } - } catch (BadLocationException e) { - } - } - - /** - * Notification the console's streams have been closed - */ - public synchronized void consoleClosed() { - int size = fListeners.size(); - for (int i = 0; i < size; i++) { - IConsoleLineTracker tracker = fListeners.get(i); - if (tracker instanceof IConsoleLineTrackerExtension) { - ((IConsoleLineTrackerExtension) tracker).consoleClosed(); - } - tracker.dispose(); - } - - fConsole = null; - fListeners = null; - } + try { + IDocument document = fConsole.getDocument(); + if (document != null) { + int lastLine = document.getNumberOfLines() - 1; + if (document.getLineDelimiter(lastLine) == null) { + IRegion lineInformation = document.getLineInformation(lastLine); + lineAppended(lineInformation); + } + } + } catch (BadLocationException e) { + } + } /** - * Adds the given listener to the list of listeners notified when a line of - * text is appended to the console. - * - * @param listener the listener to add - */ + * Notification the console's streams have been closed + */ + public synchronized void consoleClosed() { + int size = fListeners.size(); + for (int i = 0; i < size; i++) { + IConsoleLineTracker tracker = fListeners.get(i); + if (tracker instanceof IConsoleLineTrackerExtension) { + ((IConsoleLineTrackerExtension) tracker).consoleClosed(); + } + tracker.dispose(); + } + + fConsole = null; + fListeners = null; + } + + /** + * Adds the given listener to the list of listeners notified when a line of + * text is appended to the console. + * + * @param listener the listener to add + */ public void addConsoleListener(IConsoleLineTracker listener) { - if (!fListeners.contains(listener)) { + if (!fListeners.contains(listener)) { fListeners.add(listener); } } - @Override + @Override public void matchFound(PatternMatchEvent event) { - try { - IDocument document = fConsole.getDocument(); - int lineOfOffset = document.getLineOfOffset(event.getOffset()); - String delimiter = document.getLineDelimiter(lineOfOffset); - int strip = delimiter==null ? 0 : delimiter.length(); - Region region = new Region(event.getOffset(), event.getLength()-strip); - lineAppended(region); - } catch (BadLocationException e) {} - } - - public void lineAppended(IRegion region) { - int size = fListeners.size(); - for (int i=0; i<size; i++) { - IConsoleLineTracker tracker = fListeners.get(i); - tracker.lineAppended(region); - } - } - - @Override + try { + IDocument document = fConsole.getDocument(); + int lineOfOffset = document.getLineOfOffset(event.getOffset()); + String delimiter = document.getLineDelimiter(lineOfOffset); + int strip = delimiter==null ? 0 : delimiter.length(); + Region region = new Region(event.getOffset(), event.getLength()-strip); + lineAppended(region); + } catch (BadLocationException e) {} + } + + public void lineAppended(IRegion region) { + int size = fListeners.size(); + for (int i=0; i<size; i++) { + IConsoleLineTracker tracker = fListeners.get(i); + tracker.lineAppended(region); + } + } + + @Override public void propertyChange(PropertyChangeEvent event) { - if(event.getProperty().equals(IConsoleConstants.P_CONSOLE_OUTPUT_COMPLETE)) { - fConsole.removePropertyChangeListener(this); - consoleClosed(); - } - } + if(event.getProperty().equals(IConsoleConstants.P_CONSOLE_OUTPUT_COMPLETE)) { + fConsole.removePropertyChangeListener(this); + consoleClosed(); + } + } - @Override + @Override public String getPattern() { - return ".*\\r(\\n?)|.*\\n"; //$NON-NLS-1$ - } + return ".*\\r(\\n?)|.*\\n"; //$NON-NLS-1$ + } - @Override + @Override public int getCompilerFlags() { - return 0; - } + return 0; + } - @Override + @Override public String getLineQualifier() { - return "\\n|\\r"; //$NON-NLS-1$ - } + return "\\n|\\r"; //$NON-NLS-1$ + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ConsoleMessages.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ConsoleMessages.java index 0cc5a1441..b88e18a22 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ConsoleMessages.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ConsoleMessages.java @@ -35,9 +35,9 @@ public class ConsoleMessages extends NLS { NLS.initializeMessages(BUNDLE_NAME, ConsoleMessages.class); } - public static String ConsoleRemoveTerminatedAction_0; + public static String ConsoleRemoveTerminatedAction_0; - public static String ConsoleRemoveTerminatedAction_1; + public static String ConsoleRemoveTerminatedAction_1; public static String ShowStandardErrorAction_0; diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ConsoleRemoveAllTerminatedAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ConsoleRemoveAllTerminatedAction.java index 53fb177ef..c0226dcf8 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ConsoleRemoveAllTerminatedAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ConsoleRemoveAllTerminatedAction.java @@ -65,20 +65,20 @@ public class ConsoleRemoveAllTerminatedAction extends Action implements IUpdate, update(); } - @Override + @Override public void launchesRemoved(ILaunch[] launches) { - if (isEnabled()) { - update(); - } - } + if (isEnabled()) { + update(); + } + } - @Override + @Override public void launchesAdded(ILaunch[] launches) { - } + } - @Override + @Override public void launchesChanged(ILaunch[] launches) { - } + } @Override public void launchesTerminated(ILaunch[] launches) { diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ConsoleRemoveLaunchAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ConsoleRemoveLaunchAction.java index 0e6ccb2ad..d8f813ec0 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ConsoleRemoveLaunchAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ConsoleRemoveLaunchAction.java @@ -37,76 +37,76 @@ import org.eclipse.ui.console.IConsoleView; */ public class ConsoleRemoveLaunchAction extends Action implements IViewActionDelegate, IConsoleListener, ILaunchesListener2 { - private ILaunch fLaunch; - - // only used when a view action delegate - private IConsoleView fConsoleView; - - public ConsoleRemoveLaunchAction() { - super(ConsoleMessages.ConsoleRemoveTerminatedAction_0); - setToolTipText(ConsoleMessages.ConsoleRemoveTerminatedAction_1); - PlatformUI.getWorkbench().getHelpSystem().setHelp(this, IDebugHelpContextIds.CONSOLE_REMOVE_LAUNCH); - setImageDescriptor(DebugPluginImages.getImageDescriptor(IDebugUIConstants.IMG_LCL_REMOVE)); - setDisabledImageDescriptor(DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_DLCL_REMOVE)); - setHoverImageDescriptor(DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_REMOVE)); - DebugPlugin.getDefault().getLaunchManager().addLaunchListener(this); - ConsolePlugin.getDefault().getConsoleManager().addConsoleListener(this); - } - - public ConsoleRemoveLaunchAction(ILaunch launch) { - this(); - fLaunch = launch; - update(); - } - - public void dispose() { - DebugPlugin.getDefault().getLaunchManager().removeLaunchListener(this); - ConsolePlugin.getDefault().getConsoleManager().removeConsoleListener(this); - } - - public synchronized void update() { - ILaunch launch = getLaunch(); - if (launch != null) { - setEnabled(launch.isTerminated()); - } else { - setEnabled(false); - } - } - - @Override + private ILaunch fLaunch; + + // only used when a view action delegate + private IConsoleView fConsoleView; + + public ConsoleRemoveLaunchAction() { + super(ConsoleMessages.ConsoleRemoveTerminatedAction_0); + setToolTipText(ConsoleMessages.ConsoleRemoveTerminatedAction_1); + PlatformUI.getWorkbench().getHelpSystem().setHelp(this, IDebugHelpContextIds.CONSOLE_REMOVE_LAUNCH); + setImageDescriptor(DebugPluginImages.getImageDescriptor(IDebugUIConstants.IMG_LCL_REMOVE)); + setDisabledImageDescriptor(DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_DLCL_REMOVE)); + setHoverImageDescriptor(DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_REMOVE)); + DebugPlugin.getDefault().getLaunchManager().addLaunchListener(this); + ConsolePlugin.getDefault().getConsoleManager().addConsoleListener(this); + } + + public ConsoleRemoveLaunchAction(ILaunch launch) { + this(); + fLaunch = launch; + update(); + } + + public void dispose() { + DebugPlugin.getDefault().getLaunchManager().removeLaunchListener(this); + ConsolePlugin.getDefault().getConsoleManager().removeConsoleListener(this); + } + + public synchronized void update() { + ILaunch launch = getLaunch(); + if (launch != null) { + setEnabled(launch.isTerminated()); + } else { + setEnabled(false); + } + } + + @Override public synchronized void run() { - ILaunch launch = getLaunch(); - if (launch != null) { - ILaunchManager launchManager = DebugPlugin.getDefault().getLaunchManager(); - launchManager.removeLaunch(launch); - } - } - - @Override + ILaunch launch = getLaunch(); + if (launch != null) { + ILaunchManager launchManager = DebugPlugin.getDefault().getLaunchManager(); + launchManager.removeLaunch(launch); + } + } + + @Override public void init(IViewPart view) { - if (view instanceof IConsoleView) { + if (view instanceof IConsoleView) { fConsoleView = (IConsoleView) view; } - update(); - } + update(); + } - @Override + @Override public void run(IAction action) { - run(); - } + run(); + } - @Override + @Override public void selectionChanged(IAction action, ISelection selection) { - } + } - @Override + @Override public void consolesAdded(IConsole[] consoles) { - } + } - @Override + @Override public void consolesRemoved(IConsole[] consoles) { - update(); - } + update(); + } @Override public void launchesTerminated(ILaunch[] launches) { diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ConsoleShowPreferencesAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ConsoleShowPreferencesAction.java index 50ded99a1..0c2bf341f 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ConsoleShowPreferencesAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ConsoleShowPreferencesAction.java @@ -27,16 +27,16 @@ import org.eclipse.ui.IViewPart; */ public class ConsoleShowPreferencesAction extends Action implements IViewActionDelegate { - @Override + @Override public void init(IViewPart view) {} - @Override + @Override public void run(IAction action) { - SWTFactory.showPreferencePage("org.eclipse.debug.ui.ConsolePreferencePage"); //$NON-NLS-1$ - } + SWTFactory.showPreferencePage("org.eclipse.debug.ui.ConsolePreferencePage"); //$NON-NLS-1$ + } - @Override + @Override public void selectionChanged(IAction action, ISelection selection) { - // do nothing - } + // do nothing + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ConsoleTerminateAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ConsoleTerminateAction.java index 3cce1e96c..950cd9f15 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ConsoleTerminateAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ConsoleTerminateAction.java @@ -69,8 +69,8 @@ public class ConsoleTerminateAction extends Action implements IUpdate { IProcess process = fConsole.getProcess(); List<ITerminate> targets = collectTargets(process); targets.add(process); - DebugCommandService service = DebugCommandService.getService(fWindow); - service.executeCommand(ITerminateHandler.class, targets.toArray(), null); + DebugCommandService service = DebugCommandService.getService(fWindow); + service.executeCommand(ITerminateHandler.class, targets.toArray(), null); } /** @@ -80,28 +80,28 @@ public class ConsoleTerminateAction extends Action implements IUpdate { * @return associated targets */ private List<ITerminate> collectTargets(IProcess process) { - ILaunchManager launchManager = DebugPlugin.getDefault().getLaunchManager(); - ILaunch[] launches = launchManager.getLaunches(); + ILaunchManager launchManager = DebugPlugin.getDefault().getLaunchManager(); + ILaunch[] launches = launchManager.getLaunches(); List<ITerminate> targets = new ArrayList<>(); - for (int i = 0; i < launches.length; i++) { - ILaunch launch = launches[i]; - IProcess[] processes = launch.getProcesses(); - for (int j = 0; j < processes.length; j++) { - IProcess process2 = processes[j]; - if (process2.equals(process)) { - IDebugTarget[] debugTargets = launch.getDebugTargets(); - for (int k = 0; k < debugTargets.length; k++) { - targets.add(debugTargets[k]); - } - return targets; // all possible targets have been terminated for the launch. - } - } - } - return targets; - } + for (int i = 0; i < launches.length; i++) { + ILaunch launch = launches[i]; + IProcess[] processes = launch.getProcesses(); + for (int j = 0; j < processes.length; j++) { + IProcess process2 = processes[j]; + if (process2.equals(process)) { + IDebugTarget[] debugTargets = launch.getDebugTargets(); + for (int k = 0; k < debugTargets.length; k++) { + targets.add(debugTargets[k]); + } + return targets; // all possible targets have been terminated for the launch. + } + } + } + return targets; + } - public void dispose() { - fConsole = null; + public void dispose() { + fConsole = null; } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ProcessConsole.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ProcessConsole.java index 0514024ee..4c8d38382 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ProcessConsole.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ProcessConsole.java @@ -98,43 +98,43 @@ import com.ibm.icu.text.MessageFormat; */ @SuppressWarnings("deprecation") public class ProcessConsole extends IOConsole implements IConsole, IDebugEventSetListener, IPropertyChangeListener { - private IProcess fProcess = null; + private IProcess fProcess = null; private List<StreamListener> fStreamListeners = new ArrayList<>(); - private IConsoleColorProvider fColorProvider; + private IConsoleColorProvider fColorProvider; private volatile InputStream fInput; - private FileOutputStream fFileOutputStream; + private FileOutputStream fFileOutputStream; - private boolean fAllocateConsole = true; + private boolean fAllocateConsole = true; private String fStdInFile = null; - private boolean fStreamsClosed = false; - - /** - * Proxy to a console document - */ - public ProcessConsole(IProcess process, IConsoleColorProvider colorProvider) { - this(process, colorProvider, null); - } - - /** - * Constructor - * @param process the process to associate with this console - * @param colorProvider the colour provider for this console - * @param encoding the desired encoding for this console - */ - public ProcessConsole(IProcess process, IConsoleColorProvider colorProvider, String encoding) { - super(IInternalDebugCoreConstants.EMPTY_STRING, IDebugUIConstants.ID_PROCESS_CONSOLE_TYPE, null, encoding, true); - fProcess = process; - - ILaunchConfiguration configuration = process.getLaunch().getLaunchConfiguration(); - String file = null; - boolean append = false; - if (configuration != null) { - try { + private boolean fStreamsClosed = false; + + /** + * Proxy to a console document + */ + public ProcessConsole(IProcess process, IConsoleColorProvider colorProvider) { + this(process, colorProvider, null); + } + + /** + * Constructor + * @param process the process to associate with this console + * @param colorProvider the colour provider for this console + * @param encoding the desired encoding for this console + */ + public ProcessConsole(IProcess process, IConsoleColorProvider colorProvider, String encoding) { + super(IInternalDebugCoreConstants.EMPTY_STRING, IDebugUIConstants.ID_PROCESS_CONSOLE_TYPE, null, encoding, true); + fProcess = process; + + ILaunchConfiguration configuration = process.getLaunch().getLaunchConfiguration(); + String file = null; + boolean append = false; + if (configuration != null) { + try { file = configuration.getAttribute(IDebugUIConstants.ATTR_CAPTURE_IN_FILE, (String) null); fStdInFile = configuration.getAttribute(IDebugUIConstants.ATTR_CAPTURE_STDIN_FILE, (String) null); if (file != null || fStdInFile != null) { @@ -147,54 +147,54 @@ public class ProcessConsole extends IOConsole implements IConsole, IDebugEventSe if (fStdInFile != null) { fStdInFile = stringVariableManager.performStringSubstitution(fStdInFile); } - } - } catch (CoreException e) { - } - } - - if (file != null && configuration != null) { - IWorkspace workspace = ResourcesPlugin.getWorkspace(); - IWorkspaceRoot root = workspace.getRoot(); - Path path = new Path(file); - IFile ifile = root.getFileForLocation(path); - String message = null; - - try { - String fileLoc = null; - if (ifile != null) { - if (append && ifile.exists()) { - ifile.appendContents(new ByteArrayInputStream(new byte[0]), true, true, new NullProgressMonitor()); - } else { - if (ifile.exists()) { - ifile.delete(true, new NullProgressMonitor()); - } - ifile.create(new ByteArrayInputStream(new byte[0]), true, new NullProgressMonitor()); - } - } - - File outputFile = new File(file); - fFileOutputStream = new FileOutputStream(outputFile, append); - fileLoc = outputFile.getAbsolutePath(); + } + } catch (CoreException e) { + } + } + + if (file != null && configuration != null) { + IWorkspace workspace = ResourcesPlugin.getWorkspace(); + IWorkspaceRoot root = workspace.getRoot(); + Path path = new Path(file); + IFile ifile = root.getFileForLocation(path); + String message = null; + + try { + String fileLoc = null; + if (ifile != null) { + if (append && ifile.exists()) { + ifile.appendContents(new ByteArrayInputStream(new byte[0]), true, true, new NullProgressMonitor()); + } else { + if (ifile.exists()) { + ifile.delete(true, new NullProgressMonitor()); + } + ifile.create(new ByteArrayInputStream(new byte[0]), true, new NullProgressMonitor()); + } + } + + File outputFile = new File(file); + fFileOutputStream = new FileOutputStream(outputFile, append); + fileLoc = outputFile.getAbsolutePath(); message = MessageFormat.format(ConsoleMessages.ProcessConsole_1, new Object[] { fileLoc }); - addPatternMatchListener(new ConsoleLogFilePatternMatcher(fileLoc)); - } catch (FileNotFoundException e) { + addPatternMatchListener(new ConsoleLogFilePatternMatcher(fileLoc)); + } catch (FileNotFoundException e) { message = MessageFormat.format(ConsoleMessages.ProcessConsole_2, new Object[] { file }); - } catch (CoreException e) { - DebugUIPlugin.log(e); - } - if (message != null) { + } catch (CoreException e) { + DebugUIPlugin.log(e); + } + if (message != null) { try (IOConsoleOutputStream stream = newOutputStream()) { - stream.write(message); - } catch (IOException e) { - DebugUIPlugin.log(e); - } - } - try { - fAllocateConsole = configuration.getAttribute(IDebugUIConstants.ATTR_CAPTURE_IN_CONSOLE, true); - } catch (CoreException e) { - } - } + stream.write(message); + } catch (IOException e) { + DebugUIPlugin.log(e); + } + } + try { + fAllocateConsole = configuration.getAttribute(IDebugUIConstants.ATTR_CAPTURE_IN_CONSOLE, true); + } catch (CoreException e) { + } + } if (fStdInFile != null && configuration != null) { String message = null; try { @@ -214,501 +214,501 @@ public class ProcessConsole extends IOConsole implements IConsole, IDebugEventSe } } } - fColorProvider = colorProvider; + fColorProvider = colorProvider; if (fInput == null) { fInput = getInputStream(); } - colorProvider.connect(fProcess, this); + colorProvider.connect(fProcess, this); - setName(computeName()); + setName(computeName()); - Color color = fColorProvider.getColor(IDebugUIConstants.ID_STANDARD_INPUT_STREAM); + Color color = fColorProvider.getColor(IDebugUIConstants.ID_STANDARD_INPUT_STREAM); if (fInput instanceof IOConsoleInputStream) { ((IOConsoleInputStream)fInput).setColor(color); } - IConsoleLineTracker[] lineTrackers = DebugUIPlugin.getDefault().getProcessConsoleManager().getLineTrackers(process); - if (lineTrackers.length > 0) { - addPatternMatchListener(new ConsoleLineNotifier()); - } - } - - /** - * Computes and returns the image descriptor for this console. - * - * @return an image descriptor for this console or <code>null</code> - */ - protected ImageDescriptor computeImageDescriptor() { - ILaunchConfiguration configuration = getProcess().getLaunch().getLaunchConfiguration(); - if (configuration != null) { - ILaunchConfigurationType type; - try { - type = configuration.getType(); - return DebugPluginImages.getImageDescriptor(type.getIdentifier()); - } catch (CoreException e) { - DebugUIPlugin.log(e); - } - } - return null; - } - - /** - * Computes and returns the current name of this console. - * - * @return a name for this console - */ - protected String computeName() { - String label = null; - IProcess process = getProcess(); - ILaunchConfiguration config = process.getLaunch().getLaunchConfiguration(); - - label = process.getAttribute(IProcess.ATTR_PROCESS_LABEL); - if (label == null) { - if (config == null) { - label = process.getLabel(); - } else { - // check if PRIVATE config - if (DebugUITools.isPrivate(config)) { - label = process.getLabel(); - } else { - String type = null; - try { - type = config.getType().getName(); - } catch (CoreException e) { - } - StringBuilder buffer = new StringBuilder(); - buffer.append(config.getName()); - if (type != null) { - buffer.append(" ["); //$NON-NLS-1$ - buffer.append(type); - buffer.append("] "); //$NON-NLS-1$ - } - buffer.append(process.getLabel()); - label = buffer.toString(); - } - } - } - - if (process.isTerminated()) { + IConsoleLineTracker[] lineTrackers = DebugUIPlugin.getDefault().getProcessConsoleManager().getLineTrackers(process); + if (lineTrackers.length > 0) { + addPatternMatchListener(new ConsoleLineNotifier()); + } + } + + /** + * Computes and returns the image descriptor for this console. + * + * @return an image descriptor for this console or <code>null</code> + */ + protected ImageDescriptor computeImageDescriptor() { + ILaunchConfiguration configuration = getProcess().getLaunch().getLaunchConfiguration(); + if (configuration != null) { + ILaunchConfigurationType type; + try { + type = configuration.getType(); + return DebugPluginImages.getImageDescriptor(type.getIdentifier()); + } catch (CoreException e) { + DebugUIPlugin.log(e); + } + } + return null; + } + + /** + * Computes and returns the current name of this console. + * + * @return a name for this console + */ + protected String computeName() { + String label = null; + IProcess process = getProcess(); + ILaunchConfiguration config = process.getLaunch().getLaunchConfiguration(); + + label = process.getAttribute(IProcess.ATTR_PROCESS_LABEL); + if (label == null) { + if (config == null) { + label = process.getLabel(); + } else { + // check if PRIVATE config + if (DebugUITools.isPrivate(config)) { + label = process.getLabel(); + } else { + String type = null; + try { + type = config.getType().getName(); + } catch (CoreException e) { + } + StringBuilder buffer = new StringBuilder(); + buffer.append(config.getName()); + if (type != null) { + buffer.append(" ["); //$NON-NLS-1$ + buffer.append(type); + buffer.append("] "); //$NON-NLS-1$ + } + buffer.append(process.getLabel()); + label = buffer.toString(); + } + } + } + + if (process.isTerminated()) { return MessageFormat.format(ConsoleMessages.ProcessConsole_0, new Object[] { label }); - } - return label; - } - - /** - * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent) - */ - @Override + } + return label; + } + + /** + * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent) + */ + @Override public void propertyChange(PropertyChangeEvent evt) { - String property = evt.getProperty(); - IPreferenceStore store = DebugUIPlugin.getDefault().getPreferenceStore(); - if (property.equals(IDebugPreferenceConstants.CONSOLE_WRAP) || property.equals(IDebugPreferenceConstants.CONSOLE_WIDTH)) { - boolean fixedWidth = store.getBoolean(IDebugPreferenceConstants.CONSOLE_WRAP); - if (fixedWidth) { - int width = store.getInt(IDebugPreferenceConstants.CONSOLE_WIDTH); - setConsoleWidth(width); - } else { - setConsoleWidth(-1); - } - } else if (property.equals(IDebugPreferenceConstants.CONSOLE_LIMIT_CONSOLE_OUTPUT) || property.equals(IDebugPreferenceConstants.CONSOLE_HIGH_WATER_MARK) || property.equals(IDebugPreferenceConstants.CONSOLE_LOW_WATER_MARK)) { - boolean limitBufferSize = store.getBoolean(IDebugPreferenceConstants.CONSOLE_LIMIT_CONSOLE_OUTPUT); - if (limitBufferSize) { - int highWater = store.getInt(IDebugPreferenceConstants.CONSOLE_HIGH_WATER_MARK); - int lowWater = store.getInt(IDebugPreferenceConstants.CONSOLE_LOW_WATER_MARK); - if (highWater > lowWater) { - setWaterMarks(lowWater, highWater); - } - } else { - setWaterMarks(-1, -1); - } - } else if (property.equals(IDebugPreferenceConstants.CONSOLE_TAB_WIDTH)) { - int tabWidth = store.getInt(IDebugPreferenceConstants.CONSOLE_TAB_WIDTH); - setTabWidth(tabWidth); + String property = evt.getProperty(); + IPreferenceStore store = DebugUIPlugin.getDefault().getPreferenceStore(); + if (property.equals(IDebugPreferenceConstants.CONSOLE_WRAP) || property.equals(IDebugPreferenceConstants.CONSOLE_WIDTH)) { + boolean fixedWidth = store.getBoolean(IDebugPreferenceConstants.CONSOLE_WRAP); + if (fixedWidth) { + int width = store.getInt(IDebugPreferenceConstants.CONSOLE_WIDTH); + setConsoleWidth(width); + } else { + setConsoleWidth(-1); + } + } else if (property.equals(IDebugPreferenceConstants.CONSOLE_LIMIT_CONSOLE_OUTPUT) || property.equals(IDebugPreferenceConstants.CONSOLE_HIGH_WATER_MARK) || property.equals(IDebugPreferenceConstants.CONSOLE_LOW_WATER_MARK)) { + boolean limitBufferSize = store.getBoolean(IDebugPreferenceConstants.CONSOLE_LIMIT_CONSOLE_OUTPUT); + if (limitBufferSize) { + int highWater = store.getInt(IDebugPreferenceConstants.CONSOLE_HIGH_WATER_MARK); + int lowWater = store.getInt(IDebugPreferenceConstants.CONSOLE_LOW_WATER_MARK); + if (highWater > lowWater) { + setWaterMarks(lowWater, highWater); + } + } else { + setWaterMarks(-1, -1); + } + } else if (property.equals(IDebugPreferenceConstants.CONSOLE_TAB_WIDTH)) { + int tabWidth = store.getInt(IDebugPreferenceConstants.CONSOLE_TAB_WIDTH); + setTabWidth(tabWidth); } else if (property.equals(IDebugPreferenceConstants.CONSOLE_OPEN_ON_OUT)) { - boolean activateOnOut = store.getBoolean(IDebugPreferenceConstants.CONSOLE_OPEN_ON_OUT); + boolean activateOnOut = store.getBoolean(IDebugPreferenceConstants.CONSOLE_OPEN_ON_OUT); @SuppressWarnings("resource") IOConsoleOutputStream stream = getStream(IDebugUIConstants.ID_STANDARD_OUTPUT_STREAM); - if (stream != null) { - stream.setActivateOnWrite(activateOnOut); - } - } else if (property.equals(IDebugPreferenceConstants.CONSOLE_OPEN_ON_ERR)) { - boolean activateOnErr = store.getBoolean(IDebugPreferenceConstants.CONSOLE_OPEN_ON_ERR); + if (stream != null) { + stream.setActivateOnWrite(activateOnOut); + } + } else if (property.equals(IDebugPreferenceConstants.CONSOLE_OPEN_ON_ERR)) { + boolean activateOnErr = store.getBoolean(IDebugPreferenceConstants.CONSOLE_OPEN_ON_ERR); @SuppressWarnings("resource") IOConsoleOutputStream stream = getStream(IDebugUIConstants.ID_STANDARD_ERROR_STREAM); - if (stream != null) { - stream.setActivateOnWrite(activateOnErr); - } - } else if (property.equals(IDebugPreferenceConstants.CONSOLE_SYS_OUT_COLOR)) { + if (stream != null) { + stream.setActivateOnWrite(activateOnErr); + } + } else if (property.equals(IDebugPreferenceConstants.CONSOLE_SYS_OUT_COLOR)) { @SuppressWarnings("resource") IOConsoleOutputStream stream = getStream(IDebugUIConstants.ID_STANDARD_OUTPUT_STREAM); - if (stream != null) { - stream.setColor(fColorProvider.getColor(IDebugUIConstants.ID_STANDARD_OUTPUT_STREAM)); - } - } else if (property.equals(IDebugPreferenceConstants.CONSOLE_SYS_ERR_COLOR)) { + if (stream != null) { + stream.setColor(fColorProvider.getColor(IDebugUIConstants.ID_STANDARD_OUTPUT_STREAM)); + } + } else if (property.equals(IDebugPreferenceConstants.CONSOLE_SYS_ERR_COLOR)) { @SuppressWarnings("resource") IOConsoleOutputStream stream = getStream(IDebugUIConstants.ID_STANDARD_ERROR_STREAM); - if (stream != null) { - stream.setColor(fColorProvider.getColor(IDebugUIConstants.ID_STANDARD_ERROR_STREAM)); - } - } else if (property.equals(IDebugPreferenceConstants.CONSOLE_SYS_IN_COLOR)) { + if (stream != null) { + stream.setColor(fColorProvider.getColor(IDebugUIConstants.ID_STANDARD_ERROR_STREAM)); + } + } else if (property.equals(IDebugPreferenceConstants.CONSOLE_SYS_IN_COLOR)) { if (fInput != null && fInput instanceof IOConsoleInputStream) { ((IOConsoleInputStream) fInput).setColor(fColorProvider.getColor(IDebugUIConstants.ID_STANDARD_INPUT_STREAM)); - } - } else if (property.equals(IDebugUIConstants.PREF_CONSOLE_FONT)) { - setFont(JFaceResources.getFont(IDebugUIConstants.PREF_CONSOLE_FONT)); - } else if (property.equals(IDebugPreferenceConstants.CONSOLE_BAKGROUND_COLOR)) { - setBackground(DebugUIPlugin.getPreferenceColor(IDebugPreferenceConstants.CONSOLE_BAKGROUND_COLOR)); - } - } - - @Override + } + } else if (property.equals(IDebugUIConstants.PREF_CONSOLE_FONT)) { + setFont(JFaceResources.getFont(IDebugUIConstants.PREF_CONSOLE_FONT)); + } else if (property.equals(IDebugPreferenceConstants.CONSOLE_BAKGROUND_COLOR)) { + setBackground(DebugUIPlugin.getPreferenceColor(IDebugPreferenceConstants.CONSOLE_BAKGROUND_COLOR)); + } + } + + @Override public IOConsoleOutputStream getStream(String streamIdentifier) { if (streamIdentifier == null) { return null; } for (StreamListener listener : fStreamListeners) { if (streamIdentifier.equals(listener.fStreamId)) { - return listener.fStream; - } - } - return null; - } - - /** - * @see org.eclipse.debug.ui.console.IConsole#getProcess() - */ - @Override + return listener.fStream; + } + } + return null; + } + + /** + * @see org.eclipse.debug.ui.console.IConsole#getProcess() + */ + @Override public IProcess getProcess() { - return fProcess; - } + return fProcess; + } - /** - * @see org.eclipse.ui.console.IOConsole#dispose() - */ - @Override + /** + * @see org.eclipse.ui.console.IOConsole#dispose() + */ + @Override protected void dispose() { - super.dispose(); - fColorProvider.disconnect(); - DebugPlugin.getDefault().removeDebugEventListener(this); - DebugUIPlugin.getDefault().getPreferenceStore().removePropertyChangeListener(this); - JFaceResources.getFontRegistry().removeListener(this); + super.dispose(); + fColorProvider.disconnect(); + DebugPlugin.getDefault().removeDebugEventListener(this); + DebugUIPlugin.getDefault().getPreferenceStore().removePropertyChangeListener(this); + JFaceResources.getFontRegistry().removeListener(this); closeStreams(); disposeStreams(); - } + } - /** + /** * cleanup method to close all of the open stream to this console */ - private synchronized void closeStreams() { - if (fStreamsClosed) { - return; - } + private synchronized void closeStreams() { + if (fStreamsClosed) { + return; + } for (StreamListener listener : fStreamListeners) { - listener.closeStream(); - } - if (fFileOutputStream != null) { - synchronized (fFileOutputStream) { - try { - fFileOutputStream.flush(); - fFileOutputStream.close(); - } catch (IOException e) { - } - } - } - try { - fInput.close(); - } catch (IOException e) { - } - fStreamsClosed = true; - } - - /** + listener.closeStream(); + } + if (fFileOutputStream != null) { + synchronized (fFileOutputStream) { + try { + fFileOutputStream.flush(); + fFileOutputStream.close(); + } catch (IOException e) { + } + } + } + try { + fInput.close(); + } catch (IOException e) { + } + fStreamsClosed = true; + } + + /** * disposes the listeners for each of the stream associated with this * console */ - private synchronized void disposeStreams() { + private synchronized void disposeStreams() { for (StreamListener listener : fStreamListeners) { - listener.dispose(); - } - fFileOutputStream = null; - fInput = null; - } - - /** - * @see org.eclipse.ui.console.AbstractConsole#init() - */ - @Override + listener.dispose(); + } + fFileOutputStream = null; + fInput = null; + } + + /** + * @see org.eclipse.ui.console.AbstractConsole#init() + */ + @Override protected void init() { - super.init(); + super.init(); DebugPlugin.getDefault().addDebugEventListener(this); - if (fProcess.isTerminated()) { - closeStreams(); - resetName(); + if (fProcess.isTerminated()) { + closeStreams(); + resetName(); DebugPlugin.getDefault().removeDebugEventListener(this); - } - IPreferenceStore store = DebugUIPlugin.getDefault().getPreferenceStore(); - store.addPropertyChangeListener(this); - JFaceResources.getFontRegistry().addListener(this); - if (store.getBoolean(IDebugPreferenceConstants.CONSOLE_WRAP)) { - setConsoleWidth(store.getInt(IDebugPreferenceConstants.CONSOLE_WIDTH)); - } - setTabWidth(store.getInt(IDebugPreferenceConstants.CONSOLE_TAB_WIDTH)); - - if (store.getBoolean(IDebugPreferenceConstants.CONSOLE_LIMIT_CONSOLE_OUTPUT)) { - int highWater = store.getInt(IDebugPreferenceConstants.CONSOLE_HIGH_WATER_MARK); - int lowWater = store.getInt(IDebugPreferenceConstants.CONSOLE_LOW_WATER_MARK); - setWaterMarks(lowWater, highWater); - } + } + IPreferenceStore store = DebugUIPlugin.getDefault().getPreferenceStore(); + store.addPropertyChangeListener(this); + JFaceResources.getFontRegistry().addListener(this); + if (store.getBoolean(IDebugPreferenceConstants.CONSOLE_WRAP)) { + setConsoleWidth(store.getInt(IDebugPreferenceConstants.CONSOLE_WIDTH)); + } + setTabWidth(store.getInt(IDebugPreferenceConstants.CONSOLE_TAB_WIDTH)); + + if (store.getBoolean(IDebugPreferenceConstants.CONSOLE_LIMIT_CONSOLE_OUTPUT)) { + int highWater = store.getInt(IDebugPreferenceConstants.CONSOLE_HIGH_WATER_MARK); + int lowWater = store.getInt(IDebugPreferenceConstants.CONSOLE_LOW_WATER_MARK); + setWaterMarks(lowWater, highWater); + } DebugUIPlugin.getStandardDisplay().asyncExec(() -> { setFont(JFaceResources.getFont(IDebugUIConstants.PREF_CONSOLE_FONT)); setBackground(DebugUIPlugin.getPreferenceColor(IDebugPreferenceConstants.CONSOLE_BAKGROUND_COLOR)); }); - } - - /** - * Notify listeners when name changes. - * - * @see org.eclipse.debug.core.IDebugEventSetListener#handleDebugEvents(org.eclipse.debug.core.DebugEvent[]) - */ - @Override + } + + /** + * Notify listeners when name changes. + * + * @see org.eclipse.debug.core.IDebugEventSetListener#handleDebugEvents(org.eclipse.debug.core.DebugEvent[]) + */ + @Override public void handleDebugEvents(DebugEvent[] events) { - for (int i = 0; i < events.length; i++) { - DebugEvent event = events[i]; - if (event.getSource().equals(getProcess())) { - - if (event.getKind() == DebugEvent.TERMINATE) { - closeStreams(); - DebugPlugin.getDefault().removeDebugEventListener(this); - } - - resetName(); - } - } - } - - /** - * resets the name of this console to the original computed name - */ + for (int i = 0; i < events.length; i++) { + DebugEvent event = events[i]; + if (event.getSource().equals(getProcess())) { + + if (event.getKind() == DebugEvent.TERMINATE) { + closeStreams(); + DebugPlugin.getDefault().removeDebugEventListener(this); + } + + resetName(); + } + } + } + + /** + * resets the name of this console to the original computed name + */ private synchronized void resetName() { - final String newName = computeName(); - String name = getName(); - if (!name.equals(newName)) { - UIJob job = new UIJob("Update console title") { //$NON-NLS-1$ + final String newName = computeName(); + String name = getName(); + if (!name.equals(newName)) { + UIJob job = new UIJob("Update console title") { //$NON-NLS-1$ @Override public IStatus runInUIThread(IProgressMonitor monitor) { ProcessConsole.this.setName(newName); - warnOfContentChange(); - return Status.OK_STATUS; + warnOfContentChange(); + return Status.OK_STATUS; } }; job.setSystem(true); job.schedule(); - } - } - - /** - * send notification of a change of content in this console - */ - private void warnOfContentChange() { - ConsolePlugin.getDefault().getConsoleManager().warnOfContentChange(DebugUITools.getConsole(fProcess)); - } - - /** - * @see org.eclipse.debug.ui.console.IConsole#connect(org.eclipse.debug.core.model.IStreamsProxy) - */ - @Override + } + } + + /** + * send notification of a change of content in this console + */ + private void warnOfContentChange() { + ConsolePlugin.getDefault().getConsoleManager().warnOfContentChange(DebugUITools.getConsole(fProcess)); + } + + /** + * @see org.eclipse.debug.ui.console.IConsole#connect(org.eclipse.debug.core.model.IStreamsProxy) + */ + @Override public void connect(IStreamsProxy streamsProxy) { - IPreferenceStore store = DebugUIPlugin.getDefault().getPreferenceStore(); - IStreamMonitor streamMonitor = streamsProxy.getErrorStreamMonitor(); - if (streamMonitor != null) { - connect(streamMonitor, IDebugUIConstants.ID_STANDARD_ERROR_STREAM, - store.getBoolean(IDebugPreferenceConstants.CONSOLE_OPEN_ON_ERR)); - } - streamMonitor = streamsProxy.getOutputStreamMonitor(); - if (streamMonitor != null) { - connect(streamMonitor, IDebugUIConstants.ID_STANDARD_OUTPUT_STREAM, - store.getBoolean(IDebugPreferenceConstants.CONSOLE_OPEN_ON_OUT)); - } - InputReadJob readJob = new InputReadJob(streamsProxy); - readJob.setSystem(true); - readJob.schedule(); - } - - /** - * @see org.eclipse.debug.ui.console.IConsole#connect(org.eclipse.debug.core.model.IStreamMonitor, java.lang.String) - */ - @Override + IPreferenceStore store = DebugUIPlugin.getDefault().getPreferenceStore(); + IStreamMonitor streamMonitor = streamsProxy.getErrorStreamMonitor(); + if (streamMonitor != null) { + connect(streamMonitor, IDebugUIConstants.ID_STANDARD_ERROR_STREAM, + store.getBoolean(IDebugPreferenceConstants.CONSOLE_OPEN_ON_ERR)); + } + streamMonitor = streamsProxy.getOutputStreamMonitor(); + if (streamMonitor != null) { + connect(streamMonitor, IDebugUIConstants.ID_STANDARD_OUTPUT_STREAM, + store.getBoolean(IDebugPreferenceConstants.CONSOLE_OPEN_ON_OUT)); + } + InputReadJob readJob = new InputReadJob(streamsProxy); + readJob.setSystem(true); + readJob.schedule(); + } + + /** + * @see org.eclipse.debug.ui.console.IConsole#connect(org.eclipse.debug.core.model.IStreamMonitor, java.lang.String) + */ + @Override public void connect(IStreamMonitor streamMonitor, String streamIdentifier) { - connect(streamMonitor, streamIdentifier, false); - } - - /** - * Connects the given stream monitor to a new output stream with the given identifier. - * - * @param streamMonitor stream monitor - * @param streamIdentifier stream identifier - * @param activateOnWrite whether the stream should displayed when written to - */ + connect(streamMonitor, streamIdentifier, false); + } + + /** + * Connects the given stream monitor to a new output stream with the given identifier. + * + * @param streamMonitor stream monitor + * @param streamIdentifier stream identifier + * @param activateOnWrite whether the stream should displayed when written to + */ @SuppressWarnings("resource") private void connect(IStreamMonitor streamMonitor, String streamIdentifier, boolean activateOnWrite) { - IOConsoleOutputStream stream = null; - if (fAllocateConsole) { + IOConsoleOutputStream stream = null; + if (fAllocateConsole) { stream = newOutputStream(); Color color = fColorProvider.getColor(streamIdentifier); stream.setColor(color); stream.setActivateOnWrite(activateOnWrite); - } - synchronized (streamMonitor) { - StreamListener listener = new StreamListener(streamIdentifier, streamMonitor, stream); - fStreamListeners.add(listener); - } - } - - /** - * @see org.eclipse.debug.ui.console.IConsole#addLink(org.eclipse.debug.ui.console.IConsoleHyperlink, int, int) - */ - @Override + } + synchronized (streamMonitor) { + StreamListener listener = new StreamListener(streamIdentifier, streamMonitor, stream); + fStreamListeners.add(listener); + } + } + + /** + * @see org.eclipse.debug.ui.console.IConsole#addLink(org.eclipse.debug.ui.console.IConsoleHyperlink, int, int) + */ + @Override public void addLink(IConsoleHyperlink link, int offset, int length) { - try { - addHyperlink(link, offset, length); - } catch (BadLocationException e) { - DebugUIPlugin.log(e); - } - } - - /** - * @see org.eclipse.debug.ui.console.IConsole#addLink(org.eclipse.ui.console.IHyperlink, int, int) - */ - @Override + try { + addHyperlink(link, offset, length); + } catch (BadLocationException e) { + DebugUIPlugin.log(e); + } + } + + /** + * @see org.eclipse.debug.ui.console.IConsole#addLink(org.eclipse.ui.console.IHyperlink, int, int) + */ + @Override public void addLink(IHyperlink link, int offset, int length) { - try { - addHyperlink(link, offset, length); - } catch (BadLocationException e) { - DebugUIPlugin.log(e); - } - } - - /** - * @see org.eclipse.debug.ui.console.IConsole#getRegion(org.eclipse.debug.ui.console.IConsoleHyperlink) - */ - @Override + try { + addHyperlink(link, offset, length); + } catch (BadLocationException e) { + DebugUIPlugin.log(e); + } + } + + /** + * @see org.eclipse.debug.ui.console.IConsole#getRegion(org.eclipse.debug.ui.console.IConsoleHyperlink) + */ + @Override public IRegion getRegion(IConsoleHyperlink link) { - return super.getRegion(link); - } + return super.getRegion(link); + } - /** - * This class listens to a specified IO stream - */ - private class StreamListener implements IStreamListener { + /** + * This class listens to a specified IO stream + */ + private class StreamListener implements IStreamListener { - private IOConsoleOutputStream fStream; + private IOConsoleOutputStream fStream; - private IStreamMonitor fStreamMonitor; + private IStreamMonitor fStreamMonitor; - private String fStreamId; + private String fStreamId; - private boolean fFlushed = false; + private boolean fFlushed = false; - private boolean fListenerRemoved = false; + private boolean fListenerRemoved = false; - public StreamListener(String streamIdentifier, IStreamMonitor monitor, IOConsoleOutputStream stream) { - this.fStreamId = streamIdentifier; - this.fStreamMonitor = monitor; - this.fStream = stream; - fStreamMonitor.addListener(this); - //fix to bug 121454. Ensure that output to fast processes is processed. - streamAppended(null, monitor); - } + public StreamListener(String streamIdentifier, IStreamMonitor monitor, IOConsoleOutputStream stream) { + this.fStreamId = streamIdentifier; + this.fStreamMonitor = monitor; + this.fStream = stream; + fStreamMonitor.addListener(this); + //fix to bug 121454. Ensure that output to fast processes is processed. + streamAppended(null, monitor); + } - @Override + @Override public void streamAppended(String text, IStreamMonitor monitor) { - String encoding = getEncoding(); - if (fFlushed) { - try { - if (fStream != null) { - if (encoding == null) { + String encoding = getEncoding(); + if (fFlushed) { + try { + if (fStream != null) { + if (encoding == null) { fStream.write(text); } else { fStream.write(text.getBytes(encoding)); } - } - if (fFileOutputStream != null) { - synchronized (fFileOutputStream) { - if (encoding == null) { + } + if (fFileOutputStream != null) { + synchronized (fFileOutputStream) { + if (encoding == null) { fFileOutputStream.write(text.getBytes()); } else { fFileOutputStream.write(text.getBytes(encoding)); } - } - } - } catch (IOException e) { - DebugUIPlugin.log(e); - } - } else { - String contents = null; - synchronized (fStreamMonitor) { - fFlushed = true; - contents = fStreamMonitor.getContents(); - if (fStreamMonitor instanceof IFlushableStreamMonitor) { - IFlushableStreamMonitor m = (IFlushableStreamMonitor) fStreamMonitor; - m.flushContents(); - m.setBuffered(false); - } - } - try { - if (contents != null && contents.length() > 0) { - if (fStream != null) { - fStream.write(contents); - } - if (fFileOutputStream != null) { - synchronized (fFileOutputStream) { - fFileOutputStream.write(contents.getBytes()); - } - } - } - } catch (IOException e) { - DebugUIPlugin.log(e); - } - } - } - - public void closeStream() { - if (fStreamMonitor == null) { - return; - } - synchronized (fStreamMonitor) { - fStreamMonitor.removeListener(this); - if (!fFlushed) { - String contents = fStreamMonitor.getContents(); - streamAppended(contents, fStreamMonitor); - } - fListenerRemoved = true; - try { - if (fStream != null) { - fStream.close(); - } - } catch (IOException e) { - } - } - } - - public void dispose() { - if (!fListenerRemoved) { - closeStream(); - } - fStream = null; - fStreamMonitor = null; - fStreamId = null; - } - } - - private class InputReadJob extends Job { - - private IStreamsProxy streamsProxy; + } + } + } catch (IOException e) { + DebugUIPlugin.log(e); + } + } else { + String contents = null; + synchronized (fStreamMonitor) { + fFlushed = true; + contents = fStreamMonitor.getContents(); + if (fStreamMonitor instanceof IFlushableStreamMonitor) { + IFlushableStreamMonitor m = (IFlushableStreamMonitor) fStreamMonitor; + m.flushContents(); + m.setBuffered(false); + } + } + try { + if (contents != null && contents.length() > 0) { + if (fStream != null) { + fStream.write(contents); + } + if (fFileOutputStream != null) { + synchronized (fFileOutputStream) { + fFileOutputStream.write(contents.getBytes()); + } + } + } + } catch (IOException e) { + DebugUIPlugin.log(e); + } + } + } + + public void closeStream() { + if (fStreamMonitor == null) { + return; + } + synchronized (fStreamMonitor) { + fStreamMonitor.removeListener(this); + if (!fFlushed) { + String contents = fStreamMonitor.getContents(); + streamAppended(contents, fStreamMonitor); + } + fListenerRemoved = true; + try { + if (fStream != null) { + fStream.close(); + } + } catch (IOException e) { + } + } + } + + public void dispose() { + if (!fListenerRemoved) { + closeStream(); + } + fStream = null; + fStreamMonitor = null; + fStreamId = null; + } + } + + private class InputReadJob extends Job { + + private IStreamsProxy streamsProxy; /** * The {@link InputStream} this job is currently reading from or maybe blocking @@ -716,10 +716,10 @@ public class ProcessConsole extends IOConsole implements IConsole, IDebugEventSe */ private InputStream readingStream; - InputReadJob(IStreamsProxy streamsProxy) { - super("Process Console Input Job"); //$NON-NLS-1$ - this.streamsProxy = streamsProxy; - } + InputReadJob(IStreamsProxy streamsProxy) { + super("Process Console Input Job"); //$NON-NLS-1$ + this.streamsProxy = streamsProxy; + } @Override protected void canceling() { @@ -736,7 +736,7 @@ public class ProcessConsole extends IOConsole implements IConsole, IDebugEventSe } } - @Override + @Override public boolean belongsTo(Object family) { return ProcessConsole.class == family; } @@ -750,7 +750,7 @@ public class ProcessConsole extends IOConsole implements IConsole, IDebugEventSe readingStream = fInput; InputStreamReader streamReader = (encoding == null ? new InputStreamReader(readingStream) : new InputStreamReader(readingStream, encoding)); - try { + try { char[] cbuf = new char[1024]; int charRead = 0; while (charRead >= 0 && !monitor.isCanceled()) { @@ -766,160 +766,160 @@ public class ProcessConsole extends IOConsole implements IConsole, IDebugEventSe charRead = streamReader.read(cbuf); if (charRead > 0) { String s = new String(cbuf, 0, charRead); - streamsProxy.write(s); - } - } - } catch (IOException e) { - DebugUIPlugin.log(e); - } + streamsProxy.write(s); + } + } + } catch (IOException e) { + DebugUIPlugin.log(e); + } readingStream = null; return monitor.isCanceled() ? Status.CANCEL_STATUS : Status.OK_STATUS; - } - } + } + } - @Override + @Override public ImageDescriptor getImageDescriptor() { - if (super.getImageDescriptor() == null) { - setImageDescriptor(computeImageDescriptor()); - } - return super.getImageDescriptor(); - } - - private class ConsoleLogFilePatternMatcher implements IPatternMatchListener { - String fFilePath; - - public ConsoleLogFilePatternMatcher(String filePath) { - fFilePath = escape(filePath); - } - - private String escape(String path) { - StringBuilder buffer = new StringBuilder(path); - int index = buffer.indexOf("\\"); //$NON-NLS-1$ - while (index >= 0) { - buffer.insert(index, '\\'); - index = buffer.indexOf("\\", index+2); //$NON-NLS-1$ - } - return buffer.toString(); - } - - @Override + if (super.getImageDescriptor() == null) { + setImageDescriptor(computeImageDescriptor()); + } + return super.getImageDescriptor(); + } + + private class ConsoleLogFilePatternMatcher implements IPatternMatchListener { + String fFilePath; + + public ConsoleLogFilePatternMatcher(String filePath) { + fFilePath = escape(filePath); + } + + private String escape(String path) { + StringBuilder buffer = new StringBuilder(path); + int index = buffer.indexOf("\\"); //$NON-NLS-1$ + while (index >= 0) { + buffer.insert(index, '\\'); + index = buffer.indexOf("\\", index+2); //$NON-NLS-1$ + } + return buffer.toString(); + } + + @Override public String getPattern() { - return fFilePath; - } + return fFilePath; + } - @Override + @Override public void matchFound(PatternMatchEvent event) { - try { - addHyperlink(new ConsoleLogFileHyperlink(fFilePath), event.getOffset(), event.getLength()); - removePatternMatchListener(this); - } catch (BadLocationException e) { - } - } - - @Override + try { + addHyperlink(new ConsoleLogFileHyperlink(fFilePath), event.getOffset(), event.getLength()); + removePatternMatchListener(this); + } catch (BadLocationException e) { + } + } + + @Override public int getCompilerFlags() { - return 0; - } + return 0; + } - @Override + @Override public String getLineQualifier() { - return null; - } + return null; + } - @Override + @Override public void connect(TextConsole console) { - } + } - @Override + @Override public void disconnect() { - } - } + } + } - private class ConsoleLogFileHyperlink implements IHyperlink { - String fFilePath; - ConsoleLogFileHyperlink(String filePath) { - fFilePath = filePath; - } + private class ConsoleLogFileHyperlink implements IHyperlink { + String fFilePath; + ConsoleLogFileHyperlink(String filePath) { + fFilePath = filePath; + } - @Override + @Override public void linkActivated() { - IEditorInput input; - Path path = new Path(fFilePath); - IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); - IFile ifile = root.getFileForLocation(path); - if (ifile == null) { // The file is not in the workspace - File file = new File(fFilePath); - LocalFileStorage lfs = new LocalFileStorage(file); - input = new StorageEditorInput(lfs, file); - - } else { - input = new FileEditorInput(ifile); - } - - IWorkbenchPage activePage = DebugUIPlugin.getActiveWorkbenchWindow().getActivePage(); - try { - activePage.openEditor(input, EditorsUI.DEFAULT_TEXT_EDITOR_ID, true); - } catch (PartInitException e) { - } - } - @Override + IEditorInput input; + Path path = new Path(fFilePath); + IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); + IFile ifile = root.getFileForLocation(path); + if (ifile == null) { // The file is not in the workspace + File file = new File(fFilePath); + LocalFileStorage lfs = new LocalFileStorage(file); + input = new StorageEditorInput(lfs, file); + + } else { + input = new FileEditorInput(ifile); + } + + IWorkbenchPage activePage = DebugUIPlugin.getActiveWorkbenchWindow().getActivePage(); + try { + activePage.openEditor(input, EditorsUI.DEFAULT_TEXT_EDITOR_ID, true); + } catch (PartInitException e) { + } + } + @Override public void linkEntered() { - } - @Override + } + @Override public void linkExited() { - } - } + } + } - class StorageEditorInput extends PlatformObject implements IStorageEditorInput { - private File fFile; - private IStorage fStorage; + class StorageEditorInput extends PlatformObject implements IStorageEditorInput { + private File fFile; + private IStorage fStorage; - public StorageEditorInput(IStorage storage, File file) { - fStorage = storage; - fFile = file; - } + public StorageEditorInput(IStorage storage, File file) { + fStorage = storage; + fFile = file; + } - @Override + @Override public IStorage getStorage() { - return fStorage; - } + return fStorage; + } - @Override + @Override public ImageDescriptor getImageDescriptor() { - return null; - } + return null; + } - @Override + @Override public String getName() { - return getStorage().getName(); - } + return getStorage().getName(); + } - @Override + @Override public IPersistableElement getPersistable() { - return null; - } + return null; + } - @Override + @Override public String getToolTipText() { - return getStorage().getFullPath().toOSString(); - } + return getStorage().getFullPath().toOSString(); + } - @Override + @Override public boolean equals(Object object) { - return object instanceof StorageEditorInput && - getStorage().equals(((StorageEditorInput)object).getStorage()); - } + return object instanceof StorageEditorInput && + getStorage().equals(((StorageEditorInput)object).getStorage()); + } - @Override + @Override public int hashCode() { - return getStorage().hashCode(); - } + return getStorage().hashCode(); + } - @Override + @Override public boolean exists() { - return fFile.exists(); - } - } + return fFile.exists(); + } + } @Override public String getHelpContextId() { diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ProcessConsoleManager.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ProcessConsoleManager.java index 45d3ac769..3fb4622e7 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ProcessConsoleManager.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ProcessConsoleManager.java @@ -106,98 +106,98 @@ public class ProcessConsoleManager implements ILaunchListener { } /** - * Console document content provider extensions, keyed by extension id - */ + * Console document content provider extensions, keyed by extension id + */ private Map<String, IConfigurationElement> fColorProviders; - /** - * The default color provider. Used if no color provider is contributed - * for the given process type. - */ - private IConsoleColorProvider fDefaultColorProvider; + /** + * The default color provider. Used if no color provider is contributed + * for the given process type. + */ + private IConsoleColorProvider fDefaultColorProvider; - /** - * Console line trackers; keyed by process type to list of trackers (1:N) - */ + /** + * Console line trackers; keyed by process type to list of trackers (1:N) + */ private Map<String, List<IConfigurationElement>> fLineTrackers; - /** - * Map of processes for a launch to compute removed processes - */ + /** + * Map of processes for a launch to compute removed processes + */ private Map<ILaunch, IProcess[]> fProcesses; /** * Lock for fLineTrackers */ private Object fLineTrackersLock = new Object(); - /** - * @see ILaunchListener#launchRemoved(ILaunch) - */ - @Override + /** + * @see ILaunchListener#launchRemoved(ILaunch) + */ + @Override public void launchRemoved(ILaunch launch) { - removeLaunch(launch); - } - - protected void removeLaunch(ILaunch launch) { - IProcess[] processes= launch.getProcesses(); - for (int i= 0; i < processes.length; i++) { - IProcess iProcess = processes[i]; - removeProcess(iProcess); - } - if (fProcesses != null) { - fProcesses.remove(launch); - } - } - - /** - * Removes the console and document associated with the given process. - * - * @param iProcess process to clean up - */ - private void removeProcess(IProcess iProcess) { - IConsole console = getConsole(iProcess); - - if (console != null) { - IConsoleManager manager = ConsolePlugin.getDefault().getConsoleManager(); - manager.removeConsoles(new IConsole[]{console}); - } - } - - /** - * Returns the console for the given process, or <code>null</code> if none. - * - * @param process - * @return the console for the given process, or <code>null</code> if none - */ - public IConsole getConsole(IProcess process) { - IConsoleManager manager = ConsolePlugin.getDefault().getConsoleManager(); - IConsole[] consoles = manager.getConsoles(); - for (int i = 0; i < consoles.length; i++) { - IConsole console = consoles[i]; - if (console instanceof ProcessConsole) { - ProcessConsole pc = (ProcessConsole)console; - if (pc.getProcess().equals(process)) { - return pc; - } - } - } - return null; - } - - /** - * @see ILaunchListener#launchAdded(ILaunch) - */ - @Override + removeLaunch(launch); + } + + protected void removeLaunch(ILaunch launch) { + IProcess[] processes= launch.getProcesses(); + for (int i= 0; i < processes.length; i++) { + IProcess iProcess = processes[i]; + removeProcess(iProcess); + } + if (fProcesses != null) { + fProcesses.remove(launch); + } + } + + /** + * Removes the console and document associated with the given process. + * + * @param iProcess process to clean up + */ + private void removeProcess(IProcess iProcess) { + IConsole console = getConsole(iProcess); + + if (console != null) { + IConsoleManager manager = ConsolePlugin.getDefault().getConsoleManager(); + manager.removeConsoles(new IConsole[]{console}); + } + } + + /** + * Returns the console for the given process, or <code>null</code> if none. + * + * @param process + * @return the console for the given process, or <code>null</code> if none + */ + public IConsole getConsole(IProcess process) { + IConsoleManager manager = ConsolePlugin.getDefault().getConsoleManager(); + IConsole[] consoles = manager.getConsoles(); + for (int i = 0; i < consoles.length; i++) { + IConsole console = consoles[i]; + if (console instanceof ProcessConsole) { + ProcessConsole pc = (ProcessConsole)console; + if (pc.getProcess().equals(process)) { + return pc; + } + } + } + return null; + } + + /** + * @see ILaunchListener#launchAdded(ILaunch) + */ + @Override public void launchAdded(ILaunch launch) { - launchChanged(launch); - } + launchChanged(launch); + } - /** - * @see ILaunchListener#launchChanged(ILaunch) - */ - @Override + /** + * @see ILaunchListener#launchChanged(ILaunch) + */ + @Override public void launchChanged(final ILaunch launch) { - IProcess[] processes= launch.getProcesses(); + IProcess[] processes= launch.getProcesses(); for (IProcess process : processes) { if (process.getStreamsProxy() == null) { continue; @@ -206,108 +206,108 @@ public class ProcessConsoleManager implements ILaunchListener { // create a new console in a separated thread, see bug 355011. Job job = new ConsoleCreation(launch, process); job.schedule(); - } - } + } + } List<IProcess> removed = getRemovedProcesses(launch); - if (removed != null) { + if (removed != null) { for (IProcess p : removed) { - removeProcess(p); - } - } - } - - /** - * Returns the document for the process, or <code>null</code> - * if none. - */ - public IDocument getConsoleDocument(IProcess process) { - ProcessConsole console = (ProcessConsole) getConsole(process); - return (console != null ? console.getDocument() : null); - } - - /** - * Called by the debug ui plug-in on startup. - * The console document manager starts listening for - * launches to be registered and initializes if any launches - * already exist. - */ - public void startup() { - ILaunchManager launchManager= DebugPlugin.getDefault().getLaunchManager(); - launchManager.addLaunchListener(this); - - //set up the docs for launches already registered - ILaunch[] launches= launchManager.getLaunches(); - for (int i = 0; i < launches.length; i++) { - launchAdded(launches[i]); - } - } - - /** - * Called by the debug ui plug-in on shutdown. - * The console document manager de-registers as a - * launch listener and kills all existing console documents. - */ - public void shutdown() { + removeProcess(p); + } + } + } + + /** + * Returns the document for the process, or <code>null</code> + * if none. + */ + public IDocument getConsoleDocument(IProcess process) { + ProcessConsole console = (ProcessConsole) getConsole(process); + return (console != null ? console.getDocument() : null); + } + + /** + * Called by the debug ui plug-in on startup. + * The console document manager starts listening for + * launches to be registered and initializes if any launches + * already exist. + */ + public void startup() { + ILaunchManager launchManager= DebugPlugin.getDefault().getLaunchManager(); + launchManager.addLaunchListener(this); + + //set up the docs for launches already registered + ILaunch[] launches= launchManager.getLaunches(); + for (int i = 0; i < launches.length; i++) { + launchAdded(launches[i]); + } + } + + /** + * Called by the debug ui plug-in on shutdown. + * The console document manager de-registers as a + * launch listener and kills all existing console documents. + */ + public void shutdown() { Job.getJobManager().cancel(ProcessConsoleManager.class); - ILaunchManager launchManager= DebugPlugin.getDefault().getLaunchManager(); - ILaunch[] launches = launchManager.getLaunches(); - for (int i = 0; i < launches.length; i++) { - ILaunch launch = launches[i]; - removeLaunch(launch); - } - launchManager.removeLaunchListener(this); - if (fProcesses != null) { - fProcesses.clear(); - } - } - - /** - * Returns a new console document color provider extension for the given - * process type, or <code>null</code> if none. - * - * @param type corresponds to <code>IProcess.ATTR_PROCESS_TYPE</code> - * @return IConsoleColorProvider - */ - public IConsoleColorProvider getColorProvider(String type) { - if (fColorProviders == null) { + ILaunchManager launchManager= DebugPlugin.getDefault().getLaunchManager(); + ILaunch[] launches = launchManager.getLaunches(); + for (int i = 0; i < launches.length; i++) { + ILaunch launch = launches[i]; + removeLaunch(launch); + } + launchManager.removeLaunchListener(this); + if (fProcesses != null) { + fProcesses.clear(); + } + } + + /** + * Returns a new console document color provider extension for the given + * process type, or <code>null</code> if none. + * + * @param type corresponds to <code>IProcess.ATTR_PROCESS_TYPE</code> + * @return IConsoleColorProvider + */ + public IConsoleColorProvider getColorProvider(String type) { + if (fColorProviders == null) { fColorProviders = new HashMap<>(); - IExtensionPoint extensionPoint= Platform.getExtensionRegistry().getExtensionPoint(DebugUIPlugin.getUniqueIdentifier(), IDebugUIConstants.EXTENSION_POINT_CONSOLE_COLOR_PROVIDERS); - IConfigurationElement[] elements = extensionPoint.getConfigurationElements(); - for (int i = 0; i < elements.length; i++) { - IConfigurationElement extension = elements[i]; - fColorProviders.put(extension.getAttribute("processType"), extension); //$NON-NLS-1$ - } - } - IConfigurationElement extension = fColorProviders.get(type); - if (extension != null) { - try { - Object colorProvider = extension.createExecutableExtension("class"); //$NON-NLS-1$ - if (colorProvider instanceof IConsoleColorProvider) { - return (IConsoleColorProvider)colorProvider; - } - DebugUIPlugin.logErrorMessage(MessageFormat.format( - "Extension {0} must specify an instanceof IConsoleColorProvider for class attribute.", //$NON-NLS-1$ + IExtensionPoint extensionPoint= Platform.getExtensionRegistry().getExtensionPoint(DebugUIPlugin.getUniqueIdentifier(), IDebugUIConstants.EXTENSION_POINT_CONSOLE_COLOR_PROVIDERS); + IConfigurationElement[] elements = extensionPoint.getConfigurationElements(); + for (int i = 0; i < elements.length; i++) { + IConfigurationElement extension = elements[i]; + fColorProviders.put(extension.getAttribute("processType"), extension); //$NON-NLS-1$ + } + } + IConfigurationElement extension = fColorProviders.get(type); + if (extension != null) { + try { + Object colorProvider = extension.createExecutableExtension("class"); //$NON-NLS-1$ + if (colorProvider instanceof IConsoleColorProvider) { + return (IConsoleColorProvider)colorProvider; + } + DebugUIPlugin.logErrorMessage(MessageFormat.format( + "Extension {0} must specify an instanceof IConsoleColorProvider for class attribute.", //$NON-NLS-1$ new Object[] { extension.getDeclaringExtension().getUniqueIdentifier() })); - } catch (CoreException e) { - DebugUIPlugin.log(e); - } - } - //no color provider found of specified type, return default color provider. - if (fDefaultColorProvider == null) { - fDefaultColorProvider = new ConsoleColorProvider(); - } - return fDefaultColorProvider; - } - - /** - * Returns the Line Trackers for a given process type. - * @param process The process for which line trackers are required. - * @return An array of line trackers which match the given process type. - */ - public IConsoleLineTracker[] getLineTrackers(IProcess process) { - String type = process.getAttribute(IProcess.ATTR_PROCESS_TYPE); - - if (fLineTrackers == null) { + } catch (CoreException e) { + DebugUIPlugin.log(e); + } + } + //no color provider found of specified type, return default color provider. + if (fDefaultColorProvider == null) { + fDefaultColorProvider = new ConsoleColorProvider(); + } + return fDefaultColorProvider; + } + + /** + * Returns the Line Trackers for a given process type. + * @param process The process for which line trackers are required. + * @return An array of line trackers which match the given process type. + */ + public IConsoleLineTracker[] getLineTrackers(IProcess process) { + String type = process.getAttribute(IProcess.ATTR_PROCESS_TYPE); + + if (fLineTrackers == null) { synchronized (fLineTrackersLock) { // can't use fLineTrackers as lock as it is null here fLineTrackers = new HashMap<>(); IExtensionPoint extensionPoint = Platform.getExtensionRegistry().getExtensionPoint(DebugUIPlugin.getUniqueIdentifier(), IDebugUIConstants.EXTENSION_POINT_CONSOLE_LINE_TRACKERS); @@ -323,71 +323,71 @@ public class ProcessConsoleManager implements ILaunchListener { list.add(extension); } } - } + } ArrayList<IConsoleLineTracker> trackers = new ArrayList<>(); - if (type != null) { + if (type != null) { List<IConfigurationElement> lineTrackerExtensions; synchronized (fLineTrackers) {// need to synchronize as the update to list might be still happening lineTrackerExtensions = fLineTrackers.get(type); } - if(lineTrackerExtensions != null) { + if(lineTrackerExtensions != null) { for (IConfigurationElement element : lineTrackerExtensions) { try { trackers.add((IConsoleLineTracker) element.createExecutableExtension("class")); //$NON-NLS-1$ - } catch (CoreException e) { - DebugUIPlugin.log(e); - } + } catch (CoreException e) { + DebugUIPlugin.log(e); + } } - } - } - return trackers.toArray(new IConsoleLineTracker[0]); - } - - /** - * Returns the processes that have been removed from the given - * launch, or <code>null</code> if none. - * - * @param launch launch that has changed - * @return removed processes or <code>null</code> - */ + } + } + return trackers.toArray(new IConsoleLineTracker[0]); + } + + /** + * Returns the processes that have been removed from the given + * launch, or <code>null</code> if none. + * + * @param launch launch that has changed + * @return removed processes or <code>null</code> + */ private List<IProcess> getRemovedProcesses(ILaunch launch) { List<IProcess> removed = null; - if (fProcesses == null) { + if (fProcesses == null) { fProcesses = new HashMap<>(); - } - IProcess[] old = fProcesses.get(launch); - IProcess[] curr = launch.getProcesses(); - if (old != null) { - for (int i = 0; i < old.length; i++) { - IProcess process = old[i]; - if (!contains(curr, process)) { - if (removed == null) { + } + IProcess[] old = fProcesses.get(launch); + IProcess[] curr = launch.getProcesses(); + if (old != null) { + for (int i = 0; i < old.length; i++) { + IProcess process = old[i]; + if (!contains(curr, process)) { + if (removed == null) { removed = new ArrayList<>(); - } - removed.add(process); - } - } - } - // update cache with current processes - fProcesses.put(launch, curr); - return removed; - } - - /** - * Returns whether the given object is contained in the list. - * - * @param list list to search - * @param object object to search for - * @return whether the given object is contained in the list - */ - private boolean contains(Object[] list, Object object) { - for (int i = 0; i < list.length; i++) { - Object object2 = list[i]; - if (object2.equals(object)) { - return true; - } - } - return false; - } + } + removed.add(process); + } + } + } + // update cache with current processes + fProcesses.put(launch, curr); + return removed; + } + + /** + * Returns whether the given object is contained in the list. + * + * @param list list to search + * @param object object to search for + * @return whether the given object is contained in the list + */ + private boolean contains(Object[] list, Object object) { + for (int i = 0; i < list.length; i++) { + Object object2 = list[i]; + if (object2.equals(object)) { + return true; + } + } + return false; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ProcessConsolePageParticipant.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ProcessConsolePageParticipant.java index 431b52743..d524b0381 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ProcessConsolePageParticipant.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ProcessConsolePageParticipant.java @@ -59,79 +59,79 @@ public class ProcessConsolePageParticipant implements IConsolePageParticipant, I // actions private ConsoleTerminateAction fTerminate; - private ConsoleRemoveLaunchAction fRemoveTerminated; + private ConsoleRemoveLaunchAction fRemoveTerminated; private ConsoleRemoveAllTerminatedAction fRemoveAllTerminated; private ShowWhenContentChangesAction fStdOut; private ShowWhenContentChangesAction fStdErr; - private ProcessConsole fConsole; + private ProcessConsole fConsole; - private IPageBookViewPage fPage; + private IPageBookViewPage fPage; - private IConsoleView fView; + private IConsoleView fView; - private EOFHandler fEOFHandler; - private String fContextId = "org.eclipse.debug.ui.console"; //$NON-NLS-1$; - private IContextActivation fActivatedContext; - private IHandlerActivation fActivatedHandler; + private EOFHandler fEOFHandler; + private String fContextId = "org.eclipse.debug.ui.console"; //$NON-NLS-1$; + private IContextActivation fActivatedContext; + private IHandlerActivation fActivatedHandler; /** * Handler to send EOF */ private class EOFHandler extends AbstractHandler { - @Override + @Override public Object execute(ExecutionEvent event) throws org.eclipse.core.commands.ExecutionException { - IStreamsProxy proxy = getProcess().getStreamsProxy(); - if (proxy instanceof IStreamsProxy2) { - IStreamsProxy2 proxy2 = (IStreamsProxy2) proxy; - try { - proxy2.closeInputStream(); - } catch (IOException e1) { - } - } - return null; - } + IStreamsProxy proxy = getProcess().getStreamsProxy(); + if (proxy instanceof IStreamsProxy2) { + IStreamsProxy2 proxy2 = (IStreamsProxy2) proxy; + try { + proxy2.closeInputStream(); + } catch (IOException e1) { + } + } + return null; + } } - @Override + @Override public void init(IPageBookViewPage page, IConsole console) { - fPage = page; - fConsole = (ProcessConsole) console; + fPage = page; + fConsole = (ProcessConsole) console; - fRemoveTerminated = new ConsoleRemoveLaunchAction(fConsole.getProcess().getLaunch()); - fRemoveAllTerminated = new ConsoleRemoveAllTerminatedAction(); - fTerminate = new ConsoleTerminateAction(page.getSite().getWorkbenchWindow(), fConsole); - fStdOut = new ShowStandardOutAction(); - fStdErr = new ShowStandardErrorAction(); + fRemoveTerminated = new ConsoleRemoveLaunchAction(fConsole.getProcess().getLaunch()); + fRemoveAllTerminated = new ConsoleRemoveAllTerminatedAction(); + fTerminate = new ConsoleTerminateAction(page.getSite().getWorkbenchWindow(), fConsole); + fStdOut = new ShowStandardOutAction(); + fStdErr = new ShowStandardErrorAction(); - fView = (IConsoleView) fPage.getSite().getPage().findView(IConsoleConstants.ID_CONSOLE_VIEW); + fView = (IConsoleView) fPage.getSite().getPage().findView(IConsoleConstants.ID_CONSOLE_VIEW); - DebugPlugin.getDefault().addDebugEventListener(this); - DebugUITools.getDebugContextManager().getContextService(fPage.getSite().getWorkbenchWindow()).addDebugContextListener(this); + DebugPlugin.getDefault().addDebugEventListener(this); + DebugUITools.getDebugContextManager().getContextService(fPage.getSite().getWorkbenchWindow()).addDebugContextListener(this); - // contribute to toolbar - IActionBars actionBars = fPage.getSite().getActionBars(); - configureToolBar(actionBars.getToolBarManager()); + // contribute to toolbar + IActionBars actionBars = fPage.getSite().getActionBars(); + configureToolBar(actionBars.getToolBarManager()); - // create handler and submissions for EOF - fEOFHandler = new EOFHandler(); - } + // create handler and submissions for EOF + fEOFHandler = new EOFHandler(); + } - @Override + @Override public void dispose() { - DebugUITools.getDebugContextManager().getContextService(fPage.getSite().getWorkbenchWindow()).removeDebugContextListener(this); + DebugUITools.getDebugContextManager().getContextService(fPage.getSite().getWorkbenchWindow()).removeDebugContextListener(this); DebugPlugin.getDefault().removeDebugEventListener(this); - if (fRemoveTerminated != null) { - fRemoveTerminated.dispose(); - fRemoveTerminated = null; - } + if (fRemoveTerminated != null) { + fRemoveTerminated.dispose(); + fRemoveTerminated = null; + } if (fRemoveAllTerminated != null) { fRemoveAllTerminated.dispose(); fRemoveAllTerminated = null; } if (fTerminate != null) { - fTerminate.dispose(); - fTerminate = null; + fTerminate.dispose(); + fTerminate = null; } if (fStdOut != null) { fStdOut.dispose(); @@ -142,116 +142,116 @@ public class ProcessConsolePageParticipant implements IConsolePageParticipant, I fStdErr = null; } fConsole = null; - } + } - /** - * Contribute actions to the toolbar - */ - protected void configureToolBar(IToolBarManager mgr) { + /** + * Contribute actions to the toolbar + */ + protected void configureToolBar(IToolBarManager mgr) { mgr.appendToGroup(IConsoleConstants.LAUNCH_GROUP, fTerminate); - mgr.appendToGroup(IConsoleConstants.LAUNCH_GROUP, fRemoveTerminated); + mgr.appendToGroup(IConsoleConstants.LAUNCH_GROUP, fRemoveTerminated); mgr.appendToGroup(IConsoleConstants.LAUNCH_GROUP, fRemoveAllTerminated); mgr.appendToGroup(IConsoleConstants.OUTPUT_GROUP, fStdOut); mgr.appendToGroup(IConsoleConstants.OUTPUT_GROUP, fStdErr); - } + } @SuppressWarnings("unchecked") @Override public <T> T getAdapter(Class<T> required) { - if (IShowInSource.class.equals(required)) { + if (IShowInSource.class.equals(required)) { return (T) this; - } - if (IShowInTargetList.class.equals(required)) { + } + if (IShowInTargetList.class.equals(required)) { return (T) this; - } - //CONTEXTLAUNCHING - if(ILaunchConfiguration.class.equals(required)) { - ILaunch launch = getProcess().getLaunch(); - if(launch != null) { + } + //CONTEXTLAUNCHING + if(ILaunchConfiguration.class.equals(required)) { + ILaunch launch = getProcess().getLaunch(); + if(launch != null) { return (T) launch.getLaunchConfiguration(); - } - return null; - } - return null; - } + } + return null; + } + return null; + } - @Override + @Override public ShowInContext getShowInContext() { - IProcess process = getProcess(); - if (process == null) { - return null; - } - IDebugTarget target = process.getAdapter(IDebugTarget.class); - ISelection selection = null; - if (target == null) { - selection = new TreeSelection(new TreePath(new Object[]{ - DebugPlugin.getDefault().getLaunchManager(), - process.getLaunch(), - process})); - } else { - selection = new TreeSelection(new TreePath(new Object[]{ - DebugPlugin.getDefault().getLaunchManager(), - target.getLaunch(), - target})); - } - return new ShowInContext(null, selection); - } + IProcess process = getProcess(); + if (process == null) { + return null; + } + IDebugTarget target = process.getAdapter(IDebugTarget.class); + ISelection selection = null; + if (target == null) { + selection = new TreeSelection(new TreePath(new Object[]{ + DebugPlugin.getDefault().getLaunchManager(), + process.getLaunch(), + process})); + } else { + selection = new TreeSelection(new TreePath(new Object[]{ + DebugPlugin.getDefault().getLaunchManager(), + target.getLaunch(), + target})); + } + return new ShowInContext(null, selection); + } - @Override + @Override public String[] getShowInTargetIds() { - return new String[] {IDebugUIConstants.ID_DEBUG_VIEW}; - } + return new String[] {IDebugUIConstants.ID_DEBUG_VIEW}; + } - @Override + @Override public void handleDebugEvents(DebugEvent[] events) { - for (int i = 0; i < events.length; i++) { - DebugEvent event = events[i]; - if (event.getSource().equals(getProcess())) { + for (int i = 0; i < events.length; i++) { + DebugEvent event = events[i]; + if (event.getSource().equals(getProcess())) { Runnable r = () -> { if (fTerminate != null) { fTerminate.update(); } }; - DebugUIPlugin.getStandardDisplay().asyncExec(r); - } - } - } + DebugUIPlugin.getStandardDisplay().asyncExec(r); + } + } + } - protected IProcess getProcess() { - return fConsole != null ? fConsole.getProcess() : null; - } + protected IProcess getProcess() { + return fConsole != null ? fConsole.getProcess() : null; + } - @Override + @Override public void activated() { - // add EOF submissions - IPageSite site = fPage.getSite(); - if(fActivatedContext == null && fActivatedHandler == null) { - IHandlerService handlerService = site.getService(IHandlerService.class); - IContextService contextService = site.getService(IContextService.class); - fActivatedContext = contextService.activateContext(fContextId); - fActivatedHandler = handlerService.activateHandler("org.eclipse.debug.ui.commands.eof", fEOFHandler); //$NON-NLS-1$ - } - } + // add EOF submissions + IPageSite site = fPage.getSite(); + if(fActivatedContext == null && fActivatedHandler == null) { + IHandlerService handlerService = site.getService(IHandlerService.class); + IContextService contextService = site.getService(IContextService.class); + fActivatedContext = contextService.activateContext(fContextId); + fActivatedHandler = handlerService.activateHandler("org.eclipse.debug.ui.commands.eof", fEOFHandler); //$NON-NLS-1$ + } + } - @Override + @Override public void deactivated() { - // remove EOF submissions - IPageSite site = fPage.getSite(); - IHandlerService handlerService = site.getService(IHandlerService.class); - IContextService contextService = site.getService(IContextService.class); - handlerService.deactivateHandler(fActivatedHandler); + // remove EOF submissions + IPageSite site = fPage.getSite(); + IHandlerService handlerService = site.getService(IHandlerService.class); + IContextService contextService = site.getService(IContextService.class); + handlerService.deactivateHandler(fActivatedHandler); contextService.deactivateContext(fActivatedContext); fActivatedContext = null; fActivatedHandler = null; - } + } @Override public void debugContextChanged(DebugContextEvent event) { if ((event.getFlags() & DebugContextEvent.ACTIVATED) > 0) { if (fView != null && getProcess().equals(DebugUITools.getCurrentProcess())) { - fView.display(fConsole); - } + fView.display(fConsole); + } } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ProcessTypePropertyTester.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ProcessTypePropertyTester.java index 0ff7735c2..9f42f18cd 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ProcessTypePropertyTester.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ProcessTypePropertyTester.java @@ -25,17 +25,17 @@ import org.eclipse.ui.console.TextConsole; */ public class ProcessTypePropertyTester extends PropertyTester { - @Override + @Override public boolean test(Object receiver, String property, Object[] args, Object expectedValue) { - if (receiver instanceof TextConsole) { - TextConsole console = (TextConsole) receiver; - IProcess process = (IProcess) console.getAttribute(IDebugUIConstants.ATTR_CONSOLE_PROCESS); - if (process != null) { - String type = process.getAttribute(IProcess.ATTR_PROCESS_TYPE); - return (type != null && type.equals(expectedValue)); - }//end if - }//end if - return false; - }//end test + if (receiver instanceof TextConsole) { + TextConsole console = (TextConsole) receiver; + IProcess process = (IProcess) console.getAttribute(IDebugUIConstants.ATTR_CONSOLE_PROCESS); + if (process != null) { + String type = process.getAttribute(IProcess.ATTR_PROCESS_TYPE); + return (type != null && type.equals(expectedValue)); + }//end if + }//end if + return false; + }//end test }//end class diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ShowWhenContentChangesAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ShowWhenContentChangesAction.java index 786539db4..da5891b07 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ShowWhenContentChangesAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ShowWhenContentChangesAction.java @@ -40,10 +40,10 @@ public abstract class ShowWhenContentChangesAction extends Action implements IPr @Override public void propertyChange(PropertyChangeEvent event) { - String property = event.getProperty(); - if (property.equals(getKey())) { - update(); - } + String property = event.getProperty(); + if (property.equals(getKey())) { + update(); + } } protected abstract String getKey(); @@ -51,12 +51,12 @@ public abstract class ShowWhenContentChangesAction extends Action implements IPr private void update() { IPreferenceStore store = getPreferenceStore(); if (store.getBoolean(getKey())) { - // on - setChecked(true); - } else { - // off - setChecked(false); - } + // on + setChecked(true); + } else { + // off + setChecked(false); + } } private IPreferenceStore getPreferenceStore() { diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/expression/ExpressionDropAdapter.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/expression/ExpressionDropAdapter.java index 4412f3ec8..870b46430 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/expression/ExpressionDropAdapter.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/expression/ExpressionDropAdapter.java @@ -58,135 +58,135 @@ import org.eclipse.ui.IWorkbenchPartSite; */ public class ExpressionDropAdapter extends ViewerDropAdapter { - private IWorkbenchPartSite fSite; - private TransferData fCurrentTransferType = null; + private IWorkbenchPartSite fSite; + private TransferData fCurrentTransferType = null; private boolean fInsertBefore; private int fDropType; private static final int DROP_TYPE_DEFAULT = 0; private static final int DROP_TYPE_VARIABLE = 1; private static final int DROP_TYPE_EXPRESSION = 2; - private static final int DROP_TYPE_WATCH_ADAPTABLE_ELEMENT = 3; - - /** - * Constructor takes the viewer this drop adapter applies to. - * @param viewer the viewer to add drop to - */ - protected ExpressionDropAdapter(IWorkbenchPartSite site, TreeModelViewer viewer) { - super(viewer); - fSite = site; - setFeedbackEnabled(true); - setSelectionFeedbackEnabled(false); - setScrollExpandEnabled(false); - } - - @Override + private static final int DROP_TYPE_WATCH_ADAPTABLE_ELEMENT = 3; + + /** + * Constructor takes the viewer this drop adapter applies to. + * @param viewer the viewer to add drop to + */ + protected ExpressionDropAdapter(IWorkbenchPartSite site, TreeModelViewer viewer) { + super(viewer); + fSite = site; + setFeedbackEnabled(true); + setSelectionFeedbackEnabled(false); + setScrollExpandEnabled(false); + } + + @Override public void dragEnter(DropTargetEvent event) { - fDropType = DROP_TYPE_DEFAULT; - event.detail = DND.DROP_NONE; - - for (int i = 0; i < event.dataTypes.length; i++) { - if (LocalSelectionTransfer.getTransfer().isSupportedType(event.dataTypes[i])) { - if (isExpressionDrop()){ - event.currentDataType = event.dataTypes[i]; - event.detail = DND.DROP_MOVE; - fDropType = DROP_TYPE_EXPRESSION; - break; - } else if (isVariableDrop()){ - event.currentDataType = event.dataTypes[i]; - event.detail = DND.DROP_COPY; - fDropType = DROP_TYPE_VARIABLE; - break; - } else if (isWatchAdaptableElementDrop()){ - event.currentDataType = event.dataTypes[i]; - event.detail = DND.DROP_COPY; - fDropType = DROP_TYPE_WATCH_ADAPTABLE_ELEMENT; - break; - } - } else if (TextTransfer.getInstance().isSupportedType(event.dataTypes[i])) { - event.currentDataType = event.dataTypes[i]; - event.detail = DND.DROP_COPY; - fDropType = DROP_TYPE_DEFAULT; - break; - } - } - - super.dragEnter(event); - } - - /** - * @return whether the selection transfer contains only IExpressions - */ - private boolean isExpressionDrop() { - IStructuredSelection selection = (IStructuredSelection) LocalSelectionTransfer.getTransfer().getSelection(); + fDropType = DROP_TYPE_DEFAULT; + event.detail = DND.DROP_NONE; + + for (int i = 0; i < event.dataTypes.length; i++) { + if (LocalSelectionTransfer.getTransfer().isSupportedType(event.dataTypes[i])) { + if (isExpressionDrop()){ + event.currentDataType = event.dataTypes[i]; + event.detail = DND.DROP_MOVE; + fDropType = DROP_TYPE_EXPRESSION; + break; + } else if (isVariableDrop()){ + event.currentDataType = event.dataTypes[i]; + event.detail = DND.DROP_COPY; + fDropType = DROP_TYPE_VARIABLE; + break; + } else if (isWatchAdaptableElementDrop()){ + event.currentDataType = event.dataTypes[i]; + event.detail = DND.DROP_COPY; + fDropType = DROP_TYPE_WATCH_ADAPTABLE_ELEMENT; + break; + } + } else if (TextTransfer.getInstance().isSupportedType(event.dataTypes[i])) { + event.currentDataType = event.dataTypes[i]; + event.detail = DND.DROP_COPY; + fDropType = DROP_TYPE_DEFAULT; + break; + } + } + + super.dragEnter(event); + } + + /** + * @return whether the selection transfer contains only IExpressions + */ + private boolean isExpressionDrop() { + IStructuredSelection selection = (IStructuredSelection) LocalSelectionTransfer.getTransfer().getSelection(); Iterator<?> iterator = selection.iterator(); - while (iterator.hasNext()) { - Object element = iterator.next(); - if (getTargetExpression(element) == null){ - return false; - } - } - return true; + while (iterator.hasNext()) { + Object element = iterator.next(); + if (getTargetExpression(element) == null){ + return false; + } + } + return true; } /** * @return whether the selection transfer contains only IVariables */ private boolean isVariableDrop() { - IStructuredSelection selection = (IStructuredSelection) LocalSelectionTransfer.getTransfer().getSelection(); + IStructuredSelection selection = (IStructuredSelection) LocalSelectionTransfer.getTransfer().getSelection(); Iterator<?> iterator = selection.iterator(); - while (iterator.hasNext()) { - Object element = iterator.next(); - if (!(element instanceof IVariable)){ - return false; - } - } - return true; + while (iterator.hasNext()) { + Object element = iterator.next(); + if (!(element instanceof IVariable)){ + return false; + } + } + return true; } - /** - * @return whether the selection transfer contains only objects adaptable - * to IWatchExpressionFactoryAdapter2 - */ - private boolean isWatchAdaptableElementDrop() { - IStructuredSelection selection = (IStructuredSelection) LocalSelectionTransfer.getTransfer().getSelection(); + /** + * @return whether the selection transfer contains only objects adaptable + * to IWatchExpressionFactoryAdapter2 + */ + private boolean isWatchAdaptableElementDrop() { + IStructuredSelection selection = (IStructuredSelection) LocalSelectionTransfer.getTransfer().getSelection(); Iterator<?> iterator = selection.iterator(); - while (iterator.hasNext()) { - Object element = iterator.next(); - if (!(element instanceof IAdaptable && - ((IAdaptable)element).getAdapter(IWatchExpressionFactoryAdapter2.class) != null)) - { - return false; - } - } - return true; - } + while (iterator.hasNext()) { + Object element = iterator.next(); + if (!(element instanceof IAdaptable && + ((IAdaptable)element).getAdapter(IWatchExpressionFactoryAdapter2.class) != null)) + { + return false; + } + } + return true; + } @Override public void dragOver(DropTargetEvent event) { - super.dragOver(event); - // Allow scrolling (but not expansion) - event.feedback |= DND.FEEDBACK_SCROLL; - } + super.dragOver(event); + // Allow scrolling (but not expansion) + event.feedback |= DND.FEEDBACK_SCROLL; + } - @Override + @Override public boolean validateDrop(Object target, int operation, TransferData transferType) { - if (LocalSelectionTransfer.getTransfer().isSupportedType(transferType)) { - switch (fDropType) { - case DROP_TYPE_EXPRESSION: - return validateExpressionDrop(target); - case DROP_TYPE_VARIABLE: - return validateVariableDrop(target); - case DROP_TYPE_WATCH_ADAPTABLE_ELEMENT: - return validateWatchAdaptableDrop(target); - default: - break; - } - } else if (TextTransfer.getInstance().isSupportedType(transferType)) { - return validateTextDrop(target); - } - return false; - } + if (LocalSelectionTransfer.getTransfer().isSupportedType(transferType)) { + switch (fDropType) { + case DROP_TYPE_EXPRESSION: + return validateExpressionDrop(target); + case DROP_TYPE_VARIABLE: + return validateVariableDrop(target); + case DROP_TYPE_WATCH_ADAPTABLE_ELEMENT: + return validateWatchAdaptableDrop(target); + default: + break; + } + } else if (TextTransfer.getInstance().isSupportedType(transferType)) { + return validateTextDrop(target); + } + return false; + } /** * Validates if an IExpression drop is valid by checking if the target @@ -196,16 +196,16 @@ public class ExpressionDropAdapter extends ViewerDropAdapter { */ private boolean validateExpressionDrop(Object target){ return target instanceof IExpression || - ((target instanceof IAdaptable) && ((IAdaptable)target).getAdapter(IExpression.class) != null); + ((target instanceof IAdaptable) && ((IAdaptable)target).getAdapter(IExpression.class) != null); } private IExpression getTargetExpression(Object target) { - if (target instanceof IExpression) { - return (IExpression)target; - } else if (target instanceof IAdaptable) { - return ((IAdaptable)target).getAdapter(IExpression.class); - } - return null; + if (target instanceof IExpression) { + return (IExpression)target; + } else if (target instanceof IAdaptable) { + return ((IAdaptable)target).getAdapter(IExpression.class); + } + return null; } /** @@ -217,62 +217,62 @@ public class ExpressionDropAdapter extends ViewerDropAdapter { private boolean validateVariableDrop(Object target) { // Target must be null or an IExpression, you cannot add a new watch expression inside another if (target != null && getTargetExpression(target) == null) { - return false; + return false; } - IStructuredSelection selection = (IStructuredSelection) LocalSelectionTransfer.getTransfer().getSelection(); - int enabled = 0; - int size = -1; - if (selection != null) { - size = selection.size(); - IExpressionManager manager = DebugPlugin.getDefault().getExpressionManager(); + IStructuredSelection selection = (IStructuredSelection) LocalSelectionTransfer.getTransfer().getSelection(); + int enabled = 0; + int size = -1; + if (selection != null) { + size = selection.size(); + IExpressionManager manager = DebugPlugin.getDefault().getExpressionManager(); Iterator<?> iterator = selection.iterator(); - while (iterator.hasNext()) { - Object element = iterator.next(); - if (element instanceof IVariable){ - IVariable variable = (IVariable) element; - if (variable instanceof IndexedVariablePartition) { - break; - } else if (manager.hasWatchExpressionDelegate(variable.getModelIdentifier()) && isFactoryEnabled(variable)) { - enabled++; - } else { - break; - } - } - } - } - return enabled == size; + while (iterator.hasNext()) { + Object element = iterator.next(); + if (element instanceof IVariable){ + IVariable variable = (IVariable) element; + if (variable instanceof IndexedVariablePartition) { + break; + } else if (manager.hasWatchExpressionDelegate(variable.getModelIdentifier()) && isFactoryEnabled(variable)) { + enabled++; + } else { + break; + } + } + } + } + return enabled == size; } /** - * Validates if the drop is valid by validating the local selection transfer - * to ensure that a watch expression can be created for each contained element. - * @param target target of the drop - * @return whether the drop is valid - */ - private boolean validateWatchAdaptableDrop(Object target) { - // Target must be null or an IExpression, you cannot add a new watch expression inside another - if (target != null && getTargetExpression(target) == null) { - return false; - } - - IStructuredSelection selection = (IStructuredSelection) LocalSelectionTransfer.getTransfer().getSelection(); - int enabled = 0; - int size = -1; - if (selection != null) { - size = selection.size(); + * Validates if the drop is valid by validating the local selection transfer + * to ensure that a watch expression can be created for each contained element. + * @param target target of the drop + * @return whether the drop is valid + */ + private boolean validateWatchAdaptableDrop(Object target) { + // Target must be null or an IExpression, you cannot add a new watch expression inside another + if (target != null && getTargetExpression(target) == null) { + return false; + } + + IStructuredSelection selection = (IStructuredSelection) LocalSelectionTransfer.getTransfer().getSelection(); + int enabled = 0; + int size = -1; + if (selection != null) { + size = selection.size(); Iterator<?> iterator = selection.iterator(); - while (iterator.hasNext()) { - Object element = iterator.next(); - if (isFactory2Enabled(element)) { - enabled++; - } else { - break; - } - } - } - return enabled == size; - } + while (iterator.hasNext()) { + Object element = iterator.next(); + if (isFactory2Enabled(element)) { + enabled++; + } else { + break; + } + } + } + return enabled == size; + } /** * Validates if the drop is valid by validating the drop location. @@ -282,7 +282,7 @@ public class ExpressionDropAdapter extends ViewerDropAdapter { * @return whether the drop is valid */ private boolean validateTextDrop(Object target){ - return target == null || getTargetExpression(target) != null; + return target == null || getTargetExpression(target) != null; } /** @@ -292,219 +292,219 @@ public class ExpressionDropAdapter extends ViewerDropAdapter { * @return whether the factory is enabled */ private boolean isFactoryEnabled(IVariable variable) { - IWatchExpressionFactoryAdapter factory = getFactory(variable); - if (factory instanceof IWatchExpressionFactoryAdapterExtension) { - IWatchExpressionFactoryAdapterExtension ext = (IWatchExpressionFactoryAdapterExtension) factory; - return ext.canCreateWatchExpression(variable); - } - return true; + IWatchExpressionFactoryAdapter factory = getFactory(variable); + if (factory instanceof IWatchExpressionFactoryAdapterExtension) { + IWatchExpressionFactoryAdapterExtension ext = (IWatchExpressionFactoryAdapterExtension) factory; + return ext.canCreateWatchExpression(variable); + } + return true; } - /** - * Returns whether the factory adapter for the given element is currently enabled. - * - * @param element the element to ask for the adapter - * @return whether the factory is enabled - */ - private boolean isFactory2Enabled(Object element) { - IWatchExpressionFactoryAdapter2 factory = getFactory2(element); - if (factory != null) { - return factory.canCreateWatchExpression(element); - } - return false; - } + /** + * Returns whether the factory adapter for the given element is currently enabled. + * + * @param element the element to ask for the adapter + * @return whether the factory is enabled + */ + private boolean isFactory2Enabled(Object element) { + IWatchExpressionFactoryAdapter2 factory = getFactory2(element); + if (factory != null) { + return factory.canCreateWatchExpression(element); + } + return false; + } @Override public void drop(DropTargetEvent event) { - fCurrentTransferType = event.currentDataType; - // Unless insert after is explicitly set, insert before - fInsertBefore = getCurrentLocation() != LOCATION_AFTER; - super.drop(event); + fCurrentTransferType = event.currentDataType; + // Unless insert after is explicitly set, insert before + fInsertBefore = getCurrentLocation() != LOCATION_AFTER; + super.drop(event); } - @Override + @Override public boolean performDrop(Object data) { - if (LocalSelectionTransfer.getTransfer().isSupportedType(fCurrentTransferType)) { - IStructuredSelection selection = (IStructuredSelection) LocalSelectionTransfer.getTransfer().getSelection(); - if (fDropType == DROP_TYPE_EXPRESSION){ - return performExpressionDrop(selection); - } else if (fDropType == DROP_TYPE_VARIABLE || fDropType == DROP_TYPE_WATCH_ADAPTABLE_ELEMENT){ - return performVariableOrWatchAdaptableDrop(selection); - } - } else if (TextTransfer.getInstance().isSupportedType(fCurrentTransferType)) { - if (data != null) { - return performTextDrop((String)data); - } - } - return false; - } - - /** - * Performs the drop when the selection is a collection of IExpressions. - * Moves the given expressions from their original locations to the - * location of the current target. - * @param selection the dragged selection - * @return whether the drop could be completed - */ - private boolean performExpressionDrop(IStructuredSelection selection) { - IExpression targetExpression = getTargetExpression(getCurrentTarget()); + if (LocalSelectionTransfer.getTransfer().isSupportedType(fCurrentTransferType)) { + IStructuredSelection selection = (IStructuredSelection) LocalSelectionTransfer.getTransfer().getSelection(); + if (fDropType == DROP_TYPE_EXPRESSION){ + return performExpressionDrop(selection); + } else if (fDropType == DROP_TYPE_VARIABLE || fDropType == DROP_TYPE_WATCH_ADAPTABLE_ELEMENT){ + return performVariableOrWatchAdaptableDrop(selection); + } + } else if (TextTransfer.getInstance().isSupportedType(fCurrentTransferType)) { + if (data != null) { + return performTextDrop((String)data); + } + } + return false; + } + + /** + * Performs the drop when the selection is a collection of IExpressions. + * Moves the given expressions from their original locations to the + * location of the current target. + * @param selection the dragged selection + * @return whether the drop could be completed + */ + private boolean performExpressionDrop(IStructuredSelection selection) { + IExpression targetExpression = getTargetExpression(getCurrentTarget()); if (targetExpression != null){ IExpression[] expressions = new IExpression[selection.size()]; Object[] selectionElements = selection.toArray(); for (int i = 0; i < selectionElements.length; i++) { - expressions[i] = getTargetExpression(selectionElements[i]); + expressions[i] = getTargetExpression(selectionElements[i]); } - IExpressionManager manager = DebugPlugin.getDefault().getExpressionManager(); - if (manager instanceof ExpressionManager){ - ((ExpressionManager)manager).moveExpressions(expressions, targetExpression, fInsertBefore); - } - return true; + IExpressionManager manager = DebugPlugin.getDefault().getExpressionManager(); + if (manager instanceof ExpressionManager){ + ((ExpressionManager)manager).moveExpressions(expressions, targetExpression, fInsertBefore); + } + return true; } return false; } /** - * If the dragged data is a structured selection, get any IVariables in it - * and create expressions for each of them. Insert the created expressions - * at the currently selected target or add them to the end of the collection - * if no target is selected. - * - * @param selection Structured selection containing IVariables - * @return whether the drop was successful - */ - private boolean performVariableOrWatchAdaptableDrop(IStructuredSelection selection) { + * If the dragged data is a structured selection, get any IVariables in it + * and create expressions for each of them. Insert the created expressions + * at the currently selected target or add them to the end of the collection + * if no target is selected. + * + * @param selection Structured selection containing IVariables + * @return whether the drop was successful + */ + private boolean performVariableOrWatchAdaptableDrop(IStructuredSelection selection) { List<IExpression> expressions = new ArrayList<>(selection.size()); for (Iterator<?> itr = selection.iterator(); itr.hasNext();) { - Object element = itr.next(); - String expressionText = createExpressionString(element); - if (expressionText != null){ - IExpression expression = createExpression(expressionText); - if (expression != null){ - expressions.add(expression); - } else { - DebugUIPlugin.log(new Status(IStatus.ERROR,DebugUIPlugin.getUniqueIdentifier(),"Drop failed. Watch expression could not be created for the text " + expressionText)); //$NON-NLS-1$ - return false; - } - } else { - return false; - } - } - if (expressions.size() == selection.size()){ - IExpressionManager manager = DebugPlugin.getDefault().getExpressionManager(); - if (manager instanceof ExpressionManager){ - IExpression targetExpression = getTargetExpression(getCurrentTarget()); - if (targetExpression != null){ - ((ExpressionManager)manager).insertExpressions(expressions.toArray(new IExpression[expressions.size()]), targetExpression, fInsertBefore); - } else { - ((ExpressionManager)manager).addExpressions(expressions.toArray(new IExpression[expressions.size()])); - } - return true; - } - } - return false; - } - - - /** - * Performs the drop when text was dragged. Creates a new watch expression from - * the text. Inserts the expression at the currently selected target or adds it - * to the end of the collection if no target is selected. - * - * @param text string to use to create the expression - * @return whether the drop was successful - */ - private boolean performTextDrop(String text){ - IExpression expression = createExpression(text); - if (expression != null){ - IExpressionManager manager = DebugPlugin.getDefault().getExpressionManager(); - if (manager instanceof ExpressionManager){ - IExpression targetExpression = getTargetExpression(getCurrentTarget()); - if (targetExpression != null){ - ((ExpressionManager)manager).insertExpressions(new IExpression[]{expression}, targetExpression, fInsertBefore); - } else { - ((ExpressionManager)manager).addExpression(expression); - } - return true; - } - } - DebugUIPlugin.log(new Status(IStatus.ERROR,DebugUIPlugin.getUniqueIdentifier(),"Drop failed. Watch expression could not be created for the text " + text)); //$NON-NLS-1$ - return false; - } - - /** - * Creates a new watch expression from an IVariable using the watch expression factory - * adapter for that variable. - * - * @param variable the variable to use to create the watch expression - * @return the string to be used to create expression, return <code>null</code> - * if no expression is to be created - */ - private String createExpressionString(Object element) { - try { - if (element instanceof IVariable) { - IVariable variable = (IVariable)element; - IWatchExpressionFactoryAdapter factory = getFactory(variable); - String exp = variable.getName(); - if (factory != null) { - //if a factory exists, use it to create expression, - //otherwise just use variable name - exp = factory.createWatchExpression(variable); - } - return exp; - } else { - IWatchExpressionFactoryAdapter2 factory2 = getFactory2(element); - if (factory2 != null) { - return factory2.createWatchExpression(element); - } - } - } catch (CoreException e) { - DebugUIPlugin.log(e.getStatus()); - } - return null; - } - - /** - * Creates a new watch expression from a string using the default expression manager. - * - * @param exp the string to use to create the expression - */ - private IExpression createExpression(String exp) { - IWatchExpression expression = DebugPlugin.getDefault().getExpressionManager().newWatchExpression(exp); - IAdaptable object = DebugUITools.getPartDebugContext(fSite); - IDebugElement context = null; - if (object instanceof IDebugElement) { - context = (IDebugElement) object; - } else if (object instanceof ILaunch) { - context = ((ILaunch) object).getDebugTarget(); - } - expression.setExpressionContext(context); - return expression; - } - - - /** - * Returns the factory adapter for the given variable or <code>null</code> if none. - * - * @param variable - * @return factory or <code>null</code> - */ - private IWatchExpressionFactoryAdapter getFactory(IVariable variable) { - return variable.getAdapter(IWatchExpressionFactoryAdapter.class); - } - - /** - * Returns the factory adapter for the given element or <code>null</code> if none. - * - * @param element - * @return factory or <code>null</code> - */ - private IWatchExpressionFactoryAdapter2 getFactory2(Object element) { - if (element instanceof IAdaptable) { - return ((IAdaptable)element).getAdapter(IWatchExpressionFactoryAdapter2.class); - } - return null; - } + Object element = itr.next(); + String expressionText = createExpressionString(element); + if (expressionText != null){ + IExpression expression = createExpression(expressionText); + if (expression != null){ + expressions.add(expression); + } else { + DebugUIPlugin.log(new Status(IStatus.ERROR,DebugUIPlugin.getUniqueIdentifier(),"Drop failed. Watch expression could not be created for the text " + expressionText)); //$NON-NLS-1$ + return false; + } + } else { + return false; + } + } + if (expressions.size() == selection.size()){ + IExpressionManager manager = DebugPlugin.getDefault().getExpressionManager(); + if (manager instanceof ExpressionManager){ + IExpression targetExpression = getTargetExpression(getCurrentTarget()); + if (targetExpression != null){ + ((ExpressionManager)manager).insertExpressions(expressions.toArray(new IExpression[expressions.size()]), targetExpression, fInsertBefore); + } else { + ((ExpressionManager)manager).addExpressions(expressions.toArray(new IExpression[expressions.size()])); + } + return true; + } + } + return false; + } + + + /** + * Performs the drop when text was dragged. Creates a new watch expression from + * the text. Inserts the expression at the currently selected target or adds it + * to the end of the collection if no target is selected. + * + * @param text string to use to create the expression + * @return whether the drop was successful + */ + private boolean performTextDrop(String text){ + IExpression expression = createExpression(text); + if (expression != null){ + IExpressionManager manager = DebugPlugin.getDefault().getExpressionManager(); + if (manager instanceof ExpressionManager){ + IExpression targetExpression = getTargetExpression(getCurrentTarget()); + if (targetExpression != null){ + ((ExpressionManager)manager).insertExpressions(new IExpression[]{expression}, targetExpression, fInsertBefore); + } else { + ((ExpressionManager)manager).addExpression(expression); + } + return true; + } + } + DebugUIPlugin.log(new Status(IStatus.ERROR,DebugUIPlugin.getUniqueIdentifier(),"Drop failed. Watch expression could not be created for the text " + text)); //$NON-NLS-1$ + return false; + } + + /** + * Creates a new watch expression from an IVariable using the watch expression factory + * adapter for that variable. + * + * @param variable the variable to use to create the watch expression + * @return the string to be used to create expression, return <code>null</code> + * if no expression is to be created + */ + private String createExpressionString(Object element) { + try { + if (element instanceof IVariable) { + IVariable variable = (IVariable)element; + IWatchExpressionFactoryAdapter factory = getFactory(variable); + String exp = variable.getName(); + if (factory != null) { + //if a factory exists, use it to create expression, + //otherwise just use variable name + exp = factory.createWatchExpression(variable); + } + return exp; + } else { + IWatchExpressionFactoryAdapter2 factory2 = getFactory2(element); + if (factory2 != null) { + return factory2.createWatchExpression(element); + } + } + } catch (CoreException e) { + DebugUIPlugin.log(e.getStatus()); + } + return null; + } + + /** + * Creates a new watch expression from a string using the default expression manager. + * + * @param exp the string to use to create the expression + */ + private IExpression createExpression(String exp) { + IWatchExpression expression = DebugPlugin.getDefault().getExpressionManager().newWatchExpression(exp); + IAdaptable object = DebugUITools.getPartDebugContext(fSite); + IDebugElement context = null; + if (object instanceof IDebugElement) { + context = (IDebugElement) object; + } else if (object instanceof ILaunch) { + context = ((ILaunch) object).getDebugTarget(); + } + expression.setExpressionContext(context); + return expression; + } + + + /** + * Returns the factory adapter for the given variable or <code>null</code> if none. + * + * @param variable + * @return factory or <code>null</code> + */ + private IWatchExpressionFactoryAdapter getFactory(IVariable variable) { + return variable.getAdapter(IWatchExpressionFactoryAdapter.class); + } + + /** + * Returns the factory adapter for the given element or <code>null</code> if none. + * + * @param element + * @return factory or <code>null</code> + */ + private IWatchExpressionFactoryAdapter2 getFactory2(Object element) { + if (element instanceof IAdaptable) { + return ((IAdaptable)element).getAdapter(IWatchExpressionFactoryAdapter2.class); + } + return null; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/expression/ExpressionView.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/expression/ExpressionView.java index 72e48b518..562370436 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/expression/ExpressionView.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/expression/ExpressionView.java @@ -61,8 +61,8 @@ import org.eclipse.ui.actions.ActionFactory; */ public class ExpressionView extends VariablesView { - private PasteWatchExpressionsAction fPasteAction; - private EditWatchExpressinInPlaceAction fEditInPlaceAction; + private PasteWatchExpressionsAction fPasteAction; + private EditWatchExpressinInPlaceAction fEditInPlaceAction; @Override protected String getHelpContextId() { @@ -81,15 +81,15 @@ public class ExpressionView extends VariablesView { menu.add(new Separator(IDebugUIConstants.EMPTY_EXPRESSION_GROUP)); menu.add(new Separator(IDebugUIConstants.EXPRESSION_GROUP)); menu.add(getAction(FIND_ACTION)); - ChangeVariableValueAction changeValueAction = (ChangeVariableValueAction)getAction("ChangeVariableValue"); //$NON-NLS-1$ - if (changeValueAction.isApplicable()) { - menu.add(changeValueAction); - } + ChangeVariableValueAction changeValueAction = (ChangeVariableValueAction)getAction("ChangeVariableValue"); //$NON-NLS-1$ + if (changeValueAction.isApplicable()) { + menu.add(changeValueAction); + } menu.add(new Separator()); IAction action = new AvailableLogicalStructuresAction(this); - if (action.isEnabled()) { - menu.add(action); - } + if (action.isEnabled()) { + menu.add(action); + } action = new AvailableDetailPanesAction(this); if (isDetailPaneVisible() && action.isEnabled()) { menu.add(action); @@ -104,24 +104,24 @@ public class ExpressionView extends VariablesView { return; } if (selection == null || selection.isEmpty()) { - super.contextActivated(new StructuredSelection(DebugPlugin.getDefault().getExpressionManager())); + super.contextActivated(new StructuredSelection(DebugPlugin.getDefault().getExpressionManager())); } else { super.contextActivated(selection); } - if (isAvailable() && isVisible()) { - updateAction("ContentAssist"); //$NON-NLS-1$ - } + if (isAvailable() && isVisible()) { + updateAction("ContentAssist"); //$NON-NLS-1$ + } } @Override protected void viewerInputUpdateComplete(IViewerInputUpdate update) { - IStatus status = update.getStatus(); - if ( (status == null || status.isOK()) && update.getElement() != null) { - setViewerInput(update.getInputElement()); - } else { - setViewerInput(DebugPlugin.getDefault().getExpressionManager()); - } - updateAction(FIND_ACTION); + IStatus status = update.getStatus(); + if ( (status == null || status.isOK()) && update.getElement() != null) { + setViewerInput(update.getInputElement()); + } else { + setViewerInput(DebugPlugin.getDefault().getExpressionManager()); + } + updateAction(FIND_ACTION); } @Override @@ -139,103 +139,103 @@ public class ExpressionView extends VariablesView { return IDebugUIConstants.ID_EXPRESSION_VIEW; } - @Override + @Override protected void initDragAndDrop(TreeModelViewer viewer) { - viewer.addDragSupport(DND.DROP_MOVE, new Transfer[] {LocalSelectionTransfer.getTransfer()}, new SelectionDragAdapter(viewer)); - viewer.addDropSupport(DND.DROP_MOVE|DND.DROP_COPY, new Transfer[] {LocalSelectionTransfer.getTransfer(), TextTransfer.getInstance()}, new ExpressionDropAdapter(getSite(), viewer)); - } + viewer.addDragSupport(DND.DROP_MOVE, new Transfer[] {LocalSelectionTransfer.getTransfer()}, new SelectionDragAdapter(viewer)); + viewer.addDropSupport(DND.DROP_MOVE|DND.DROP_COPY, new Transfer[] {LocalSelectionTransfer.getTransfer(), TextTransfer.getInstance()}, new ExpressionDropAdapter(getSite(), viewer)); + } - @Override + @Override protected void createActions() { - super.createActions(); - fPasteAction = new PasteWatchExpressionsAction(this); - configure(fPasteAction, IWorkbenchCommandConstants.EDIT_PASTE, PASTE_ACTION, ISharedImages.IMG_TOOL_PASTE); - fEditInPlaceAction = new EditWatchExpressinInPlaceAction(this); - configure(fEditInPlaceAction, IWorkbenchCommandConstants.FILE_RENAME, ActionFactory.RENAME.getId(), null); - } - - @Override + super.createActions(); + fPasteAction = new PasteWatchExpressionsAction(this); + configure(fPasteAction, IWorkbenchCommandConstants.EDIT_PASTE, PASTE_ACTION, ISharedImages.IMG_TOOL_PASTE); + fEditInPlaceAction = new EditWatchExpressinInPlaceAction(this); + configure(fEditInPlaceAction, IWorkbenchCommandConstants.FILE_RENAME, ActionFactory.RENAME.getId(), null); + } + + @Override public void dispose() { - fEditInPlaceAction.dispose(); - super.dispose(); - } - - /** - * Configures the action to override the global action, and registers the - * action with this view. - * - * @param action - * action - * @param defId - * action definition id - * @param globalId - * global action id - * @param imgId - * image identifier - */ - private void configure(IAction action, String defId, String globalId, - String imgId) { - setAction(globalId, action); - action.setActionDefinitionId(defId); - setGlobalAction(globalId, action); - if (imgId != null) { - action.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(imgId)); - } - } - - /** - * Returns whether the given selection can be pasted into the expressions - * view. - * - * @return whether the given selection can be pasted into the given target - */ - public boolean canPaste() { - String clipboardText = getClipboardText(); - if (clipboardText != null && clipboardText.length() > 0) { - return true; - } - return false; - } - - /** - * Pastes the selection into the given target - * - * @return whether successful - */ - public boolean performPaste() { - String clipboardText = getClipboardText(); - if (clipboardText != null && clipboardText.length() > 0) { - IExpressionManager expressionManager = DebugPlugin.getDefault().getExpressionManager(); - IWatchExpression watchExpression = expressionManager - .newWatchExpression(clipboardText); - expressionManager.addExpression(watchExpression); - watchExpression.setExpressionContext(getContext()); - return true; - } - return false; - } - - // TODO: duplicate code from WatchExpressionAction - protected IDebugElement getContext() { - IAdaptable object = DebugUITools.getPartDebugContext(getSite()); - IDebugElement context = null; - if (object instanceof IDebugElement) { - context = (IDebugElement) object; - } else if (object instanceof ILaunch) { - context = ((ILaunch) object).getDebugTarget(); - } - return context; - } - - protected String getClipboardText() { - Clipboard clipboard = new Clipboard(Display.getDefault()); - try { - TextTransfer textTransfer = TextTransfer.getInstance(); - return (String) clipboard.getContents(textTransfer); - } finally { - clipboard.dispose(); - } - } + fEditInPlaceAction.dispose(); + super.dispose(); + } + + /** + * Configures the action to override the global action, and registers the + * action with this view. + * + * @param action + * action + * @param defId + * action definition id + * @param globalId + * global action id + * @param imgId + * image identifier + */ + private void configure(IAction action, String defId, String globalId, + String imgId) { + setAction(globalId, action); + action.setActionDefinitionId(defId); + setGlobalAction(globalId, action); + if (imgId != null) { + action.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(imgId)); + } + } + + /** + * Returns whether the given selection can be pasted into the expressions + * view. + * + * @return whether the given selection can be pasted into the given target + */ + public boolean canPaste() { + String clipboardText = getClipboardText(); + if (clipboardText != null && clipboardText.length() > 0) { + return true; + } + return false; + } + + /** + * Pastes the selection into the given target + * + * @return whether successful + */ + public boolean performPaste() { + String clipboardText = getClipboardText(); + if (clipboardText != null && clipboardText.length() > 0) { + IExpressionManager expressionManager = DebugPlugin.getDefault().getExpressionManager(); + IWatchExpression watchExpression = expressionManager + .newWatchExpression(clipboardText); + expressionManager.addExpression(watchExpression); + watchExpression.setExpressionContext(getContext()); + return true; + } + return false; + } + + // TODO: duplicate code from WatchExpressionAction + protected IDebugElement getContext() { + IAdaptable object = DebugUITools.getPartDebugContext(getSite()); + IDebugElement context = null; + if (object instanceof IDebugElement) { + context = (IDebugElement) object; + } else if (object instanceof ILaunch) { + context = ((ILaunch) object).getDebugTarget(); + } + return context; + } + + protected String getClipboardText() { + Clipboard clipboard = new Clipboard(Display.getDefault()); + try { + TextTransfer textTransfer = TextTransfer.getInstance(); + return (String) clipboard.getContents(textTransfer); + } finally { + clipboard.dispose(); + } + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/BreadcrumbDropDownAutoExpandAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/BreadcrumbDropDownAutoExpandAction.java index 8a9e3cbeb..368b7b5bf 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/BreadcrumbDropDownAutoExpandAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/BreadcrumbDropDownAutoExpandAction.java @@ -32,7 +32,7 @@ class BreadcrumbDropDownAutoExpandAction extends Action { * Creates a new action to set the debug view mode. * * @param view Reference to the debug view. - * in auto mode. + * in auto mode. */ public BreadcrumbDropDownAutoExpandAction(LaunchView view) { super(IInternalDebugCoreConstants.EMPTY_STRING, AS_CHECK_BOX); diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/BreadcrumbWorkbenchPart.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/BreadcrumbWorkbenchPart.java index 51c5cdd0b..8627110ca 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/BreadcrumbWorkbenchPart.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/BreadcrumbWorkbenchPart.java @@ -27,70 +27,70 @@ import org.eclipse.ui.IWorkbenchPartSite; */ class BreadcrumbWorkbenchPart implements IWorkbenchPart { - private IWorkbenchPartSite fSite = null; + private IWorkbenchPartSite fSite = null; - @Override + @Override public boolean equals(Object obj) { - return (obj instanceof BreadcrumbWorkbenchPart); - } + return (obj instanceof BreadcrumbWorkbenchPart); + } - @Override + @Override public int hashCode() { - return getClass().hashCode(); - } - - /** - * Constructs a part for the given console that binds to the given - * site - * @param site the backing site - */ - public BreadcrumbWorkbenchPart(IWorkbenchPartSite site) { - fSite = site; - } - - @Override + return getClass().hashCode(); + } + + /** + * Constructs a part for the given console that binds to the given + * site + * @param site the backing site + */ + public BreadcrumbWorkbenchPart(IWorkbenchPartSite site) { + fSite = site; + } + + @Override public void addPropertyListener(IPropertyListener listener) { - } + } - @Override + @Override public void createPartControl(Composite parent) { - } + } - @Override + @Override public void dispose() { - } + } - @Override + @Override public IWorkbenchPartSite getSite() { - return fSite; - } + return fSite; + } - @Override + @Override public String getTitle() { - return ""; //$NON-NLS-1$ - } + return ""; //$NON-NLS-1$ + } - @Override + @Override public Image getTitleImage() { - return null; - } + return null; + } - @Override + @Override public String getTitleToolTip() { - return ""; //$NON-NLS-1$ - } + return ""; //$NON-NLS-1$ + } - @Override + @Override public void removePropertyListener(IPropertyListener listener) { - } + } - @Override + @Override public void setFocus() { - } + } - @Override + @Override public <T> T getAdapter(Class<T> adapter) { - return null; - } + return null; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/DebugElementAdapterFactory.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/DebugElementAdapterFactory.java index de46ada99..6f21df74c 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/DebugElementAdapterFactory.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/DebugElementAdapterFactory.java @@ -99,243 +99,243 @@ public class DebugElementAdapterFactory implements IAdapterFactory { private static ISourceDisplay fgStackFrameSourceDisplayAdapter = new StackFrameSourceDisplayAdapter(); private static IModelSelectionPolicyFactory fgModelSelectionPolicyFactoryAdapter = new DefaultModelSelectionPolicyFactory(); - private static IAsynchronousLabelAdapter fgDebugLabelAdapter = new AsynchronousDebugLabelAdapter(); - private static IAsynchronousLabelAdapter fgMemoryBlockLabelAdapter = new MemoryBlockLabelAdapter(); - private static IAsynchronousLabelAdapter fgTableRenderingLineLabelAdapter = new MemorySegmentLabelAdapter(); + private static IAsynchronousLabelAdapter fgDebugLabelAdapter = new AsynchronousDebugLabelAdapter(); + private static IAsynchronousLabelAdapter fgMemoryBlockLabelAdapter = new MemoryBlockLabelAdapter(); + private static IAsynchronousLabelAdapter fgTableRenderingLineLabelAdapter = new MemorySegmentLabelAdapter(); - private static IElementLabelProvider fgLPDebugElement = new DebugElementLabelProvider(); - private static IElementLabelProvider fgLPVariable = new VariableLabelProvider(); - private static IElementLabelProvider fgLPExpression = new ExpressionLabelProvider(); - private static IElementLabelProvider fgLPRegisterGroup = new RegisterGroupLabelProvider(); - private static IElementLabelProvider fgLPMemoryBlock = new MemoryBlockLabelProvider(); - private static IElementLabelProvider fgLPBreakpoint = new BreakpointLabelProvider(); - private static IElementLabelProvider fgLPBreakpointContainer = new BreakpointContainerLabelProvider(); - private static IElementEditor fgEEVariable = new VariableEditor(); - private static IElementEditor fgEEWatchExpression = new WatchExpressionEditor(); + private static IElementLabelProvider fgLPDebugElement = new DebugElementLabelProvider(); + private static IElementLabelProvider fgLPVariable = new VariableLabelProvider(); + private static IElementLabelProvider fgLPExpression = new ExpressionLabelProvider(); + private static IElementLabelProvider fgLPRegisterGroup = new RegisterGroupLabelProvider(); + private static IElementLabelProvider fgLPMemoryBlock = new MemoryBlockLabelProvider(); + private static IElementLabelProvider fgLPBreakpoint = new BreakpointLabelProvider(); + private static IElementLabelProvider fgLPBreakpointContainer = new BreakpointContainerLabelProvider(); + private static IElementEditor fgEEVariable = new VariableEditor(); + private static IElementEditor fgEEWatchExpression = new WatchExpressionEditor(); - private static IAsynchronousContentAdapter fgAsyncMemoryRetrieval = new MemoryRetrievalContentAdapter(); - private static IAsynchronousContentAdapter fgAsyncMemoryBlock = new MemoryBlockContentAdapter(); + private static IAsynchronousContentAdapter fgAsyncMemoryRetrieval = new MemoryRetrievalContentAdapter(); + private static IAsynchronousContentAdapter fgAsyncMemoryBlock = new MemoryBlockContentAdapter(); - private static IElementContentProvider fgCPLaunchManger = new LaunchManagerContentProvider(); - private static IElementContentProvider fgCPLaunch = new LaunchContentProvider(); - private static IElementContentProvider fgCPProcess = new ProcessContentProvider(); - private static IElementContentProvider fgCPTarget = new DebugTargetContentProvider(); - private static IElementContentProvider fgCPThread = new ThreadContentProvider(); - private static IElementContentProvider fgCPFrame = new StackFrameContentProvider(); - private static IElementContentProvider fgCPVariable = new VariableContentProvider(); - private static IElementContentProvider fgCPExpressionManager = new ExpressionManagerContentProvider(); - private static IElementContentProvider fgCPExpression = new ExpressionContentProvider(); - private static IElementContentProvider fgCPRegisterGroup = new RegisterGroupContentProvider(); - private static IElementContentProvider fgCPMemoryRetrieval = new MemoryRetrievalContentProvider(); - private static IElementContentProvider fgCPMemoryBlock = new MemoryBlockContentProvider(); - private static IElementContentProvider fgCPBreakpointManager = new BreakpointManagerContentProvider(); + private static IElementContentProvider fgCPLaunchManger = new LaunchManagerContentProvider(); + private static IElementContentProvider fgCPLaunch = new LaunchContentProvider(); + private static IElementContentProvider fgCPProcess = new ProcessContentProvider(); + private static IElementContentProvider fgCPTarget = new DebugTargetContentProvider(); + private static IElementContentProvider fgCPThread = new ThreadContentProvider(); + private static IElementContentProvider fgCPFrame = new StackFrameContentProvider(); + private static IElementContentProvider fgCPVariable = new VariableContentProvider(); + private static IElementContentProvider fgCPExpressionManager = new ExpressionManagerContentProvider(); + private static IElementContentProvider fgCPExpression = new ExpressionContentProvider(); + private static IElementContentProvider fgCPRegisterGroup = new RegisterGroupContentProvider(); + private static IElementContentProvider fgCPMemoryRetrieval = new MemoryRetrievalContentProvider(); + private static IElementContentProvider fgCPMemoryBlock = new MemoryBlockContentProvider(); + private static IElementContentProvider fgCPBreakpointManager = new BreakpointManagerContentProvider(); private static IElementContentProvider fgCPBreakpoint = new BreakpointContentProvider(); - private static IElementMementoProvider fgMPFrame = new StackFrameMementoProvider(); - private static IElementMementoProvider fgMPVariable = new VariableMementoProvider(); - private static IElementMementoProvider fgMPExpression = new ExpressionMementoProvider(); - private static IElementMementoProvider fgMPRegisterGroup = new RegisterGroupMementoProvider(); - private static IElementMementoProvider fgMPExpressionManager = new ExpressionManagerMementoProvider(); - private static IElementMementoProvider fgMPMemory = new MemoryViewElementMementoProvider(); - private static IElementMementoProvider fgMPBreakpointManagerInput = new BreakpointManagerInputMementoProvider(); - private static IElementMementoProvider fgMPBreakpointContainer = new BreakpointContainerMementoProvider(); - private static IElementMementoProvider fgMPBreakpoint = new BreakpointMementoProvider(); + private static IElementMementoProvider fgMPFrame = new StackFrameMementoProvider(); + private static IElementMementoProvider fgMPVariable = new VariableMementoProvider(); + private static IElementMementoProvider fgMPExpression = new ExpressionMementoProvider(); + private static IElementMementoProvider fgMPRegisterGroup = new RegisterGroupMementoProvider(); + private static IElementMementoProvider fgMPExpressionManager = new ExpressionManagerMementoProvider(); + private static IElementMementoProvider fgMPMemory = new MemoryViewElementMementoProvider(); + private static IElementMementoProvider fgMPBreakpointManagerInput = new BreakpointManagerInputMementoProvider(); + private static IElementMementoProvider fgMPBreakpointContainer = new BreakpointContainerMementoProvider(); + private static IElementMementoProvider fgMPBreakpoint = new BreakpointMementoProvider(); - private static IColumnPresentationFactory fgVariableColumnFactory = new VariableColumnFactoryAdapter(); + private static IColumnPresentationFactory fgVariableColumnFactory = new VariableColumnFactoryAdapter(); - private static IViewerInputProvider fgDefaultViewerInputProvider = new DefaultViewerInputProvider(); - private static IViewerInputProvider fgStackFrameViewerInputProvider = new StackFrameViewerInputProvider(); + private static IViewerInputProvider fgDefaultViewerInputProvider = new DefaultViewerInputProvider(); + private static IViewerInputProvider fgStackFrameViewerInputProvider = new StackFrameViewerInputProvider(); @SuppressWarnings("unchecked") @Override public <T> T getAdapter(Object adaptableObject, Class<T> adapterType) { - if (adapterType.isInstance(adaptableObject)) { + if (adapterType.isInstance(adaptableObject)) { return (T) adaptableObject; } - if (adapterType.equals(IAsynchronousContentAdapter.class)) { - if (adaptableObject instanceof IMemoryBlockRetrieval) { + if (adapterType.equals(IAsynchronousContentAdapter.class)) { + if (adaptableObject instanceof IMemoryBlockRetrieval) { return (T) fgAsyncMemoryRetrieval; - } - if (adaptableObject instanceof IMemoryBlock) { + } + if (adaptableObject instanceof IMemoryBlock) { return (T) fgAsyncMemoryBlock; - } - } + } + } - if (adapterType.equals(IElementContentProvider.class)) { - if (adaptableObject instanceof ILaunchManager) { + if (adapterType.equals(IElementContentProvider.class)) { + if (adaptableObject instanceof ILaunchManager) { return (T) fgCPLaunchManger; - } - if (adaptableObject instanceof ILaunch) { + } + if (adaptableObject instanceof ILaunch) { return (T) fgCPLaunch; - } - if (adaptableObject instanceof IProcess) { + } + if (adaptableObject instanceof IProcess) { return (T) fgCPProcess; - } - if (adaptableObject instanceof IDebugTarget) { + } + if (adaptableObject instanceof IDebugTarget) { return (T) fgCPTarget; - } - if (adaptableObject instanceof IMemoryBlockRetrieval) - { + } + if (adaptableObject instanceof IMemoryBlockRetrieval) + { return (T) fgCPMemoryRetrieval; - } - if (adaptableObject instanceof IThread) { + } + if (adaptableObject instanceof IThread) { return (T) fgCPThread; - } - if (adaptableObject instanceof IStackFrame) { + } + if (adaptableObject instanceof IStackFrame) { return (T) fgCPFrame; - } - if (adaptableObject instanceof IVariable) { + } + if (adaptableObject instanceof IVariable) { return (T) fgCPVariable; - } - if (adaptableObject instanceof IExpressionManager) { + } + if (adaptableObject instanceof IExpressionManager) { return (T) fgCPExpressionManager; - } - if (adaptableObject instanceof IExpression) { + } + if (adaptableObject instanceof IExpression) { return (T) fgCPExpression; - } - if (adaptableObject instanceof IRegisterGroup) { + } + if (adaptableObject instanceof IRegisterGroup) { return (T) fgCPRegisterGroup; - } - if (adaptableObject instanceof IMemoryBlock) { + } + if (adaptableObject instanceof IMemoryBlock) { return (T) fgCPMemoryBlock; - } - if (adaptableObject instanceof DefaultBreakpointsViewInput) { + } + if (adaptableObject instanceof DefaultBreakpointsViewInput) { return (T) fgCPBreakpointManager; - } - if (adaptableObject instanceof IBreakpoint) { + } + if (adaptableObject instanceof IBreakpoint) { return (T) fgCPBreakpoint; - } - } + } + } - if (adapterType.equals(IAsynchronousLabelAdapter.class)) { - if (adaptableObject instanceof IMemoryBlock) { + if (adapterType.equals(IAsynchronousLabelAdapter.class)) { + if (adaptableObject instanceof IMemoryBlock) { return (T) fgMemoryBlockLabelAdapter; - } + } - if (adaptableObject instanceof MemorySegment) { + if (adaptableObject instanceof MemorySegment) { return (T) fgTableRenderingLineLabelAdapter; - } + } return (T) fgDebugLabelAdapter; - } + } - if (adapterType.equals(IElementLabelProvider.class)) { - if (adaptableObject instanceof IVariable) { + if (adapterType.equals(IElementLabelProvider.class)) { + if (adaptableObject instanceof IVariable) { return (T) fgLPVariable; - } - if (adaptableObject instanceof IExpression) { + } + if (adaptableObject instanceof IExpression) { return (T) fgLPExpression; - } - if (adaptableObject instanceof IRegisterGroup) { + } + if (adaptableObject instanceof IRegisterGroup) { return (T) fgLPRegisterGroup; - } - if (adaptableObject instanceof IMemoryBlock) { + } + if (adaptableObject instanceof IMemoryBlock) { return (T) fgLPMemoryBlock; - } - if (adaptableObject instanceof IBreakpoint) { + } + if (adaptableObject instanceof IBreakpoint) { return (T) fgLPBreakpoint; - } - if (adaptableObject instanceof IBreakpointContainer) { + } + if (adaptableObject instanceof IBreakpointContainer) { return (T) fgLPBreakpointContainer; - } + } return (T) fgLPDebugElement; - } + } - if (adapterType.equals(IModelProxyFactory.class)) { - if (adaptableObject instanceof ILaunch || adaptableObject instanceof IDebugTarget || - adaptableObject instanceof IProcess || adaptableObject instanceof ILaunchManager || - adaptableObject instanceof IStackFrame || adaptableObject instanceof IExpressionManager || - adaptableObject instanceof IExpression || adaptableObject instanceof IMemoryBlockRetrieval || - adaptableObject instanceof IMemoryBlock || - adaptableObject instanceof DefaultBreakpointsViewInput || - adaptableObject instanceof IBreakpoint || - adaptableObject instanceof IBreakpointContainer) { + if (adapterType.equals(IModelProxyFactory.class)) { + if (adaptableObject instanceof ILaunch || adaptableObject instanceof IDebugTarget || + adaptableObject instanceof IProcess || adaptableObject instanceof ILaunchManager || + adaptableObject instanceof IStackFrame || adaptableObject instanceof IExpressionManager || + adaptableObject instanceof IExpression || adaptableObject instanceof IMemoryBlockRetrieval || + adaptableObject instanceof IMemoryBlock || + adaptableObject instanceof DefaultBreakpointsViewInput || + adaptableObject instanceof IBreakpoint || + adaptableObject instanceof IBreakpointContainer) { return (T) fgModelProxyFactoryAdapter; } - } + } - if (adapterType.equals(ISourceDisplay.class)) { - if (adaptableObject instanceof IStackFrame) { + if (adapterType.equals(ISourceDisplay.class)) { + if (adaptableObject instanceof IStackFrame) { return (T) fgStackFrameSourceDisplayAdapter; - } - } + } + } - if (adapterType.equals(IModelSelectionPolicyFactory.class)) { - if (adaptableObject instanceof IDebugElement) { + if (adapterType.equals(IModelSelectionPolicyFactory.class)) { + if (adaptableObject instanceof IDebugElement) { return (T) fgModelSelectionPolicyFactoryAdapter; - } - } + } + } - if (adapterType.equals(IColumnPresentationFactory.class)) { - if (adaptableObject instanceof IStackFrame || adaptableObject instanceof IExpressionManager) { + if (adapterType.equals(IColumnPresentationFactory.class)) { + if (adaptableObject instanceof IStackFrame || adaptableObject instanceof IExpressionManager) { return (T) fgVariableColumnFactory; - } - } + } + } - if (adapterType.equals(IElementMementoProvider.class)) { - if (adaptableObject instanceof IStackFrame) { + if (adapterType.equals(IElementMementoProvider.class)) { + if (adaptableObject instanceof IStackFrame) { return (T) fgMPFrame; - } - if (adaptableObject instanceof IVariable) { + } + if (adaptableObject instanceof IVariable) { return (T) fgMPVariable; - } - if (adaptableObject instanceof IRegisterGroup) { + } + if (adaptableObject instanceof IRegisterGroup) { return (T) fgMPRegisterGroup; - } - if (adaptableObject instanceof IExpression) { + } + if (adaptableObject instanceof IExpression) { return (T) fgMPExpression; - } - if (adaptableObject instanceof IExpressionManager) { + } + if (adaptableObject instanceof IExpressionManager) { return (T) fgMPExpressionManager; - } - if (adaptableObject instanceof IMemoryBlockRetrieval) { + } + if (adaptableObject instanceof IMemoryBlockRetrieval) { return (T) fgMPMemory; - } - if (adaptableObject instanceof IBreakpoint) { + } + if (adaptableObject instanceof IBreakpoint) { return (T) fgMPBreakpoint; - } - if (adaptableObject instanceof IBreakpointContainer) { + } + if (adaptableObject instanceof IBreakpointContainer) { return (T) fgMPBreakpointContainer; - } - if (adaptableObject instanceof DefaultBreakpointsViewInput) { + } + if (adaptableObject instanceof DefaultBreakpointsViewInput) { return (T) fgMPBreakpointManagerInput; - } - } + } + } - if (adapterType.equals(IElementEditor.class)) { - if (adaptableObject instanceof IVariable) { + if (adapterType.equals(IElementEditor.class)) { + if (adaptableObject instanceof IVariable) { return (T) fgEEVariable; - } - if (adaptableObject instanceof IWatchExpression) { + } + if (adaptableObject instanceof IWatchExpression) { return (T) fgEEWatchExpression; - } - } + } + } - if (adapterType.equals(IViewerInputProvider.class)) { - if (adaptableObject instanceof IStackFrame) { + if (adapterType.equals(IViewerInputProvider.class)) { + if (adaptableObject instanceof IStackFrame) { return (T) fgStackFrameViewerInputProvider; - } else { + } else { return (T) fgDefaultViewerInputProvider; - } - } + } + } - return null; - } + return null; + } - @Override + @Override public Class<?>[] getAdapterList() { - return new Class[] { - IAsynchronousLabelAdapter.class, - IAsynchronousContentAdapter.class, - IModelProxyFactory.class, - ISourceDisplay.class, - IModelSelectionPolicyFactory.class, - IColumnPresentationFactory.class, - IElementContentProvider.class, - IElementLabelProvider.class, - IElementMementoProvider.class, - IElementEditor.class, - IViewerInputProvider.class}; - } + return new Class[] { + IAsynchronousLabelAdapter.class, + IAsynchronousContentAdapter.class, + IModelProxyFactory.class, + ISourceDisplay.class, + IModelSelectionPolicyFactory.class, + IColumnPresentationFactory.class, + IElementContentProvider.class, + IElementLabelProvider.class, + IElementMementoProvider.class, + IElementEditor.class, + IViewerInputProvider.class}; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/DebugToolBarAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/DebugToolBarAction.java index 9dcb0f44c..dd2b56008 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/DebugToolBarAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/DebugToolBarAction.java @@ -36,14 +36,14 @@ class DebugToolBarAction extends Action { super(IInternalDebugCoreConstants.EMPTY_STRING, AS_CHECK_BOX); fLaunchView = view; - setText(LaunchViewMessages.DebugToolBarAction_View_label); - setToolTipText(LaunchViewMessages.DebugToolBarAction_View_tooltip); - setDescription(LaunchViewMessages.DebugToolBarAction_View_description); + setText(LaunchViewMessages.DebugToolBarAction_View_label); + setToolTipText(LaunchViewMessages.DebugToolBarAction_View_tooltip); + setDescription(LaunchViewMessages.DebugToolBarAction_View_description); PlatformUI.getWorkbench().getHelpSystem().setHelp(this, IDebugHelpContextIds.DEBUG_TOOLBAR_VIEW_ACTION); } public void setShowingDebugToolbar(boolean showingToolbar) { - setChecked(showingToolbar); + setChecked(showingToolbar); } @Override diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/DebugViewModeAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/DebugViewModeAction.java index 90a129906..bf93dfeb6 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/DebugViewModeAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/DebugViewModeAction.java @@ -41,7 +41,7 @@ class DebugViewModeAction extends Action { * @param view Reference to the debug view. * @param mode The mode to be set by this action. * @param parent The view's parent control used to calculate view size - * in auto mode. + * in auto mode. */ public DebugViewModeAction(LaunchView view, String mode, Composite parent) { super(IInternalDebugCoreConstants.EMPTY_STRING, AS_RADIO_BUTTON); @@ -83,7 +83,7 @@ class DebugViewModeAction extends Action { * @return the mode of the action */ public String getMode() { - return fMode; + return fMode; } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/LaunchView.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/LaunchView.java index e287c7474..c1db62b27 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/LaunchView.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/LaunchView.java @@ -141,43 +141,43 @@ import org.eclipse.ui.progress.UIJob; import org.eclipse.ui.texteditor.IUpdate; public class LaunchView extends AbstractDebugView - implements ISelectionChangedListener, IPerspectiveListener2, IPageListener, IShowInTarget, IShowInSource, - IShowInTargetList, IPartListener2, IViewerUpdateListener, IContextManagerListener, IModelChangedListener + implements ISelectionChangedListener, IPerspectiveListener2, IPageListener, IShowInTarget, IShowInSource, + IShowInTargetList, IPartListener2, IViewerUpdateListener, IContextManagerListener, IModelChangedListener { public static final String ID_CONTEXT_ACTIVITY_BINDINGS = "contextActivityBindings"; //$NON-NLS-1$ - private static final String TERMINATE = "terminate"; //$NON-NLS-1$ + private static final String TERMINATE = "terminate"; //$NON-NLS-1$ - private static final String DISCONNECT = "disconnect"; //$NON-NLS-1$ + private static final String DISCONNECT = "disconnect"; //$NON-NLS-1$ - private static final String SUSPEND = "suspend"; //$NON-NLS-1$ + private static final String SUSPEND = "suspend"; //$NON-NLS-1$ - private static final String RESUME = "resume"; //$NON-NLS-1$ + private static final String RESUME = "resume"; //$NON-NLS-1$ - private static final String STEP_RETURN = "step_return"; //$NON-NLS-1$ + private static final String STEP_RETURN = "step_return"; //$NON-NLS-1$ - private static final String STEP_OVER = "step_over"; //$NON-NLS-1$ + private static final String STEP_OVER = "step_over"; //$NON-NLS-1$ - private static final String DROP_TO_FRAME = "drop_to_frame"; //$NON-NLS-1$ + private static final String DROP_TO_FRAME = "drop_to_frame"; //$NON-NLS-1$ - private static final String STEP_INTO = "step_into"; //$NON-NLS-1$ + private static final String STEP_INTO = "step_into"; //$NON-NLS-1$ - public static final String TERMINATE_AND_REMOVE = "terminate_and_remove"; //$NON-NLS-1$ + public static final String TERMINATE_AND_REMOVE = "terminate_and_remove"; //$NON-NLS-1$ - private static final String TERMINATE_ALL = "terminate_all"; //$NON-NLS-1$ + private static final String TERMINATE_ALL = "terminate_all"; //$NON-NLS-1$ - public static final String TERMINATE_AND_RELAUNCH = "terminate_relaunch"; //$NON-NLS-1$ + public static final String TERMINATE_AND_RELAUNCH = "terminate_relaunch"; //$NON-NLS-1$ - private static final String TOGGLE_STEP_FILTERS = "toggle_step_filters"; //$NON-NLS-1$ + private static final String TOGGLE_STEP_FILTERS = "toggle_step_filters"; //$NON-NLS-1$ - private static final String RESTART = "restart"; //$NON-NLS-1$ + private static final String RESTART = "restart"; //$NON-NLS-1$ - private static final int BREADCRUMB_TRIGGER_HEIGHT_DEFAULT = 30; // pixels + private static final int BREADCRUMB_TRIGGER_HEIGHT_DEFAULT = 30; // pixels - private static final int BREADCRUMB_TRIGGER_RANGE = 5; // pixels + private static final int BREADCRUMB_TRIGGER_RANGE = 5; // pixels - private static final int BREADCRUMB_STICKY_RANGE = 20; // pixels + private static final int BREADCRUMB_STICKY_RANGE = 20; // pixels /** * Whether this view is in the active page of a perspective. @@ -201,114 +201,114 @@ public class LaunchView extends AbstractDebugView * * @since 3.5 */ - private String fCurrentViewMode = IDebugPreferenceConstants.DEBUG_VIEW_MODE_AUTO; - - /** - * Actions for selecting the view mode (auto vs. breadcrumb, vs. tree view). - * - * @since 3.5 - */ - private DebugViewModeAction[] fDebugViewModeActions; - - /** - * Action which shows or hides the Debug view toolbar. - */ - private DebugToolBarAction fDebugToolBarAction; - - /** - * Action that controls the breadcrumb drop-down auto-expand behavior. - * - * @since 3.5 - */ - private BreadcrumbDropDownAutoExpandAction fBreadcrumbDropDownAutoExpandAction; - - /** - * Context service for this view. Used to track whether debug toolbar - * action set is active. - * - * @since 3.8 - */ - private IContextService fContextService; - - /** - * Preference name for the view's memento. - * - * @since 3.5 - */ - private String PREF_STATE_MEMENTO = "pref_state_memento."; //$NON-NLS-1$ - - /** - * Key for a view preference for whether the elements in breadcrumb's - * drop-down viewer should be automatically expanded. - * - * @since 3.5 - */ - private static final String BREADCRUMB_DROPDOWN_AUTO_EXPAND = DebugUIPlugin.getUniqueIdentifier() + ".BREADCRUMB_DROPDOWN_AUTO_EXPAND"; //$NON-NLS-1$ - - /** - * Preference for whether the elements in breadcrumb's - * drop-down viewer should be automatically expanded. - * - * @since 3.5 - */ + private String fCurrentViewMode = IDebugPreferenceConstants.DEBUG_VIEW_MODE_AUTO; + + /** + * Actions for selecting the view mode (auto vs. breadcrumb, vs. tree view). + * + * @since 3.5 + */ + private DebugViewModeAction[] fDebugViewModeActions; + + /** + * Action which shows or hides the Debug view toolbar. + */ + private DebugToolBarAction fDebugToolBarAction; + + /** + * Action that controls the breadcrumb drop-down auto-expand behavior. + * + * @since 3.5 + */ + private BreadcrumbDropDownAutoExpandAction fBreadcrumbDropDownAutoExpandAction; + + /** + * Context service for this view. Used to track whether debug toolbar + * action set is active. + * + * @since 3.8 + */ + private IContextService fContextService; + + /** + * Preference name for the view's memento. + * + * @since 3.5 + */ + private String PREF_STATE_MEMENTO = "pref_state_memento."; //$NON-NLS-1$ + + /** + * Key for a view preference for whether the elements in breadcrumb's + * drop-down viewer should be automatically expanded. + * + * @since 3.5 + */ + private static final String BREADCRUMB_DROPDOWN_AUTO_EXPAND = DebugUIPlugin.getUniqueIdentifier() + ".BREADCRUMB_DROPDOWN_AUTO_EXPAND"; //$NON-NLS-1$ + + /** + * Preference for whether the elements in breadcrumb's + * drop-down viewer should be automatically expanded. + * + * @since 3.5 + */ private boolean fBreadcrumbDropDownAutoExpand; - /** - * Action handlers. Maps action identifiers to IHandler's. - * - * @since 3.6 - */ + /** + * Action handlers. Maps action identifiers to IHandler's. + * + * @since 3.6 + */ private Map<String, IHandler2> fHandlers = new HashMap<>(); - private boolean fDebugToolbarInView = true; + private boolean fDebugToolbarInView = true; private Set<String> fDebugToolbarPerspectives = new TreeSet<>(); /** * Page-book page for the breadcrumb viewer. This page is activated in * Debug view when the height of the view is reduced to just one line. - * - * @since 3.5 + * + * @since 3.5 */ private class BreadcrumbPage extends Page { - LaunchViewBreadcrumb fCrumb; - Control fControl; + LaunchViewBreadcrumb fCrumb; + Control fControl; - @Override + @Override public void createControl(Composite parent) { - fCrumb = new LaunchViewBreadcrumb(LaunchView.this, (TreeModelViewer)getViewer(), fTreeViewerDebugContextProvider); - fControl = fCrumb.createContent(parent); - } + fCrumb = new LaunchViewBreadcrumb(LaunchView.this, (TreeModelViewer)getViewer(), fTreeViewerDebugContextProvider); + fControl = fCrumb.createContent(parent); + } - @Override + @Override public void init(IPageSite pageSite) { - super.init(pageSite); - pageSite.setSelectionProvider(fCrumb.getSelectionProvider()); - } + super.init(pageSite); + pageSite.setSelectionProvider(fCrumb.getSelectionProvider()); + } - @Override + @Override public Control getControl() { - return fControl; - } + return fControl; + } - @Override + @Override public void setFocus() { - fCrumb.activate(); - } + fCrumb.activate(); + } - IDebugContextProvider getContextProvider() { - return fCrumb.getContextProvider(); - } + IDebugContextProvider getContextProvider() { + return fCrumb.getContextProvider(); + } - int getHeight() { - return fCrumb.getHeight(); - } + int getHeight() { + return fCrumb.getHeight(); + } - @Override + @Override public void dispose() { - fCrumb.dispose(); - } + fCrumb.dispose(); + } } private BreadcrumbPage fBreadcrumbPage; @@ -380,20 +380,20 @@ public class LaunchView extends AbstractDebugView fire(new DebugContextEvent(this, selection, DebugContextEvent.ACTIVATED)); } - protected void possibleChange(TreePath element, int type) { - DebugContextEvent event = null; - synchronized (this) { - if (fContext instanceof ITreeSelection) { - ITreeSelection ss = (ITreeSelection) fContext; - TreePath[] ssPaths = ss.getPaths(); - for (int i = 0; i < ssPaths.length; i++) { - if (ssPaths[i].startsWith(element, null)) { - if (ssPaths[i].getSegmentCount() == element.getSegmentCount()) { - event = new DebugContextEvent(this, fContext, type); - } else { - // if parent of the currently selected element - // changes, issue event to update STATE only - event = new DebugContextEvent(this, fContext, DebugContextEvent.STATE); + protected void possibleChange(TreePath element, int type) { + DebugContextEvent event = null; + synchronized (this) { + if (fContext instanceof ITreeSelection) { + ITreeSelection ss = (ITreeSelection) fContext; + TreePath[] ssPaths = ss.getPaths(); + for (int i = 0; i < ssPaths.length; i++) { + if (ssPaths[i].startsWith(element, null)) { + if (ssPaths[i].getSegmentCount() == element.getSegmentCount()) { + event = new DebugContextEvent(this, fContext, type); + } else { + // if parent of the currently selected element + // changes, issue event to update STATE only + event = new DebugContextEvent(this, fContext, DebugContextEvent.STATE); } } } @@ -472,59 +472,59 @@ public class LaunchView extends AbstractDebugView private PageRec fDefaultPageRec = null; private ISelectionChangedListener fTreeViewerSelectionChangedListener = new ISelectionChangedListener() { - @Override + @Override public void selectionChanged(SelectionChangedEvent event) { fTreeViewerDebugContextProvider.activate(event.getSelection()); - } + } }; private class ContextProviderProxy extends AbstractDebugContextProvider implements IDebugContextListener { - private IDebugContextProvider fActiveProvider; - private IDebugContextProvider[] fProviders; - - ContextProviderProxy(IDebugContextProvider[] providers) { - super(LaunchView.this); - fProviders = providers; - fActiveProvider = providers[0]; - for (int i = 0; i < fProviders.length; i++) { - fProviders[i].addDebugContextListener(this); - } - } - - void setActiveProvider(IDebugContextProvider provider) { - if (!provider.equals(fActiveProvider)) { - ISelection activeContext = getActiveContext(); - fActiveProvider = provider; - ISelection newActiveContext = getActiveContext(); - if (!activeContext.equals(newActiveContext)) { - fire(new DebugContextEvent(this, getActiveContext(), DebugContextEvent.ACTIVATED)); - } - } - } - - @Override + private IDebugContextProvider fActiveProvider; + private IDebugContextProvider[] fProviders; + + ContextProviderProxy(IDebugContextProvider[] providers) { + super(LaunchView.this); + fProviders = providers; + fActiveProvider = providers[0]; + for (int i = 0; i < fProviders.length; i++) { + fProviders[i].addDebugContextListener(this); + } + } + + void setActiveProvider(IDebugContextProvider provider) { + if (!provider.equals(fActiveProvider)) { + ISelection activeContext = getActiveContext(); + fActiveProvider = provider; + ISelection newActiveContext = getActiveContext(); + if (!activeContext.equals(newActiveContext)) { + fire(new DebugContextEvent(this, getActiveContext(), DebugContextEvent.ACTIVATED)); + } + } + } + + @Override public ISelection getActiveContext() { - ISelection activeContext = fActiveProvider.getActiveContext(); - if (activeContext != null) { - return activeContext; - } - return TreeSelection.EMPTY; - } - - @Override + ISelection activeContext = fActiveProvider.getActiveContext(); + if (activeContext != null) { + return activeContext; + } + return TreeSelection.EMPTY; + } + + @Override public void debugContextChanged(DebugContextEvent event) { - if (event.getSource().equals(fActiveProvider)) { - fire(new DebugContextEvent(this, event.getContext(), event.getFlags())); - } - } + if (event.getSource().equals(fActiveProvider)) { + fire(new DebugContextEvent(this, event.getContext(), event.getFlags())); + } + } - void dispose() { - for (int i = 0; i < fProviders.length; i++) { - fProviders[i].removeDebugContextListener(this); - } - fProviders = null; - fActiveProvider = null; - } + void dispose() { + for (int i = 0; i < fProviders.length; i++) { + fProviders[i].removeDebugContextListener(this); + } + fProviders = null; + fActiveProvider = null; + } } private ContextProviderProxy fContextProviderProxy; @@ -543,23 +543,23 @@ public class LaunchView extends AbstractDebugView fLookupAction = new LookupSourceAction(this); setAction(FIND_ACTION, new VirtualFindAction((TreeModelViewer) getViewer())); - addCapabilityAction(new TerminateCommandAction(), TERMINATE); - addCapabilityAction(new DisconnectCommandAction(), DISCONNECT); - addCapabilityAction(new SuspendCommandAction(), SUSPEND); - addCapabilityAction(new ResumeCommandAction(), RESUME); - addCapabilityAction(new StepReturnCommandAction(), STEP_RETURN); - addCapabilityAction(new StepOverCommandAction(), STEP_OVER); - addCapabilityAction(new StepIntoCommandAction(), STEP_INTO); - addCapabilityAction(new DropToFrameCommandAction(), DROP_TO_FRAME); - DebugCommandAction action = new TerminateAndRemoveAction(); - addCapabilityAction(action, TERMINATE_AND_REMOVE); - setHandler(TERMINATE_AND_REMOVE, new ActionHandler(action)); - action = new TerminateAndRelaunchAction(); - addCapabilityAction(action, TERMINATE_AND_RELAUNCH); - setHandler(TERMINATE_AND_RELAUNCH, new ActionHandler(action)); - addCapabilityAction(new RestartCommandAction(), RESTART); - addCapabilityAction(new TerminateAllAction(), TERMINATE_ALL); - addCapabilityAction(new ToggleStepFiltersAction(), TOGGLE_STEP_FILTERS); + addCapabilityAction(new TerminateCommandAction(), TERMINATE); + addCapabilityAction(new DisconnectCommandAction(), DISCONNECT); + addCapabilityAction(new SuspendCommandAction(), SUSPEND); + addCapabilityAction(new ResumeCommandAction(), RESUME); + addCapabilityAction(new StepReturnCommandAction(), STEP_RETURN); + addCapabilityAction(new StepOverCommandAction(), STEP_OVER); + addCapabilityAction(new StepIntoCommandAction(), STEP_INTO); + addCapabilityAction(new DropToFrameCommandAction(), DROP_TO_FRAME); + DebugCommandAction action = new TerminateAndRemoveAction(); + addCapabilityAction(action, TERMINATE_AND_REMOVE); + setHandler(TERMINATE_AND_REMOVE, new ActionHandler(action)); + action = new TerminateAndRelaunchAction(); + addCapabilityAction(action, TERMINATE_AND_RELAUNCH); + setHandler(TERMINATE_AND_RELAUNCH, new ActionHandler(action)); + addCapabilityAction(new RestartCommandAction(), RESTART); + addCapabilityAction(new TerminateAllAction(), TERMINATE_ALL); + addCapabilityAction(new ToggleStepFiltersAction(), TOGGLE_STEP_FILTERS); } /** @@ -604,62 +604,62 @@ public class LaunchView extends AbstractDebugView } /** - * Override the default implementation to create the breadcrumb page. + * Override the default implementation to create the breadcrumb page. * * @since 3.5 * @see #fDefaultPageRec */ @Override public void createPartControl(final Composite parent) { - super.createPartControl(parent); - - // Copy the global action handlers to the default page. - setGlobalActionBarsToPage((IPageBookViewPage)getDefaultPage()); - - // Add view as a selection listener to the site. - getSite().getSelectionProvider().addSelectionChangedListener(this); - - // Set the tree viewer as the selection provider to the default page. - // The page book view handles switching the between page selection - // providers as needed. - ((IPageBookViewPage)getDefaultPage()).getSite().setSelectionProvider(getViewer()); - - // Call the PageBookView part listener to indirectly create the breadcrumb page. - // This call eventually calls doCreatePage() implemented below. - partActivated(new BreadcrumbWorkbenchPart(getSite())); - - fContextProviderProxy = new ContextProviderProxy( - new IDebugContextProvider[] {fTreeViewerDebugContextProvider, fBreadcrumbPage.getContextProvider()}); - DebugUITools.getDebugContextManager().getContextService(getSite().getWorkbenchWindow()).addDebugContextProvider(fContextProviderProxy); - - // Create and configure actions for selecting view mode. - createViewModeActions(parent); - IPreferenceStore prefStore = DebugUIPlugin.getDefault().getPreferenceStore(); - String mode = prefStore.getString(IDebugPreferenceConstants.DEBUG_VIEW_MODE); - setViewMode(mode, parent); - for (int i = 0; i < fDebugViewModeActions.length; i++) { - fDebugViewModeActions[i].setChecked(fDebugViewModeActions[i].getMode().equals(mode)); - } + super.createPartControl(parent); + + // Copy the global action handlers to the default page. + setGlobalActionBarsToPage((IPageBookViewPage)getDefaultPage()); + + // Add view as a selection listener to the site. + getSite().getSelectionProvider().addSelectionChangedListener(this); + + // Set the tree viewer as the selection provider to the default page. + // The page book view handles switching the between page selection + // providers as needed. + ((IPageBookViewPage)getDefaultPage()).getSite().setSelectionProvider(getViewer()); + + // Call the PageBookView part listener to indirectly create the breadcrumb page. + // This call eventually calls doCreatePage() implemented below. + partActivated(new BreadcrumbWorkbenchPart(getSite())); + + fContextProviderProxy = new ContextProviderProxy( + new IDebugContextProvider[] {fTreeViewerDebugContextProvider, fBreadcrumbPage.getContextProvider()}); + DebugUITools.getDebugContextManager().getContextService(getSite().getWorkbenchWindow()).addDebugContextProvider(fContextProviderProxy); + + // Create and configure actions for selecting view mode. + createViewModeActions(parent); + IPreferenceStore prefStore = DebugUIPlugin.getDefault().getPreferenceStore(); + String mode = prefStore.getString(IDebugPreferenceConstants.DEBUG_VIEW_MODE); + setViewMode(mode, parent); + for (int i = 0; i < fDebugViewModeActions.length; i++) { + fDebugViewModeActions[i].setChecked(fDebugViewModeActions[i].getMode().equals(mode)); + } - createDebugToolBarInViewActions(parent); + createDebugToolBarInViewActions(parent); - // Add a resize listener for the view to activate breadcrumb as needed. - parent.addControlListener(new ControlListener() { - @Override + // Add a resize listener for the view to activate breadcrumb as needed. + parent.addControlListener(new ControlListener() { + @Override public void controlMoved(ControlEvent e) { - } - @Override + } + @Override public void controlResized(ControlEvent e) { - if (parent.isDisposed()) { - return; - } - if (IDebugPreferenceConstants.DEBUG_VIEW_MODE_AUTO.equals(fCurrentViewMode)) { - autoSelectViewPage(parent); - } - } - }); + if (parent.isDisposed()) { + return; + } + if (IDebugPreferenceConstants.DEBUG_VIEW_MODE_AUTO.equals(fCurrentViewMode)) { + autoSelectViewPage(parent); + } + } + }); - fContextService.addContextManagerListener(this); + fContextService.addContextManagerListener(this); } /** @@ -673,201 +673,201 @@ public class LaunchView extends AbstractDebugView * @since 3.5 */ private void setGlobalActionBarsToPage(IPageBookViewPage page) { - IActionBars pageActionBars = page.getSite().getActionBars(); - // Set the view site action bars created by createActions() to the - // default page site. - IActionBars bars = getViewSite().getActionBars(); - pageActionBars.setGlobalActionHandler(FIND_ACTION, bars.getGlobalActionHandler(FIND_ACTION)); - pageActionBars.setGlobalActionHandler(COPY_ACTION, bars.getGlobalActionHandler(COPY_ACTION)); - } - - /** - * Override the default implementation to create the breadcrumb page. - * - * @since 3.5 - * @see #fDefaultPageRec - */ + IActionBars pageActionBars = page.getSite().getActionBars(); + // Set the view site action bars created by createActions() to the + // default page site. + IActionBars bars = getViewSite().getActionBars(); + pageActionBars.setGlobalActionHandler(FIND_ACTION, bars.getGlobalActionHandler(FIND_ACTION)); + pageActionBars.setGlobalActionHandler(COPY_ACTION, bars.getGlobalActionHandler(COPY_ACTION)); + } + + /** + * Override the default implementation to create the breadcrumb page. + * + * @since 3.5 + * @see #fDefaultPageRec + */ @Override protected PageRec doCreatePage(IWorkbenchPart part) { - if (part instanceof BreadcrumbWorkbenchPart) { - fBreadcrumbPage = new BreadcrumbPage(); - fBreadcrumbPage.createControl(getPageBook()); - initPage(fBreadcrumbPage); - setGlobalActionBarsToPage(fBreadcrumbPage); - return new PageRec(part, fBreadcrumbPage); - } - return null; - } - - /** - * Override the default implementation to create the breadcrumb page. - * - * @since 3.5 - * @see #fDefaultPageRec - */ + if (part instanceof BreadcrumbWorkbenchPart) { + fBreadcrumbPage = new BreadcrumbPage(); + fBreadcrumbPage.createControl(getPageBook()); + initPage(fBreadcrumbPage); + setGlobalActionBarsToPage(fBreadcrumbPage); + return new PageRec(part, fBreadcrumbPage); + } + return null; + } + + /** + * Override the default implementation to create the breadcrumb page. + * + * @since 3.5 + * @see #fDefaultPageRec + */ @Override protected boolean isImportant(IWorkbenchPart part) { - return part instanceof BreadcrumbWorkbenchPart; + return part instanceof BreadcrumbWorkbenchPart; } - /** - * Override the default implementation to gain access at the default - * page record. - * - * @since 3.5 - * @see #fDefaultPageRec - */ + /** + * Override the default implementation to gain access at the default + * page record. + * + * @since 3.5 + * @see #fDefaultPageRec + */ @Override protected void showPageRec(PageRec pageRec) { - if (pageRec.page == getDefaultPage()) { - fDefaultPageRec = pageRec; - } + if (pageRec.page == getDefaultPage()) { + fDefaultPageRec = pageRec; + } - super.showPageRec(pageRec); + super.showPageRec(pageRec); } /** * Creates actions for controlling view mode. * * @param parent The view's parent control used to calculate view size - * in auto mode. + * in auto mode. */ - private void createViewModeActions(final Composite parent) { - IActionBars actionBars = getViewSite().getActionBars(); - IMenuManager viewMenu = actionBars.getMenuManager(); - - fDebugViewModeActions = new DebugViewModeAction[3]; - fDebugViewModeActions[0] = new DebugViewModeAction(this, IDebugPreferenceConstants.DEBUG_VIEW_MODE_AUTO, parent); - fDebugViewModeActions[1] = new DebugViewModeAction(this, IDebugPreferenceConstants.DEBUG_VIEW_MODE_FULL, parent); - fDebugViewModeActions[2] = new DebugViewModeAction(this, IDebugPreferenceConstants.DEBUG_VIEW_MODE_COMPACT, parent); - fBreadcrumbDropDownAutoExpandAction = new BreadcrumbDropDownAutoExpandAction(this); - viewMenu.add(new Separator()); - - final MenuManager modeSubmenu = new MenuManager(LaunchViewMessages.LaunchView_ViewModeMenu_label); - modeSubmenu.setRemoveAllWhenShown(true); - modeSubmenu.add(fDebugViewModeActions[0]); - modeSubmenu.add(fDebugViewModeActions[1]); - modeSubmenu.add(fDebugViewModeActions[2]); - modeSubmenu.add(new Separator()); - modeSubmenu.add(fBreadcrumbDropDownAutoExpandAction); - viewMenu.add(modeSubmenu); - - modeSubmenu.addMenuListener(new IMenuListener() { - @Override + private void createViewModeActions(final Composite parent) { + IActionBars actionBars = getViewSite().getActionBars(); + IMenuManager viewMenu = actionBars.getMenuManager(); + + fDebugViewModeActions = new DebugViewModeAction[3]; + fDebugViewModeActions[0] = new DebugViewModeAction(this, IDebugPreferenceConstants.DEBUG_VIEW_MODE_AUTO, parent); + fDebugViewModeActions[1] = new DebugViewModeAction(this, IDebugPreferenceConstants.DEBUG_VIEW_MODE_FULL, parent); + fDebugViewModeActions[2] = new DebugViewModeAction(this, IDebugPreferenceConstants.DEBUG_VIEW_MODE_COMPACT, parent); + fBreadcrumbDropDownAutoExpandAction = new BreadcrumbDropDownAutoExpandAction(this); + viewMenu.add(new Separator()); + + final MenuManager modeSubmenu = new MenuManager(LaunchViewMessages.LaunchView_ViewModeMenu_label); + modeSubmenu.setRemoveAllWhenShown(true); + modeSubmenu.add(fDebugViewModeActions[0]); + modeSubmenu.add(fDebugViewModeActions[1]); + modeSubmenu.add(fDebugViewModeActions[2]); + modeSubmenu.add(new Separator()); + modeSubmenu.add(fBreadcrumbDropDownAutoExpandAction); + viewMenu.add(modeSubmenu); + + modeSubmenu.addMenuListener(new IMenuListener() { + @Override public void menuAboutToShow(IMenuManager manager) { - modeSubmenu.add(fDebugViewModeActions[0]); - modeSubmenu.add(fDebugViewModeActions[1]); - modeSubmenu.add(fDebugViewModeActions[2]); - modeSubmenu.add(new Separator()); - modeSubmenu.add(fBreadcrumbDropDownAutoExpandAction); - } - }); - } - - /** - * Creates actions for controlling view mode. - * - * @param parent The view's parent control used to calculate view size - * in auto mode. - */ - private void createDebugToolBarInViewActions(final Composite parent) { - IActionBars actionBars = getViewSite().getActionBars(); - IMenuManager viewMenu = actionBars.getMenuManager(); - - fDebugToolBarAction = new DebugToolBarAction(this); - viewMenu.add(fDebugToolBarAction); - updateCheckedDebugToolBarAction(); - } - - - /** - * Sets the current view mode. If needed, the active view page is changed. - * - * @param mode New mode to set. - * @param parent The view's parent control used to calculate view size - * in auto mode. - * - * @since 3.5 - */ - void setViewMode(String mode, Composite parent) { - if (fCurrentViewMode.equals(mode)) { - return; - } - - fCurrentViewMode = mode; - if (IDebugPreferenceConstants.DEBUG_VIEW_MODE_COMPACT.equals(mode)) { - showBreadcrumbPage(); - } else if (IDebugPreferenceConstants.DEBUG_VIEW_MODE_FULL.equals(mode)) { - showTreeViewerPage(); - } else { - autoSelectViewPage(parent); - } - DebugUIPlugin.getDefault().getPreferenceStore().setValue(IDebugPreferenceConstants.DEBUG_VIEW_MODE, mode); - } - - /** - * Based on the current view size, select the active view page - * (tree viewer vs. breadcrumb). - * - * @param parent View pane control. - * - * @since 3.5 - */ - private void autoSelectViewPage(Composite parent) { - int breadcrumbHeight = fBreadcrumbPage.getHeight(); - // Breadcrumb may report size 0 if it hasn't been shown yet. - // Bug 335536. - if (breadcrumbHeight == 0) { - breadcrumbHeight = BREADCRUMB_TRIGGER_HEIGHT_DEFAULT; - } - if (parent.getClientArea().height < breadcrumbHeight + BREADCRUMB_TRIGGER_RANGE) { - showBreadcrumbPage(); - } - else if (parent.getClientArea().height > breadcrumbHeight + BREADCRUMB_STICKY_RANGE) - { - showTreeViewerPage(); - } - } - - - /** - * Shows the tree viewer in the Debug view. - * - * @since 3.5 - */ + modeSubmenu.add(fDebugViewModeActions[0]); + modeSubmenu.add(fDebugViewModeActions[1]); + modeSubmenu.add(fDebugViewModeActions[2]); + modeSubmenu.add(new Separator()); + modeSubmenu.add(fBreadcrumbDropDownAutoExpandAction); + } + }); + } + + /** + * Creates actions for controlling view mode. + * + * @param parent The view's parent control used to calculate view size + * in auto mode. + */ + private void createDebugToolBarInViewActions(final Composite parent) { + IActionBars actionBars = getViewSite().getActionBars(); + IMenuManager viewMenu = actionBars.getMenuManager(); + + fDebugToolBarAction = new DebugToolBarAction(this); + viewMenu.add(fDebugToolBarAction); + updateCheckedDebugToolBarAction(); + } + + + /** + * Sets the current view mode. If needed, the active view page is changed. + * + * @param mode New mode to set. + * @param parent The view's parent control used to calculate view size + * in auto mode. + * + * @since 3.5 + */ + void setViewMode(String mode, Composite parent) { + if (fCurrentViewMode.equals(mode)) { + return; + } + + fCurrentViewMode = mode; + if (IDebugPreferenceConstants.DEBUG_VIEW_MODE_COMPACT.equals(mode)) { + showBreadcrumbPage(); + } else if (IDebugPreferenceConstants.DEBUG_VIEW_MODE_FULL.equals(mode)) { + showTreeViewerPage(); + } else { + autoSelectViewPage(parent); + } + DebugUIPlugin.getDefault().getPreferenceStore().setValue(IDebugPreferenceConstants.DEBUG_VIEW_MODE, mode); + } + + /** + * Based on the current view size, select the active view page + * (tree viewer vs. breadcrumb). + * + * @param parent View pane control. + * + * @since 3.5 + */ + private void autoSelectViewPage(Composite parent) { + int breadcrumbHeight = fBreadcrumbPage.getHeight(); + // Breadcrumb may report size 0 if it hasn't been shown yet. + // Bug 335536. + if (breadcrumbHeight == 0) { + breadcrumbHeight = BREADCRUMB_TRIGGER_HEIGHT_DEFAULT; + } + if (parent.getClientArea().height < breadcrumbHeight + BREADCRUMB_TRIGGER_RANGE) { + showBreadcrumbPage(); + } + else if (parent.getClientArea().height > breadcrumbHeight + BREADCRUMB_STICKY_RANGE) + { + showTreeViewerPage(); + } + } + + + /** + * Shows the tree viewer in the Debug view. + * + * @since 3.5 + */ void showTreeViewerPage() { - if (fDefaultPageRec != null && !getDefaultPage().equals(getCurrentPage())) { - showPageRec(fDefaultPageRec); - fContextProviderProxy.setActiveProvider(fTreeViewerDebugContextProvider); - // Clear the selection in the breadcrumb to avoid having it re-selected - // when the breadcrumb is activated again (bug 268124). - fBreadcrumbPage.fCrumb.clearSelection(); - } + if (fDefaultPageRec != null && !getDefaultPage().equals(getCurrentPage())) { + showPageRec(fDefaultPageRec); + fContextProviderProxy.setActiveProvider(fTreeViewerDebugContextProvider); + // Clear the selection in the breadcrumb to avoid having it re-selected + // when the breadcrumb is activated again (bug 268124). + fBreadcrumbPage.fCrumb.clearSelection(); + } } /** - * Shows the breadcrumb in the Debug view. - * - * @since 3.5 + * Shows the breadcrumb in the Debug view. + * + * @since 3.5 */ void showBreadcrumbPage() { - PageRec rec = getPageRec(fBreadcrumbPage); - if (rec != null && !fBreadcrumbPage.equals(getCurrentPage())) { - showPageRec(rec); - // Ask the breadcrumb to take focus if we're the active part. - if (getSite().getPage().getActivePart() == this) { - setFocus(); - } - ISelection activeContext = fTreeViewerDebugContextProvider.getActiveContext(); + PageRec rec = getPageRec(fBreadcrumbPage); + if (rec != null && !fBreadcrumbPage.equals(getCurrentPage())) { + showPageRec(rec); + // Ask the breadcrumb to take focus if we're the active part. + if (getSite().getPage().getActivePart() == this) { + setFocus(); + } + ISelection activeContext = fTreeViewerDebugContextProvider.getActiveContext(); if (activeContext == null) { activeContext = StructuredSelection.EMPTY; } fBreadcrumbPage.fCrumb.debugContextChanged(new DebugContextEvent( - fTreeViewerDebugContextProvider, - activeContext, - DebugContextEvent.ACTIVATED)); - fContextProviderProxy.setActiveProvider(fBreadcrumbPage.getContextProvider()); - } + fTreeViewerDebugContextProvider, + activeContext, + DebugContextEvent.ACTIVATED)); + fContextProviderProxy.setActiveProvider(fBreadcrumbPage.getContextProvider()); + } } @Override @@ -878,9 +878,9 @@ public class LaunchView extends AbstractDebugView SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.VIRTUAL, fPresentationContext); - viewer.addSelectionChangedListener(fTreeViewerSelectionChangedListener); - viewer.addViewerUpdateListener(this); - viewer.addModelChangedListener(this); + viewer.addSelectionChangedListener(fTreeViewerSelectionChangedListener); + viewer.addViewerUpdateListener(this); + viewer.addModelChangedListener(this); viewer.setInput(DebugPlugin.getDefault().getLaunchManager()); //setEventHandler(new LaunchViewEventHandler(this)); @@ -896,33 +896,33 @@ public class LaunchView extends AbstractDebugView } private void preferenceInit(IViewSite site) { - PREF_STATE_MEMENTO = PREF_STATE_MEMENTO + site.getId(); - IPreferenceStore store = DebugUIPlugin.getDefault().getPreferenceStore(); - String string = store.getString(PREF_STATE_MEMENTO); - if(string.length() > 0) { + PREF_STATE_MEMENTO = PREF_STATE_MEMENTO + site.getId(); + IPreferenceStore store = DebugUIPlugin.getDefault().getPreferenceStore(); + String string = store.getString(PREF_STATE_MEMENTO); + if(string.length() > 0) { try (ByteArrayInputStream bin = new ByteArrayInputStream(string.getBytes()); InputStreamReader reader = new InputStreamReader(bin)) { - XMLMemento stateMemento = XMLMemento.createReadRoot(reader); - setMemento(stateMemento); - } catch (WorkbenchException e) { + XMLMemento stateMemento = XMLMemento.createReadRoot(reader); + setMemento(stateMemento); + } catch (WorkbenchException e) { } catch (IOException e1) { } - } - IMemento mem = getMemento(); + } + IMemento mem = getMemento(); - if (mem != null) { - Boolean auto = mem.getBoolean(BREADCRUMB_DROPDOWN_AUTO_EXPAND); - if(auto != null) { - setBreadcrumbDropDownAutoExpand(auto.booleanValue()); - } - } + if (mem != null) { + Boolean auto = mem.getBoolean(BREADCRUMB_DROPDOWN_AUTO_EXPAND); + if(auto != null) { + setBreadcrumbDropDownAutoExpand(auto.booleanValue()); + } + } - String preference = DebugUIPlugin.getDefault().getPreferenceStore().getString( - IDebugPreferenceConstants.DEBUG_VIEW_TOOLBAR_HIDDEN_PERSPECTIVES); - if (preference != null) { - fDebugToolbarPerspectives = ViewContextService.parseList(preference); - } - IPerspectiveDescriptor perspective = getSite().getPage().getPerspective(); - fDebugToolbarInView = isDebugToolbarShownInPerspective(perspective); + String preference = DebugUIPlugin.getDefault().getPreferenceStore().getString( + IDebugPreferenceConstants.DEBUG_VIEW_TOOLBAR_HIDDEN_PERSPECTIVES); + if (preference != null) { + fDebugToolbarPerspectives = ViewContextService.parseList(preference); + } + IPerspectiveDescriptor perspective = getSite().getPage().getPerspective(); + fDebugToolbarInView = isDebugToolbarShownInPerspective(perspective); } @Override @@ -937,42 +937,42 @@ public class LaunchView extends AbstractDebugView public void init(IViewSite site, IMemento memento) throws PartInitException { super.init(site, memento); commonInit(site); - preferenceInit(site); - fContextService = site.getService(IContextService.class); + preferenceInit(site); + fContextService = site.getService(IContextService.class); } - @Override + @Override public void partDeactivated(IWorkbenchPart part) { - String id = part.getSite().getId(); - if (id.equals(getSite().getId())) { + String id = part.getSite().getId(); + if (id.equals(getSite().getId())) { try (ByteArrayOutputStream bout = new ByteArrayOutputStream(); OutputStreamWriter writer = new OutputStreamWriter(bout);) { - XMLMemento memento = XMLMemento.createWriteRoot("DebugViewMemento"); //$NON-NLS-1$ - saveViewerState(memento); - memento.save(writer); - - IPreferenceStore store = DebugUIPlugin.getDefault().getPreferenceStore(); - String xmlString = bout.toString(); - store.putValue(PREF_STATE_MEMENTO, xmlString); - } catch (IOException e) { - } - } - - StringBuilder buffer= new StringBuilder(); + XMLMemento memento = XMLMemento.createWriteRoot("DebugViewMemento"); //$NON-NLS-1$ + saveViewerState(memento); + memento.save(writer); + + IPreferenceStore store = DebugUIPlugin.getDefault().getPreferenceStore(); + String xmlString = bout.toString(); + store.putValue(PREF_STATE_MEMENTO, xmlString); + } catch (IOException e) { + } + } + + StringBuilder buffer= new StringBuilder(); for (Iterator<String> itr = fDebugToolbarPerspectives.iterator(); itr.hasNext();) { - buffer.append(itr.next()).append(','); - } - getPreferenceStore().setValue(IDebugPreferenceConstants.DEBUG_VIEW_TOOLBAR_HIDDEN_PERSPECTIVES, buffer.toString()); + buffer.append(itr.next()).append(','); + } + getPreferenceStore().setValue(IDebugPreferenceConstants.DEBUG_VIEW_TOOLBAR_HIDDEN_PERSPECTIVES, buffer.toString()); - super.partDeactivated(part); - } + super.partDeactivated(part); + } - /** - * Saves the current state of the viewer - * @param memento the memento to write the viewer state into - */ - public void saveViewerState(IMemento memento) { - memento.putBoolean(BREADCRUMB_DROPDOWN_AUTO_EXPAND, getBreadcrumbDropDownAutoExpand()); - } + /** + * Saves the current state of the viewer + * @param memento the memento to write the viewer state into + */ + public void saveViewerState(IMemento memento) { + memento.putBoolean(BREADCRUMB_DROPDOWN_AUTO_EXPAND, getBreadcrumbDropDownAutoExpand()); + } @Override protected void configureToolBar(IToolBarManager tbm) { @@ -985,98 +985,98 @@ public class LaunchView extends AbstractDebugView tbm.add(new Separator(IDebugUIConstants.RENDER_GROUP)); if (fDebugToolbarInView) { - addDebugToolbarActions(tbm); + addDebugToolbarActions(tbm); } } - protected void addDebugToolbarActions(IToolBarManager tbm) { - tbm.appendToGroup(IDebugUIConstants.THREAD_GROUP, getAction(RESUME)); - tbm.appendToGroup(IDebugUIConstants.THREAD_GROUP, getAction(SUSPEND)); - tbm.appendToGroup(IDebugUIConstants.THREAD_GROUP, getAction(TERMINATE)); - tbm.appendToGroup(IDebugUIConstants.THREAD_GROUP, getAction(DISCONNECT)); - - tbm.appendToGroup(IDebugUIConstants.STEP_INTO_GROUP, getAction(STEP_INTO)); - tbm.appendToGroup(IDebugUIConstants.STEP_OVER_GROUP, getAction(STEP_OVER)); - tbm.appendToGroup(IDebugUIConstants.STEP_RETURN_GROUP, getAction(STEP_RETURN)); - - tbm.appendToGroup(IDebugUIConstants.EMPTY_STEP_GROUP, getAction(DROP_TO_FRAME)); - - tbm.appendToGroup(IDebugUIConstants.RENDER_GROUP, getAction(TOGGLE_STEP_FILTERS)); - } - - /** - * Removes the toolbar actions contributed by this view from the toolbar - * manager. - * @param tbm - */ - protected void removeDebugToolbarActions(IToolBarManager tbm) { - tbm.remove(new ActionContributionItem(getAction(RESUME))); - tbm.remove(new ActionContributionItem(getAction(SUSPEND))); - tbm.remove(new ActionContributionItem(getAction(TERMINATE))); - tbm.remove(new ActionContributionItem(getAction(DISCONNECT))); - - tbm.remove(new ActionContributionItem(getAction(STEP_INTO))); - tbm.remove(new ActionContributionItem(getAction(STEP_OVER))); - tbm.remove(new ActionContributionItem(getAction(STEP_RETURN))); - - tbm.remove(new ActionContributionItem(getAction(DROP_TO_FRAME))); - - tbm.remove(new ActionContributionItem(getAction(TOGGLE_STEP_FILTERS))); - } - - public boolean isDebugToolbarInView() { - return fDebugToolbarInView; - } - - public boolean isDebugToolbarShownInPerspective(IPerspectiveDescriptor perspective) { - return perspective == null || fDebugToolbarPerspectives.contains(perspective.getId()); - } - - public void setDebugToolbarInView(boolean show) { - if (show == isDebugToolbarInView()) { - return; - } - fDebugToolbarInView = show; - - // Update the perspectives set. - IPerspectiveDescriptor perspective = getSite().getPage().getPerspective(); - if (perspective != null) { - if (show) { - fDebugToolbarPerspectives.add(perspective.getId()); - } else { - fDebugToolbarPerspectives.remove(perspective.getId()); - } - } - - // Update the toolbar manager. - IToolBarManager tbm = getViewSite().getActionBars().getToolBarManager(); - if (show) { - addDebugToolbarActions(tbm); - } else { - removeDebugToolbarActions(tbm); - } - getViewSite().getActionBars().updateActionBars(); - - // Update system property used by contributed actions. - System.setProperty(IDebugUIConstants.DEBUG_VIEW_TOOBAR_VISIBLE, Boolean.toString(show)); - } + protected void addDebugToolbarActions(IToolBarManager tbm) { + tbm.appendToGroup(IDebugUIConstants.THREAD_GROUP, getAction(RESUME)); + tbm.appendToGroup(IDebugUIConstants.THREAD_GROUP, getAction(SUSPEND)); + tbm.appendToGroup(IDebugUIConstants.THREAD_GROUP, getAction(TERMINATE)); + tbm.appendToGroup(IDebugUIConstants.THREAD_GROUP, getAction(DISCONNECT)); + + tbm.appendToGroup(IDebugUIConstants.STEP_INTO_GROUP, getAction(STEP_INTO)); + tbm.appendToGroup(IDebugUIConstants.STEP_OVER_GROUP, getAction(STEP_OVER)); + tbm.appendToGroup(IDebugUIConstants.STEP_RETURN_GROUP, getAction(STEP_RETURN)); + + tbm.appendToGroup(IDebugUIConstants.EMPTY_STEP_GROUP, getAction(DROP_TO_FRAME)); + + tbm.appendToGroup(IDebugUIConstants.RENDER_GROUP, getAction(TOGGLE_STEP_FILTERS)); + } + + /** + * Removes the toolbar actions contributed by this view from the toolbar + * manager. + * @param tbm + */ + protected void removeDebugToolbarActions(IToolBarManager tbm) { + tbm.remove(new ActionContributionItem(getAction(RESUME))); + tbm.remove(new ActionContributionItem(getAction(SUSPEND))); + tbm.remove(new ActionContributionItem(getAction(TERMINATE))); + tbm.remove(new ActionContributionItem(getAction(DISCONNECT))); + + tbm.remove(new ActionContributionItem(getAction(STEP_INTO))); + tbm.remove(new ActionContributionItem(getAction(STEP_OVER))); + tbm.remove(new ActionContributionItem(getAction(STEP_RETURN))); + + tbm.remove(new ActionContributionItem(getAction(DROP_TO_FRAME))); + + tbm.remove(new ActionContributionItem(getAction(TOGGLE_STEP_FILTERS))); + } + + public boolean isDebugToolbarInView() { + return fDebugToolbarInView; + } + + public boolean isDebugToolbarShownInPerspective(IPerspectiveDescriptor perspective) { + return perspective == null || fDebugToolbarPerspectives.contains(perspective.getId()); + } + + public void setDebugToolbarInView(boolean show) { + if (show == isDebugToolbarInView()) { + return; + } + fDebugToolbarInView = show; + + // Update the perspectives set. + IPerspectiveDescriptor perspective = getSite().getPage().getPerspective(); + if (perspective != null) { + if (show) { + fDebugToolbarPerspectives.add(perspective.getId()); + } else { + fDebugToolbarPerspectives.remove(perspective.getId()); + } + } + + // Update the toolbar manager. + IToolBarManager tbm = getViewSite().getActionBars().getToolBarManager(); + if (show) { + addDebugToolbarActions(tbm); + } else { + removeDebugToolbarActions(tbm); + } + getViewSite().getActionBars().updateActionBars(); + + // Update system property used by contributed actions. + System.setProperty(IDebugUIConstants.DEBUG_VIEW_TOOBAR_VISIBLE, Boolean.toString(show)); + } @Override public void dispose() { - fContextService.removeContextManagerListener(this); - getSite().getSelectionProvider().removeSelectionChangedListener(this); + fContextService.removeContextManagerListener(this); + getSite().getSelectionProvider().removeSelectionChangedListener(this); DebugUITools.getDebugContextManager().getContextService(getSite().getWorkbenchWindow()).removeDebugContextProvider(fContextProviderProxy); - fContextProviderProxy.dispose(); - fTreeViewerDebugContextProvider.dispose(); - disposeActions(); - Viewer viewer = getViewer(); + fContextProviderProxy.dispose(); + fTreeViewerDebugContextProvider.dispose(); + disposeActions(); + Viewer viewer = getViewer(); if (viewer != null) { viewer.removeSelectionChangedListener(fTreeViewerSelectionChangedListener); - ((TreeModelViewer)viewer).removeViewerUpdateListener(this); - ((TreeModelViewer)viewer).removeModelChangedListener(this); + ((TreeModelViewer)viewer).removeViewerUpdateListener(this); + ((TreeModelViewer)viewer).removeModelChangedListener(this); } if (fPresentationContext != null) { - fPresentationContext.dispose(); + fPresentationContext.dispose(); } IWorkbenchPage page = getSite().getPage(); page.removePartListener((IPartListener2) this); @@ -1095,25 +1095,25 @@ public class LaunchView extends AbstractDebugView } private void disposeActions() { - PropertyDialogAction properties = (PropertyDialogAction) getAction("Properties"); //$NON-NLS-1$ - properties.dispose(); - - disposeCommandAction(TERMINATE); - disposeCommandAction(DISCONNECT); - disposeCommandAction(SUSPEND); - disposeCommandAction(RESUME); - disposeCommandAction(STEP_RETURN); - disposeCommandAction(STEP_OVER); - disposeCommandAction(STEP_INTO); - disposeCommandAction(DROP_TO_FRAME); - disposeCommandAction(TERMINATE_AND_REMOVE); - disposeCommandAction(TERMINATE_AND_RELAUNCH); - disposeCommandAction(RESTART); - disposeCommandAction(TERMINATE_ALL); - disposeCommandAction(TOGGLE_STEP_FILTERS); - } - - /** + PropertyDialogAction properties = (PropertyDialogAction) getAction("Properties"); //$NON-NLS-1$ + properties.dispose(); + + disposeCommandAction(TERMINATE); + disposeCommandAction(DISCONNECT); + disposeCommandAction(SUSPEND); + disposeCommandAction(RESUME); + disposeCommandAction(STEP_RETURN); + disposeCommandAction(STEP_OVER); + disposeCommandAction(STEP_INTO); + disposeCommandAction(DROP_TO_FRAME); + disposeCommandAction(TERMINATE_AND_REMOVE); + disposeCommandAction(TERMINATE_AND_RELAUNCH); + disposeCommandAction(RESTART); + disposeCommandAction(TERMINATE_ALL); + disposeCommandAction(TOGGLE_STEP_FILTERS); + } + + /** * The selection has changed in the viewer. Show the * associated source code if it is a stack frame. * @@ -1144,7 +1144,7 @@ public class LaunchView extends AbstractDebugView setActive(page.findView(getSite().getId()) != null); updateObjects(); setDebugToolbarInView( isDebugToolbarShownInPerspective(getSite().getPage().getPerspective()) ); - updateCheckedDebugToolBarAction(); + updateCheckedDebugToolBarAction(); } @Override @@ -1179,8 +1179,8 @@ public class LaunchView extends AbstractDebugView @Override protected void fillContextMenu(IMenuManager menu) { - TreeSelection sel = (TreeSelection) fTreeViewerDebugContextProvider.getActiveContext(); - Object element = sel != null && sel.size() > 0 ? sel.getFirstElement() : null; + TreeSelection sel = (TreeSelection) fTreeViewerDebugContextProvider.getActiveContext(); + Object element = sel != null && sel.size() > 0 ? sel.getFirstElement() : null; menu.add(new Separator(IDebugUIConstants.EMPTY_EDIT_GROUP)); menu.add(new Separator(IDebugUIConstants.EDIT_GROUP)); @@ -1211,42 +1211,42 @@ public class LaunchView extends AbstractDebugView menu.add(action); menu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); - menu.appendToGroup(IDebugUIConstants.LAUNCH_GROUP, getAction(TERMINATE_AND_REMOVE)); - menu.appendToGroup(IDebugUIConstants.LAUNCH_GROUP, getAction(TERMINATE_ALL)); + menu.appendToGroup(IDebugUIConstants.LAUNCH_GROUP, getAction(TERMINATE_AND_REMOVE)); + menu.appendToGroup(IDebugUIConstants.LAUNCH_GROUP, getAction(TERMINATE_ALL)); - menu.appendToGroup(IDebugUIConstants.THREAD_GROUP, getAction(RESUME)); - menu.appendToGroup(IDebugUIConstants.THREAD_GROUP, getAction(SUSPEND)); - menu.appendToGroup(IDebugUIConstants.THREAD_GROUP, getAction(TERMINATE)); - menu.appendToGroup(IDebugUIConstants.THREAD_GROUP, getAction(TERMINATE_AND_RELAUNCH)); - if (element instanceof IAdaptable && ((IAdaptable)element).getAdapter(IRestartHandler.class) != null) { - menu.appendToGroup(IDebugUIConstants.THREAD_GROUP, getAction(RESTART)); - } - menu.appendToGroup(IDebugUIConstants.THREAD_GROUP, getAction(DISCONNECT)); + menu.appendToGroup(IDebugUIConstants.THREAD_GROUP, getAction(RESUME)); + menu.appendToGroup(IDebugUIConstants.THREAD_GROUP, getAction(SUSPEND)); + menu.appendToGroup(IDebugUIConstants.THREAD_GROUP, getAction(TERMINATE)); + menu.appendToGroup(IDebugUIConstants.THREAD_GROUP, getAction(TERMINATE_AND_RELAUNCH)); + if (element instanceof IAdaptable && ((IAdaptable)element).getAdapter(IRestartHandler.class) != null) { + menu.appendToGroup(IDebugUIConstants.THREAD_GROUP, getAction(RESTART)); + } + menu.appendToGroup(IDebugUIConstants.THREAD_GROUP, getAction(DISCONNECT)); - menu.appendToGroup(IDebugUIConstants.STEP_INTO_GROUP, getAction(STEP_INTO)); - menu.appendToGroup(IDebugUIConstants.STEP_OVER_GROUP, getAction(STEP_OVER)); - menu.appendToGroup(IDebugUIConstants.STEP_RETURN_GROUP, getAction(STEP_RETURN)); + menu.appendToGroup(IDebugUIConstants.STEP_INTO_GROUP, getAction(STEP_INTO)); + menu.appendToGroup(IDebugUIConstants.STEP_OVER_GROUP, getAction(STEP_OVER)); + menu.appendToGroup(IDebugUIConstants.STEP_RETURN_GROUP, getAction(STEP_RETURN)); - menu.appendToGroup(IDebugUIConstants.EMPTY_STEP_GROUP, getAction(DROP_TO_FRAME)); + menu.appendToGroup(IDebugUIConstants.EMPTY_STEP_GROUP, getAction(DROP_TO_FRAME)); - menu.appendToGroup(IDebugUIConstants.RENDER_GROUP, getAction(TOGGLE_STEP_FILTERS)); - } + menu.appendToGroup(IDebugUIConstants.RENDER_GROUP, getAction(TOGGLE_STEP_FILTERS)); + } @Override public void contextManagerChanged(ContextManagerEvent event) { - if (event.isActiveContextsChanged()) { + if (event.isActiveContextsChanged()) { Set<?> oldContexts = event.getPreviouslyActiveContextIds(); Set<?> newContexts = event.getContextManager().getActiveContextIds(); - if (oldContexts.contains(IDebugUIConstants.DEBUG_TOOLBAR_ACTION_SET) != - newContexts.contains(IDebugUIConstants.DEBUG_TOOLBAR_ACTION_SET)) - { - updateCheckedDebugToolBarAction(); - } - } + if (oldContexts.contains(IDebugUIConstants.DEBUG_TOOLBAR_ACTION_SET) != + newContexts.contains(IDebugUIConstants.DEBUG_TOOLBAR_ACTION_SET)) + { + updateCheckedDebugToolBarAction(); + } + } } private void updateCheckedDebugToolBarAction() { - fDebugToolBarAction.setChecked(isDebugToolbarInView()); + fDebugToolBarAction.setChecked(isDebugToolbarInView()); } /** @@ -1402,76 +1402,76 @@ public class LaunchView extends AbstractDebugView getViewer().refresh(); } - @Override + @Override public void updateComplete(IViewerUpdate update) { - if (!update.isCanceled()) { - if (TreePath.EMPTY.equals(update.getElementPath())) { - updateFindAction(); - } - } - } - - @Override + if (!update.isCanceled()) { + if (TreePath.EMPTY.equals(update.getElementPath())) { + updateFindAction(); + } + } + } + + @Override public void updateStarted(IViewerUpdate update) { - } + } - @Override + @Override public synchronized void viewerUpdatesBegin() { - IWorkbenchSiteProgressService progressService = - getSite().getAdapter(IWorkbenchSiteProgressService.class); - if (progressService != null) { - progressService.incrementBusy(); - } - } - - @Override + IWorkbenchSiteProgressService progressService = + getSite().getAdapter(IWorkbenchSiteProgressService.class); + if (progressService != null) { + progressService.incrementBusy(); + } + } + + @Override public synchronized void viewerUpdatesComplete() { - IWorkbenchSiteProgressService progressService = - getSite().getAdapter(IWorkbenchSiteProgressService.class); - if (progressService != null) { - progressService.decrementBusy(); - } - } - - @Override + IWorkbenchSiteProgressService progressService = + getSite().getAdapter(IWorkbenchSiteProgressService.class); + if (progressService != null) { + progressService.decrementBusy(); + } + } + + @Override public void modelChanged(IModelDelta delta, IModelProxy proxy) { - updateFindAction(); - } - - private void updateFindAction() { - IAction action= getAction(FIND_ACTION); - if (action instanceof IUpdate) { - ((IUpdate) action).update(); - } - } - - /** - * Returns whether the breadcrumb viewer is currently visible in the view. - * - * @since 3.5 - */ - boolean isBreadcrumbVisible() { - return fBreadcrumbPage.equals(getCurrentPage()); - } - - /** - * Returns whether the elements in breadcrumb's drop-down viewer should be - * automatically expanded. - * - * @since 3.5 - */ - boolean getBreadcrumbDropDownAutoExpand() { - return fBreadcrumbDropDownAutoExpand; - } - - /** - * Sets whether the elements in breadcrumb's drop-down viewer should be - * automatically expanded. - * - * @since 3.5 - */ - void setBreadcrumbDropDownAutoExpand(boolean expand) { - fBreadcrumbDropDownAutoExpand = expand; - } + updateFindAction(); + } + + private void updateFindAction() { + IAction action= getAction(FIND_ACTION); + if (action instanceof IUpdate) { + ((IUpdate) action).update(); + } + } + + /** + * Returns whether the breadcrumb viewer is currently visible in the view. + * + * @since 3.5 + */ + boolean isBreadcrumbVisible() { + return fBreadcrumbPage.equals(getCurrentPage()); + } + + /** + * Returns whether the elements in breadcrumb's drop-down viewer should be + * automatically expanded. + * + * @since 3.5 + */ + boolean getBreadcrumbDropDownAutoExpand() { + return fBreadcrumbDropDownAutoExpand; + } + + /** + * Sets whether the elements in breadcrumb's drop-down viewer should be + * automatically expanded. + * + * @since 3.5 + */ + void setBreadcrumbDropDownAutoExpand(boolean expand) { + fBreadcrumbDropDownAutoExpand = expand; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/LaunchViewBreadcrumb.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/LaunchViewBreadcrumb.java index 338adc355..ccb12f2c1 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/LaunchViewBreadcrumb.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/LaunchViewBreadcrumb.java @@ -66,497 +66,497 @@ import org.eclipse.ui.progress.UIJob; */ public class LaunchViewBreadcrumb extends AbstractBreadcrumb implements IDebugContextListener, ILabelUpdateListener { - private static class Input { - final TreePath fPath; + private static class Input { + final TreePath fPath; - Input(TreePath path) { - fPath = path; - } + Input(TreePath path) { + fPath = path; + } - @Override + @Override public boolean equals(Object obj) { - return obj instanceof Input && - ((fPath == null && ((Input)obj).fPath == null) || - (fPath != null && fPath.equals( ((Input)obj).fPath ))); - } + return obj instanceof Input && + ((fPath == null && ((Input)obj).fPath == null) || + (fPath != null && fPath.equals( ((Input)obj).fPath ))); + } - @Override + @Override public int hashCode() { - return fPath == null ? 0 : fPath.hashCode(); - } - } + return fPath == null ? 0 : fPath.hashCode(); + } + } - private static class ContentProvider implements ITreePathContentProvider { + private static class ContentProvider implements ITreePathContentProvider { - private static final Object[] EMPTY_ELEMENTS_ARRAY = new Object[0]; + private static final Object[] EMPTY_ELEMENTS_ARRAY = new Object[0]; - public Input fInput; + public Input fInput; - @Override + @Override public Object[] getChildren(TreePath parentPath) { - if (hasChildren(parentPath)) { - return new Object[] { fInput.fPath.getSegment(parentPath.getSegmentCount()) }; - } - return EMPTY_ELEMENTS_ARRAY; - } + if (hasChildren(parentPath)) { + return new Object[] { fInput.fPath.getSegment(parentPath.getSegmentCount()) }; + } + return EMPTY_ELEMENTS_ARRAY; + } - @Override + @Override public TreePath[] getParents(Object element) { - // Not supported - return new TreePath[] { TreePath.EMPTY }; - } + // Not supported + return new TreePath[] { TreePath.EMPTY }; + } - @Override + @Override public boolean hasChildren(TreePath parentPath) { - if ( parentPath.getSegmentCount() == 0) { - return fInput != null; - } else if (fInput != null && - fInput.fPath != null && - fInput.fPath.getSegmentCount() > parentPath.getSegmentCount()) - { - for (int i = 0; i < parentPath.getSegmentCount(); i++) { - if (i >= fInput.fPath.getSegmentCount()) { - return false; - } else { - Object parentElement = parentPath.getSegment(i); - Object contextElement = fInput.fPath.getSegment(i); - if (!parentElement.equals(contextElement)) { - return false; - } - } - } - return true; - } - return false; - } - - @Override + if ( parentPath.getSegmentCount() == 0) { + return fInput != null; + } else if (fInput != null && + fInput.fPath != null && + fInput.fPath.getSegmentCount() > parentPath.getSegmentCount()) + { + for (int i = 0; i < parentPath.getSegmentCount(); i++) { + if (i >= fInput.fPath.getSegmentCount()) { + return false; + } else { + Object parentElement = parentPath.getSegment(i); + Object contextElement = fInput.fPath.getSegment(i); + if (!parentElement.equals(contextElement)) { + return false; + } + } + } + return true; + } + return false; + } + + @Override public Object[] getElements(Object inputElement) { - if (fInput != null && - fInput.fPath != null) - { - return getChildren(TreePath.EMPTY); - } else { - return new Object[] { fgEmptyDebugContextElement }; - } - } - - @Override + if (fInput != null && + fInput.fPath != null) + { + return getChildren(TreePath.EMPTY); + } else { + return new Object[] { fgEmptyDebugContextElement }; + } + } + + @Override public void dispose() { - fInput = null; - } + fInput = null; + } - @Override + @Override public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { - if (newInput instanceof Input) { - fInput = ((Input)newInput); - } else { - fInput = null; - } - } - } - - private class LabelProvider extends BaseLabelProvider implements ITreePathLabelProvider { - @Override + if (newInput instanceof Input) { + fInput = ((Input)newInput); + } else { + fInput = null; + } + } + } + + private class LabelProvider extends BaseLabelProvider implements ITreePathLabelProvider { + @Override public void updateLabel(ViewerLabel label, TreePath elementPath) { - if (fgEmptyDebugContextElement.equals(elementPath.getLastSegment())) { - label.setText(LaunchViewMessages.Breadcrumb_NoActiveContext); - label.setImage(null); - } else { - ViewerLabel treeViewerLabel = fTreeViewer.getElementLabel(elementPath, null); - if (treeViewerLabel == null) { - label.setText(LaunchViewMessages.Breadcrumb_NoActiveContext); - label.setImage(null); - } else { - label.setText(treeViewerLabel.getText()); - label.setTooltipText(treeViewerLabel.getText()); - label.setImage(treeViewerLabel.getImage()); - label.setFont(treeViewerLabel.getFont()); - label.setForeground(treeViewerLabel.getForeground()); - label.setBackground(treeViewerLabel.getBackground()); - - } - } - } - } - - private final LaunchView fView; - private final TreeModelViewer fTreeViewer; - private final IDebugContextProvider fTreeViewerContextProvider; - private Input fBreadcrumbInput; - static final private Object fgEmptyDebugContextElement = new Object(); - private BreadcrumbViewer fViewer; - private boolean fRefreshBreadcrumb = false; - - private class BreadcrumbContextProvider extends AbstractDebugContextProvider implements IDebugContextListener, ISelectionChangedListener { - - private ISelection fBreadcrumbSelection = null; - - BreadcrumbContextProvider() { - super(fView); - fViewer.addSelectionChangedListener(this); - fBreadcrumbSelection = fViewer.getSelection(); - fTreeViewerContextProvider.addDebugContextListener(this); - } - - @Override + if (fgEmptyDebugContextElement.equals(elementPath.getLastSegment())) { + label.setText(LaunchViewMessages.Breadcrumb_NoActiveContext); + label.setImage(null); + } else { + ViewerLabel treeViewerLabel = fTreeViewer.getElementLabel(elementPath, null); + if (treeViewerLabel == null) { + label.setText(LaunchViewMessages.Breadcrumb_NoActiveContext); + label.setImage(null); + } else { + label.setText(treeViewerLabel.getText()); + label.setTooltipText(treeViewerLabel.getText()); + label.setImage(treeViewerLabel.getImage()); + label.setFont(treeViewerLabel.getFont()); + label.setForeground(treeViewerLabel.getForeground()); + label.setBackground(treeViewerLabel.getBackground()); + + } + } + } + } + + private final LaunchView fView; + private final TreeModelViewer fTreeViewer; + private final IDebugContextProvider fTreeViewerContextProvider; + private Input fBreadcrumbInput; + static final private Object fgEmptyDebugContextElement = new Object(); + private BreadcrumbViewer fViewer; + private boolean fRefreshBreadcrumb = false; + + private class BreadcrumbContextProvider extends AbstractDebugContextProvider implements IDebugContextListener, ISelectionChangedListener { + + private ISelection fBreadcrumbSelection = null; + + BreadcrumbContextProvider() { + super(fView); + fViewer.addSelectionChangedListener(this); + fBreadcrumbSelection = fViewer.getSelection(); + fTreeViewerContextProvider.addDebugContextListener(this); + } + + @Override public ISelection getActiveContext() { - if (fBreadcrumbSelection != null && !fBreadcrumbSelection.isEmpty()) { - return fBreadcrumbSelection; - } else { - ISelection treeViewerSelection = fTreeViewerContextProvider.getActiveContext(); - return treeViewerSelection != null ? treeViewerSelection : StructuredSelection.EMPTY; - } - } - - void dispose() { - fViewer.removeSelectionChangedListener(this); - fTreeViewerContextProvider.removeDebugContextListener(this); - } - - @Override + if (fBreadcrumbSelection != null && !fBreadcrumbSelection.isEmpty()) { + return fBreadcrumbSelection; + } else { + ISelection treeViewerSelection = fTreeViewerContextProvider.getActiveContext(); + return treeViewerSelection != null ? treeViewerSelection : StructuredSelection.EMPTY; + } + } + + void dispose() { + fViewer.removeSelectionChangedListener(this); + fTreeViewerContextProvider.removeDebugContextListener(this); + } + + @Override public void debugContextChanged(DebugContextEvent event) { - fire(new DebugContextEvent(this, getActiveContext(), event.getFlags())); - } + fire(new DebugContextEvent(this, getActiveContext(), event.getFlags())); + } - @Override + @Override public void selectionChanged(SelectionChangedEvent event) { - ISelection oldContext = getActiveContext(); - fBreadcrumbSelection = event.getSelection(); - if (!getActiveContext().equals(oldContext)) { - fire(new DebugContextEvent(this, getActiveContext(), DebugContextEvent.ACTIVATED)); - } - } - } - - private BreadcrumbContextProvider fBreadcrumbContextProvider; - - public LaunchViewBreadcrumb(LaunchView view, TreeModelViewer treeViewer, IDebugContextProvider contextProvider) { - fView = view; - fTreeViewer = treeViewer; - fTreeViewer.addLabelUpdateListener(this); - fTreeViewerContextProvider = contextProvider; - fBreadcrumbInput = new Input( getPathForSelection(fTreeViewerContextProvider.getActiveContext()) ); - fTreeViewerContextProvider.addDebugContextListener(this); - } - - @Override + ISelection oldContext = getActiveContext(); + fBreadcrumbSelection = event.getSelection(); + if (!getActiveContext().equals(oldContext)) { + fire(new DebugContextEvent(this, getActiveContext(), DebugContextEvent.ACTIVATED)); + } + } + } + + private BreadcrumbContextProvider fBreadcrumbContextProvider; + + public LaunchViewBreadcrumb(LaunchView view, TreeModelViewer treeViewer, IDebugContextProvider contextProvider) { + fView = view; + fTreeViewer = treeViewer; + fTreeViewer.addLabelUpdateListener(this); + fTreeViewerContextProvider = contextProvider; + fBreadcrumbInput = new Input( getPathForSelection(fTreeViewerContextProvider.getActiveContext()) ); + fTreeViewerContextProvider.addDebugContextListener(this); + } + + @Override protected void activateBreadcrumb() { - } + } - @Override + @Override protected void deactivateBreadcrumb() { - if (fViewer.isDropDownOpen()) { - Shell shell = fViewer.getDropDownShell(); - if (shell != null && !shell.isDisposed()) { - shell.close(); - } - } - } - - @Override + if (fViewer.isDropDownOpen()) { + Shell shell = fViewer.getDropDownShell(); + if (shell != null && !shell.isDisposed()) { + shell.close(); + } + } + } + + @Override protected BreadcrumbViewer createViewer(Composite parent) { - fViewer = new BreadcrumbViewer(parent, SWT.NONE) { - @Override + fViewer = new BreadcrumbViewer(parent, SWT.NONE) { + @Override protected Control createDropDown(Composite dropDownParent, IBreadcrumbDropDownSite site, TreePath path) { - return createDropDownControl(dropDownParent, site, path); - } - }; + return createDropDownControl(dropDownParent, site, path); + } + }; - // Force the layout of the breadcrumb viewer so that we may calcualte - // its proper size. - parent.pack(true); + // Force the layout of the breadcrumb viewer so that we may calcualte + // its proper size. + parent.pack(true); - fViewer.setContentProvider(new ContentProvider()); - fViewer.setLabelProvider(new LabelProvider()); + fViewer.setContentProvider(new ContentProvider()); + fViewer.setLabelProvider(new LabelProvider()); - createMenuManager(); + createMenuManager(); - fViewer.setInput(getCurrentInput()); + fViewer.setInput(getCurrentInput()); - fBreadcrumbContextProvider = new BreadcrumbContextProvider(); + fBreadcrumbContextProvider = new BreadcrumbContextProvider(); - return fViewer; - } + return fViewer; + } - protected void createMenuManager() { - MenuManager menuMgr = new MenuManager("#PopUp"); //$NON-NLS-1$ - menuMgr.setRemoveAllWhenShown(true); - menuMgr.addMenuListener(new IMenuListener() { - @Override + protected void createMenuManager() { + MenuManager menuMgr = new MenuManager("#PopUp"); //$NON-NLS-1$ + menuMgr.setRemoveAllWhenShown(true); + menuMgr.addMenuListener(new IMenuListener() { + @Override public void menuAboutToShow(IMenuManager mgr) { - fView.fillContextMenu(mgr); - } - }); - final Menu menu= menuMgr.createContextMenu(fViewer.getControl()); - - // register the context menu such that other plug-ins may contribute to it - if (fView.getSite() != null) { - fView.getSite().registerContextMenu(menuMgr, fViewer); - } - fView.addContextMenuManager(menuMgr); - - fViewer.addMenuDetectListener(new MenuDetectListener() { - @Override + fView.fillContextMenu(mgr); + } + }); + final Menu menu= menuMgr.createContextMenu(fViewer.getControl()); + + // register the context menu such that other plug-ins may contribute to it + if (fView.getSite() != null) { + fView.getSite().registerContextMenu(menuMgr, fViewer); + } + fView.addContextMenuManager(menuMgr); + + fViewer.addMenuDetectListener(new MenuDetectListener() { + @Override public void menuDetected(MenuDetectEvent event) { - menu.setLocation(event.x + 10, event.y + 10); - menu.setVisible(true); - while (!menu.isDisposed() && menu.isVisible()) { - if (!menu.getDisplay().readAndDispatch()) { + menu.setLocation(event.x + 10, event.y + 10); + menu.setVisible(true); + while (!menu.isDisposed() && menu.isVisible()) { + if (!menu.getDisplay().readAndDispatch()) { menu.getDisplay().sleep(); } - } - } - }); - } + } + } + }); + } - @Override + @Override protected Object getCurrentInput() { - return fBreadcrumbInput; - } + return fBreadcrumbInput; + } - @Override + @Override protected boolean open(ISelection selection) { - // Let the drop-down control implementation itself handle activating a new context. - return false; - } + // Let the drop-down control implementation itself handle activating a new context. + return false; + } - @Override + @Override public void dispose() { - fTreeViewerContextProvider.removeDebugContextListener(this); - fTreeViewer.removeLabelUpdateListener(this); - if (fBreadcrumbContextProvider != null) { - fBreadcrumbContextProvider.dispose(); - fBreadcrumbContextProvider = null; - } - fViewer = null; - super.dispose(); - } - - @Override + fTreeViewerContextProvider.removeDebugContextListener(this); + fTreeViewer.removeLabelUpdateListener(this); + if (fBreadcrumbContextProvider != null) { + fBreadcrumbContextProvider.dispose(); + fBreadcrumbContextProvider = null; + } + fViewer = null; + super.dispose(); + } + + @Override public void debugContextChanged(DebugContextEvent event) { - if (fView.isBreadcrumbVisible()) { - fBreadcrumbInput = new Input(getPathForSelection(event.getContext())); - if ((event.getFlags() & DebugContextEvent.ACTIVATED) != 0) { - setInput(getCurrentInput()); - - // If the context was activated, then clear the selection in breadcrumb - // so that the activated context will become the active context for the - // window. - fViewer.setSelection(StructuredSelection.EMPTY); - } else { - refresh(); - } - } - } - - @Override + if (fView.isBreadcrumbVisible()) { + fBreadcrumbInput = new Input(getPathForSelection(event.getContext())); + if ((event.getFlags() & DebugContextEvent.ACTIVATED) != 0) { + setInput(getCurrentInput()); + + // If the context was activated, then clear the selection in breadcrumb + // so that the activated context will become the active context for the + // window. + fViewer.setSelection(StructuredSelection.EMPTY); + } else { + refresh(); + } + } + } + + @Override public void labelUpdateStarted(ILabelUpdate update) { - } + } - @Override + @Override public void labelUpdateComplete(ILabelUpdate update) { - if (fBreadcrumbInput != null && fBreadcrumbInput.fPath != null) { - if (fBreadcrumbInput.fPath.startsWith(update.getElementPath(), null)) { - synchronized (this) { - fRefreshBreadcrumb = true; - } - } - } - } - - @Override + if (fBreadcrumbInput != null && fBreadcrumbInput.fPath != null) { + if (fBreadcrumbInput.fPath.startsWith(update.getElementPath(), null)) { + synchronized (this) { + fRefreshBreadcrumb = true; + } + } + } + } + + @Override public void labelUpdatesBegin() { - } + } - @Override + @Override public void labelUpdatesComplete() { - boolean refresh = false; - synchronized(this) { - refresh = fRefreshBreadcrumb; - fRefreshBreadcrumb = false; - } - if (fView.isBreadcrumbVisible() && refresh) { - new UIJob(fViewer.getControl().getDisplay(), "refresh breadcrumb") { //$NON-NLS-1$ - { setSystem(true); } - @Override + boolean refresh = false; + synchronized(this) { + refresh = fRefreshBreadcrumb; + fRefreshBreadcrumb = false; + } + if (fView.isBreadcrumbVisible() && refresh) { + new UIJob(fViewer.getControl().getDisplay(), "refresh breadcrumb") { //$NON-NLS-1$ + { setSystem(true); } + @Override public IStatus runInUIThread(IProgressMonitor monitor) { - refresh(); - return Status.OK_STATUS; - } - }.schedule(); - } - } + refresh(); + return Status.OK_STATUS; + } + }.schedule(); + } + } - IDebugContextProvider getContextProvider() { - return fBreadcrumbContextProvider; - } + IDebugContextProvider getContextProvider() { + return fBreadcrumbContextProvider; + } - int getHeight() { - return fViewer.getControl().getSize().y; - } + int getHeight() { + return fViewer.getControl().getSize().y; + } - void clearSelection() { - fViewer.setSelection(StructuredSelection.EMPTY); - } + void clearSelection() { + fViewer.setSelection(StructuredSelection.EMPTY); + } - private TreePath getPathForSelection(ISelection selection) { - if (selection instanceof ITreeSelection && !selection.isEmpty()) { - return ((ITreeSelection)selection).getPaths()[0]; - } - return null; - } + private TreePath getPathForSelection(ISelection selection) { + if (selection instanceof ITreeSelection && !selection.isEmpty()) { + return ((ITreeSelection)selection).getPaths()[0]; + } + return null; + } - public Control createDropDownControl(Composite parent, final IBreadcrumbDropDownSite site, TreePath paramPath) { + public Control createDropDownControl(Composite parent, final IBreadcrumbDropDownSite site, TreePath paramPath) { - TreeViewerDropDown dropDownTreeViewer = new TreeViewerDropDown() { + TreeViewerDropDown dropDownTreeViewer = new TreeViewerDropDown() { - SubTreeModelViewer fDropDownViewer; + SubTreeModelViewer fDropDownViewer; - @Override + @Override protected TreeViewer createTreeViewer(Composite composite, int style, final TreePath path) { - fDropDownViewer = new SubTreeModelViewer( - composite, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.VIRTUAL | SWT.POP_UP, - fTreeViewer.getPresentationContext()); - - Object launchViewInput = fTreeViewer.getInput(); - fDropDownViewer.setInput(launchViewInput, path.getParentPath()); - - ViewerFilter[] filters = fTreeViewer.getFilters(); - fDropDownViewer.setFilters(filters); - - ModelDelta stateDelta = new ModelDelta(launchViewInput, IModelDelta.NO_CHANGE); - fTreeViewer.saveElementState(TreePath.EMPTY, stateDelta, IModelDelta.EXPAND | IModelDelta.SELECT); - - // If we do not want to expand the elements in the drop-down. - // Prune the delta to only select the element in the - // top-most list. - if (!fView.getBreadcrumbDropDownAutoExpand()) { - final ModelDelta prunedDelta = new ModelDelta(launchViewInput, IModelDelta.NO_CHANGE); - stateDelta.accept(new IModelDeltaVisitor() { - ModelDelta copy = prunedDelta; - @Override + fDropDownViewer = new SubTreeModelViewer( + composite, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.VIRTUAL | SWT.POP_UP, + fTreeViewer.getPresentationContext()); + + Object launchViewInput = fTreeViewer.getInput(); + fDropDownViewer.setInput(launchViewInput, path.getParentPath()); + + ViewerFilter[] filters = fTreeViewer.getFilters(); + fDropDownViewer.setFilters(filters); + + ModelDelta stateDelta = new ModelDelta(launchViewInput, IModelDelta.NO_CHANGE); + fTreeViewer.saveElementState(TreePath.EMPTY, stateDelta, IModelDelta.EXPAND | IModelDelta.SELECT); + + // If we do not want to expand the elements in the drop-down. + // Prune the delta to only select the element in the + // top-most list. + if (!fView.getBreadcrumbDropDownAutoExpand()) { + final ModelDelta prunedDelta = new ModelDelta(launchViewInput, IModelDelta.NO_CHANGE); + stateDelta.accept(new IModelDeltaVisitor() { + ModelDelta copy = prunedDelta; + @Override public boolean visit(IModelDelta delta, int depth) { - TreePath deltaPath = getViewerTreePath(delta); - if (deltaPath.getSegmentCount() == 0) { - // skip copying the root element, only copy it's child count - copy.setChildCount(delta.getChildCount()); - } else if (deltaPath.getSegmentCount() != 0 && path.startsWith(deltaPath, null) ) { - // Build up the delta copy along the path of the drop-down element. - copy = copy.addNode( - delta.getElement(), delta.getIndex(), delta.getFlags(), delta.getChildCount()); - } - - // If the delta is for the drop-down element, set its select flag and stop traversing - // the delta.. - if (deltaPath.equals(path)) { - copy.setFlags(IModelDelta.SELECT | IModelDelta.REVEAL); - return false; - } - - // Continue traversing the delta. - return true; - } - - private TreePath getViewerTreePath(IModelDelta node) { + TreePath deltaPath = getViewerTreePath(delta); + if (deltaPath.getSegmentCount() == 0) { + // skip copying the root element, only copy it's child count + copy.setChildCount(delta.getChildCount()); + } else if (deltaPath.getSegmentCount() != 0 && path.startsWith(deltaPath, null) ) { + // Build up the delta copy along the path of the drop-down element. + copy = copy.addNode( + delta.getElement(), delta.getIndex(), delta.getFlags(), delta.getChildCount()); + } + + // If the delta is for the drop-down element, set its select flag and stop traversing + // the delta.. + if (deltaPath.equals(path)) { + copy.setFlags(IModelDelta.SELECT | IModelDelta.REVEAL); + return false; + } + + // Continue traversing the delta. + return true; + } + + private TreePath getViewerTreePath(IModelDelta node) { ArrayList<Object> list = new ArrayList<>(); - IModelDelta parentDelta = node.getParentDelta(); - while (parentDelta != null) { - list.add(0, node.getElement()); - node = parentDelta; - parentDelta = node.getParentDelta(); - } - return new TreePath(list.toArray()); - } - }); - stateDelta = prunedDelta; - } - - fDropDownViewer.updateViewer(stateDelta); - - fDropDownViewer.addLabelUpdateListener(new ILabelUpdateListener() { - @Override + IModelDelta parentDelta = node.getParentDelta(); + while (parentDelta != null) { + list.add(0, node.getElement()); + node = parentDelta; + parentDelta = node.getParentDelta(); + } + return new TreePath(list.toArray()); + } + }); + stateDelta = prunedDelta; + } + + fDropDownViewer.updateViewer(stateDelta); + + fDropDownViewer.addLabelUpdateListener(new ILabelUpdateListener() { + @Override public void labelUpdateComplete(ILabelUpdate update) {} - @Override + @Override public void labelUpdatesBegin() {} - @Override + @Override public void labelUpdateStarted(ILabelUpdate update) {} - @Override + @Override public void labelUpdatesComplete() { - new UIJob(fViewer.getControl().getDisplay(), "resize breadcrub dropdown") { //$NON-NLS-1$ - { setSystem(true); } - @Override + new UIJob(fViewer.getControl().getDisplay(), "resize breadcrub dropdown") { //$NON-NLS-1$ + { setSystem(true); } + @Override public IStatus runInUIThread(IProgressMonitor monitor) { - site.updateSize(); - return Status.OK_STATUS; - } - }.schedule(); - } - }); + site.updateSize(); + return Status.OK_STATUS; + } + }.schedule(); + } + }); - return fDropDownViewer; - } + return fDropDownViewer; + } - @Override + @Override protected void openElement(ISelection selection) { - if (fTreeViewer.getControl().isDisposed()) { - return; - } - - if (selection != null && (selection instanceof ITreeSelection) && !selection.isEmpty()) { - // Create the path to the root element of the drop-down viewer. Need to calcualte - // indexes and counts for the delta in order for the selection from the drop-down - // viewer to work properly. - TreeModelContentProvider contentProvider = (TreeModelContentProvider)fTreeViewer.getContentProvider(); - TreePath path = TreePath.EMPTY; - int count = fTreeViewer.getChildCount(path); - count = contentProvider.viewToModelCount(path, count); - ModelDelta rootDelta = - new ModelDelta(fTreeViewer.getInput(), -1, IModelDelta.NO_CHANGE, count); - TreePath rootPath = fDropDownViewer.getRootPath(); - ModelDelta delta = rootDelta; - for (int i = 0; i < rootPath.getSegmentCount(); i++) { - Object element = rootPath.getSegment(i); - int index = fTreeViewer.findElementIndex(path, element); - index = contentProvider.viewToModelIndex(path, index); - path = path.createChildPath(element); - count = fTreeViewer.getChildCount(path); - count = contentProvider.viewToModelCount(path, count); - delta = delta.addNode(rootPath.getSegment(i), index, IModelDelta.NO_CHANGE, count); - } - - // Create the delta and save the drop-down viewer's state to it. - fDropDownViewer.saveElementState(TreePath.EMPTY, delta, IModelDelta.EXPAND | IModelDelta.SELECT); - - // Add the IModelDelta.FORCE flag to override the current selection in view. - rootDelta.accept(new IModelDeltaVisitor(){ - @Override + if (fTreeViewer.getControl().isDisposed()) { + return; + } + + if (selection != null && (selection instanceof ITreeSelection) && !selection.isEmpty()) { + // Create the path to the root element of the drop-down viewer. Need to calcualte + // indexes and counts for the delta in order for the selection from the drop-down + // viewer to work properly. + TreeModelContentProvider contentProvider = (TreeModelContentProvider)fTreeViewer.getContentProvider(); + TreePath path = TreePath.EMPTY; + int count = fTreeViewer.getChildCount(path); + count = contentProvider.viewToModelCount(path, count); + ModelDelta rootDelta = + new ModelDelta(fTreeViewer.getInput(), -1, IModelDelta.NO_CHANGE, count); + TreePath rootPath = fDropDownViewer.getRootPath(); + ModelDelta delta = rootDelta; + for (int i = 0; i < rootPath.getSegmentCount(); i++) { + Object element = rootPath.getSegment(i); + int index = fTreeViewer.findElementIndex(path, element); + index = contentProvider.viewToModelIndex(path, index); + path = path.createChildPath(element); + count = fTreeViewer.getChildCount(path); + count = contentProvider.viewToModelCount(path, count); + delta = delta.addNode(rootPath.getSegment(i), index, IModelDelta.NO_CHANGE, count); + } + + // Create the delta and save the drop-down viewer's state to it. + fDropDownViewer.saveElementState(TreePath.EMPTY, delta, IModelDelta.EXPAND | IModelDelta.SELECT); + + // Add the IModelDelta.FORCE flag to override the current selection in view. + rootDelta.accept(new IModelDeltaVisitor(){ + @Override public boolean visit(IModelDelta paramDelta, int depth) { - if ((paramDelta.getFlags() & IModelDelta.SELECT) != 0) { - ((ModelDelta)paramDelta).setFlags(paramDelta.getFlags() | IModelDelta.FORCE); - } - return true; - } - }); - - // If elements in the drop-down were auto-expanded, then collapse the drop-down's sub tree in the - // full viewer. After the drop-down's full expansion state is saved out to the tree viewer, the - // tree viewer will accurately reflect the state changes made by the user. - if (fView.getBreadcrumbDropDownAutoExpand()) { - fTreeViewer.collapseToLevel(rootPath, AbstractTreeViewer.ALL_LEVELS); - } - - // Save the state of the drop-down out into the tree viewer. - fTreeViewer.updateViewer(rootDelta); - fViewer.setSelection(StructuredSelection.EMPTY); - site.close(); - } - - super.openElement(selection); - } - }; - - - return dropDownTreeViewer.createDropDown(parent, site, paramPath); - } + if ((paramDelta.getFlags() & IModelDelta.SELECT) != 0) { + ((ModelDelta)paramDelta).setFlags(paramDelta.getFlags() | IModelDelta.FORCE); + } + return true; + } + }); + + // If elements in the drop-down were auto-expanded, then collapse the drop-down's sub tree in the + // full viewer. After the drop-down's full expansion state is saved out to the tree viewer, the + // tree viewer will accurately reflect the state changes made by the user. + if (fView.getBreadcrumbDropDownAutoExpand()) { + fTreeViewer.collapseToLevel(rootPath, AbstractTreeViewer.ALL_LEVELS); + } + + // Save the state of the drop-down out into the tree viewer. + fTreeViewer.updateViewer(rootDelta); + fViewer.setSelection(StructuredSelection.EMPTY); + site.close(); + } + + super.openElement(selection); + } + }; + + + return dropDownTreeViewer.createDropDown(parent, site, paramPath); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/LaunchViewCopyToClipboardActionDelegate.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/LaunchViewCopyToClipboardActionDelegate.java index 74215ac06..6edd222ea 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/LaunchViewCopyToClipboardActionDelegate.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/LaunchViewCopyToClipboardActionDelegate.java @@ -40,58 +40,58 @@ import org.eclipse.swt.widgets.Widget; */ public class LaunchViewCopyToClipboardActionDelegate extends VirtualCopyToClipboardActionDelegate { - @Override + @Override protected TreeItem[] getSelectedItems(TreeModelViewer clientViewer) { - LaunchView view = (LaunchView)getView(); - if (view.isBreadcrumbVisible()) { - ISelection selection = getSelection(); - if (selection instanceof ITreeSelection && getViewer() != null) { - TreePath path = TreePath.EMPTY; - if (!selection.isEmpty()) { - path = ((ITreeSelection)selection).getPaths()[0]; - } - return getSelectedItemsInTreeViewer(getViewer(), path); - } - return new TreeItem[0]; - } else { - // Return tree selection plus children. - TreeItem[] selection = clientViewer.getTree().getSelection(); + LaunchView view = (LaunchView)getView(); + if (view.isBreadcrumbVisible()) { + ISelection selection = getSelection(); + if (selection instanceof ITreeSelection && getViewer() != null) { + TreePath path = TreePath.EMPTY; + if (!selection.isEmpty()) { + path = ((ITreeSelection)selection).getPaths()[0]; + } + return getSelectedItemsInTreeViewer(getViewer(), path); + } + return new TreeItem[0]; + } else { + // Return tree selection plus children. + TreeItem[] selection = clientViewer.getTree().getSelection(); Set<Widget> set = new HashSet<>(); - collectChildItems(set, selection); - return set.toArray(new TreeItem[set.size()]); - } - } + collectChildItems(set, selection); + return set.toArray(new TreeItem[set.size()]); + } + } - /** - * Calculates selected items in viewer for given tree path. - * @param viewer Viewer to get items from. - * @param path Path for desired selection. - * @return Selected items. If no selected items found, returns an empty - * array. - */ - private TreeItem[] getSelectedItemsInTreeViewer(TreeModelViewer viewer, TreePath path) { - Widget item = viewer.findItem(path); + /** + * Calculates selected items in viewer for given tree path. + * @param viewer Viewer to get items from. + * @param path Path for desired selection. + * @return Selected items. If no selected items found, returns an empty + * array. + */ + private TreeItem[] getSelectedItemsInTreeViewer(TreeModelViewer viewer, TreePath path) { + Widget item = viewer.findItem(path); Set<Widget> set = new HashSet<>(); - if (item instanceof TreeItem) { - set.add(item); - if (((TreeItem) item).getExpanded()) { - collectChildItems(set, ((TreeItem) item).getItems()); - } - } else if (item instanceof Tree) { - collectChildItems(set, ((Tree)item).getItems()); - } - return set.toArray(new TreeItem[set.size()]); - } + if (item instanceof TreeItem) { + set.add(item); + if (((TreeItem) item).getExpanded()) { + collectChildItems(set, ((TreeItem) item).getItems()); + } + } else if (item instanceof Tree) { + collectChildItems(set, ((Tree)item).getItems()); + } + return set.toArray(new TreeItem[set.size()]); + } private void collectChildItems(Set<Widget> set, TreeItem[] items) { - if (items == null) { - return; - } - for (int i = 0; i < items.length; i++) { - set.add(items[i]); - if (items[i].getExpanded()) { - collectChildItems(set, items[i].getItems()); - } - } - } + if (items == null) { + return; + } + for (int i = 0; i < items.length; i++) { + set.add(items[i]); + if (items[i].getExpanded()) { + collectChildItems(set, items[i].getItems()); + } + } + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/LaunchViewMessages.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/LaunchViewMessages.java index 4e054ec35..281a42437 100755 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/LaunchViewMessages.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/LaunchViewMessages.java @@ -20,24 +20,24 @@ public class LaunchViewMessages extends NLS { private static final String BUNDLE_NAME = "org.eclipse.debug.internal.ui.views.launch.LaunchViewMessages";//$NON-NLS-1$ public static String Breadcrumb_NoActiveContext; - public static String LaunchView_ViewModeMenu_label; - public static String DebugViewModeAction_Auto_label; - public static String DebugViewModeAction_Auto_tooltip; - public static String DebugViewModeAction_Auto_description; - public static String DebugViewModeAction_Full_label; - public static String DebugViewModeAction_Full_tooltip; - public static String DebugViewModeAction_Full_description; - public static String DebugViewModeAction_Compact_label; - public static String DebugViewModeAction_Compact_tooltip; - public static String DebugViewModeAction_Compact_description; + public static String LaunchView_ViewModeMenu_label; + public static String DebugViewModeAction_Auto_label; + public static String DebugViewModeAction_Auto_tooltip; + public static String DebugViewModeAction_Auto_description; + public static String DebugViewModeAction_Full_label; + public static String DebugViewModeAction_Full_tooltip; + public static String DebugViewModeAction_Full_description; + public static String DebugViewModeAction_Compact_label; + public static String DebugViewModeAction_Compact_tooltip; + public static String DebugViewModeAction_Compact_description; - public static String BreadcrumbDropDownAutoExpandAction_label; - public static String BreadcrumbDropDownAutoExpandAction_tooltip; - public static String BreadcrumbDropDownAutoExpandAction_description; + public static String BreadcrumbDropDownAutoExpandAction_label; + public static String BreadcrumbDropDownAutoExpandAction_tooltip; + public static String BreadcrumbDropDownAutoExpandAction_description; - public static String DebugToolBarAction_View_label; - public static String DebugToolBarAction_View_tooltip; - public static String DebugToolBarAction_View_description; + public static String DebugToolBarAction_View_label; + public static String DebugToolBarAction_View_tooltip; + public static String DebugToolBarAction_View_description; static { // load message values from bundle file diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/AsyncTableRenderingCellModifier.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/AsyncTableRenderingCellModifier.java index a48396771..9312bf799 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/AsyncTableRenderingCellModifier.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/AsyncTableRenderingCellModifier.java @@ -40,16 +40,16 @@ import org.eclipse.swt.widgets.TableItem; // to plug cell modifier in case the element is not MemorySegment public class AsyncTableRenderingCellModifier implements ICellModifier { - private AbstractAsyncTableRendering fRendering; - private boolean fMBSupportsValueModification = false; + private AbstractAsyncTableRendering fRendering; + private boolean fMBSupportsValueModification = false; - private ICellModifier fCustomModifier; + private ICellModifier fCustomModifier; - public AsyncTableRenderingCellModifier(AbstractAsyncTableRendering rendering, ICellModifier customModifier) { - fRendering = rendering; - fCustomModifier = customModifier; + public AsyncTableRenderingCellModifier(AbstractAsyncTableRendering rendering, ICellModifier customModifier) { + fRendering = rendering; + fCustomModifier = customModifier; - Job job = new Job("AsyncTableRenderingCellModifier"){ //$NON-NLS-1$ + Job job = new Job("AsyncTableRenderingCellModifier"){ //$NON-NLS-1$ @Override protected IStatus run(IProgressMonitor monitor) { @@ -58,126 +58,126 @@ public class AsyncTableRenderingCellModifier implements ICellModifier { }}; job.setSystem(true); job.schedule(); - } + } - @Override + @Override public boolean canModify(Object element, String property) { - boolean canModify = true; - try { - if (!(element instanceof MemorySegment)) { + boolean canModify = true; + try { + if (!(element instanceof MemorySegment)) { return false; } - if (!isValueModificationSupported()) { - return false; - } - - MemorySegment line = (MemorySegment) element; - if (TableRenderingLine.P_ADDRESS.equals(property)) { - return false; - } - - // property is stored as number of addressable unit away from the - // line address - // to calculate offset to the memory line array, offset = - // numberofAddressableUnit * addressableSize - int addressableSize = getAddressableSize(); - - int offset = Integer.valueOf(property, 16).intValue() * addressableSize; - - MemoryByte[] bytes = line.getBytes(offset, fRendering.getBytesPerColumn()); - - if (fCustomModifier != null) - { - BigInteger address = line.getAddress().add(BigInteger.valueOf(offset)); - MemoryRenderingElement mElement = new MemoryRenderingElement(fRendering, address, bytes); - return fCustomModifier.canModify(mElement, null); - } - - for (int i = 0; i < bytes.length; i++) { - if (!bytes[i].isWritable()) { - canModify = false; - } - } - return canModify; - } catch (NumberFormatException e) { - canModify = false; - return canModify; - } - } - - /** - * @return the rendering addressable size - */ - private int getAddressableSize() { - int addressableSize = fRendering.getAddressableSize(); - if (addressableSize < 1) { + if (!isValueModificationSupported()) { + return false; + } + + MemorySegment line = (MemorySegment) element; + if (TableRenderingLine.P_ADDRESS.equals(property)) { + return false; + } + + // property is stored as number of addressable unit away from the + // line address + // to calculate offset to the memory line array, offset = + // numberofAddressableUnit * addressableSize + int addressableSize = getAddressableSize(); + + int offset = Integer.valueOf(property, 16).intValue() * addressableSize; + + MemoryByte[] bytes = line.getBytes(offset, fRendering.getBytesPerColumn()); + + if (fCustomModifier != null) + { + BigInteger address = line.getAddress().add(BigInteger.valueOf(offset)); + MemoryRenderingElement mElement = new MemoryRenderingElement(fRendering, address, bytes); + return fCustomModifier.canModify(mElement, null); + } + + for (int i = 0; i < bytes.length; i++) { + if (!bytes[i].isWritable()) { + canModify = false; + } + } + return canModify; + } catch (NumberFormatException e) { + canModify = false; + return canModify; + } + } + + /** + * @return the rendering addressable size + */ + private int getAddressableSize() { + int addressableSize = fRendering.getAddressableSize(); + if (addressableSize < 1) { addressableSize = 1; } - return addressableSize; - } + return addressableSize; + } - @Override + @Override public Object getValue(Object element, String property) { - // give back the value of the column + // give back the value of the column - if (!(element instanceof MemorySegment)) { + if (!(element instanceof MemorySegment)) { return null; } - MemorySegment line = (MemorySegment) element; - try { - if (TableRenderingLine.P_ADDRESS.equals(property)) { + MemorySegment line = (MemorySegment) element; + try { + if (TableRenderingLine.P_ADDRESS.equals(property)) { return line.getAddress(); } - int offsetToLineBuffer = Integer.valueOf(property, 16).intValue() * getAddressableSize(); - MemoryByte[] memory = line.getBytes(offsetToLineBuffer, fRendering.getBytesPerColumn()); + int offsetToLineBuffer = Integer.valueOf(property, 16).intValue() * getAddressableSize(); + MemoryByte[] memory = line.getBytes(offsetToLineBuffer, fRendering.getBytesPerColumn()); - int offsetFromLineAddress = Integer.valueOf(property, 16).intValue(); - BigInteger address = line.getAddress().add(BigInteger.valueOf(offsetFromLineAddress)); + int offsetFromLineAddress = Integer.valueOf(property, 16).intValue(); + BigInteger address = line.getAddress().add(BigInteger.valueOf(offsetFromLineAddress)); - if (fCustomModifier != null) - { - MemoryRenderingElement mElement = new MemoryRenderingElement(fRendering, address, memory); - return fCustomModifier.getValue(mElement, null); - } + if (fCustomModifier != null) + { + MemoryRenderingElement mElement = new MemoryRenderingElement(fRendering, address, memory); + return fCustomModifier.getValue(mElement, null); + } - // ask the rendering for a string representation of the bytes - return fRendering.getString(fRendering.getRenderingId(), address, memory); + // ask the rendering for a string representation of the bytes + return fRendering.getString(fRendering.getRenderingId(), address, memory); - } catch (NumberFormatException e) { - return "00"; //$NON-NLS-1$ - } - } + } catch (NumberFormatException e) { + return "00"; //$NON-NLS-1$ + } + } - @Override + @Override public void modify(Object element, final String property, final Object value) { - MemorySegment segment = null; - if (element instanceof TableItem) { - Object data = ((TableItem)element).getData(); - if (data != null && data instanceof MemorySegment) { + MemorySegment segment = null; + if (element instanceof TableItem) { + Object data = ((TableItem)element).getData(); + if (data != null && data instanceof MemorySegment) { segment = (MemorySegment)data; } - } else if (element instanceof MemorySegment){ - segment = (MemorySegment) element; - } + } else if (element instanceof MemorySegment){ + segment = (MemorySegment) element; + } - if (segment == null) { + if (segment == null) { return; } - final MemorySegment line = segment; + final MemorySegment line = segment; - Job job = new Job("Set Values"){ //$NON-NLS-1$ + Job job = new Job("Set Values"){ //$NON-NLS-1$ @Override protected IStatus run(IProgressMonitor monitor) { try { - // calculate offset to update + // calculate offset to update final IMemoryBlock memoryBlk = fRendering.getMemoryBlock(); // number of addressable units from the line's start address @@ -198,7 +198,7 @@ public class AsyncTableRenderingCellModifier implements ICellModifier { address = address.add(BigInteger.valueOf(offsetFromLineAddress)); if (fCustomModifier != null) { - MemoryRenderingElement mElement = new MemoryRenderingElement(fRendering, address, oldArray); + MemoryRenderingElement mElement = new MemoryRenderingElement(fRendering, address, oldArray); fCustomModifier.modify(mElement, null, value); return Status.OK_STATUS; } @@ -209,77 +209,77 @@ public class AsyncTableRenderingCellModifier implements ICellModifier { return Status.OK_STATUS; } - byte[] bytes = null; - String oldValue = (String) getValue(line, property); - if (!oldValue.equals(value)) { - bytes = fRendering.getBytes(fRendering.getRenderingId(), address, oldArray, (String) value); + byte[] bytes = null; + String oldValue = (String) getValue(line, property); + if (!oldValue.equals(value)) { + bytes = fRendering.getBytes(fRendering.getRenderingId(), address, oldArray, (String) value); - if (bytes == null) { + if (bytes == null) { return Status.OK_STATUS; } - if (bytes.length == 0) { + if (bytes.length == 0) { return Status.OK_STATUS; } - if (bytes.length <= oldArray.length) { - boolean changed = false; - // check that the bytes returned has actually changed - for (int i = 0; i < bytes.length; i++) { - if (bytes[i] != oldArray[i].getValue()) { - changed = true; - break; - } - } - if (!changed) { + if (bytes.length <= oldArray.length) { + boolean changed = false; + // check that the bytes returned has actually changed + for (int i = 0; i < bytes.length; i++) { + if (bytes[i] != oldArray[i].getValue()) { + changed = true; + break; + } + } + if (!changed) { return Status.OK_STATUS; } - } - } else { - // return if value has not changed - return Status.OK_STATUS; - } + } + } else { + // return if value has not changed + return Status.OK_STATUS; + } - final byte[] newByteValues = bytes; + final byte[] newByteValues = bytes; - if (memoryBlk instanceof IMemoryBlockExtension) { + if (memoryBlk instanceof IMemoryBlockExtension) { ((IMemoryBlockExtension) memoryBlk).setValue(offsetFromMBBase, newByteValues); } else { memoryBlk.setValue(offsetFromMBBase.longValue(), newByteValues); } - } catch (DebugException e) { - MemoryViewUtil.openError(DebugUIMessages.MemoryViewCellModifier_failure_title, DebugUIMessages.MemoryViewCellModifier_failed, e); - } catch (NumberFormatException e) { - MemoryViewUtil.openError(DebugUIMessages.MemoryViewCellModifier_failure_title, DebugUIMessages.MemoryViewCellModifier_failed + "\n" + DebugUIMessages.MemoryViewCellModifier_data_is_invalid, null); //$NON-NLS-1$ - } - return Status.OK_STATUS; + } catch (DebugException e) { + MemoryViewUtil.openError(DebugUIMessages.MemoryViewCellModifier_failure_title, DebugUIMessages.MemoryViewCellModifier_failed, e); + } catch (NumberFormatException e) { + MemoryViewUtil.openError(DebugUIMessages.MemoryViewCellModifier_failure_title, DebugUIMessages.MemoryViewCellModifier_failed + "\n" + DebugUIMessages.MemoryViewCellModifier_data_is_invalid, null); //$NON-NLS-1$ + } + return Status.OK_STATUS; }}; - job.setSystem(true); - job.schedule(); - } + job.setSystem(true); + job.schedule(); + } - private BigInteger getOffset(IMemoryBlock memory, BigInteger lineAddress, int lineOffset) throws DebugException { + private BigInteger getOffset(IMemoryBlock memory, BigInteger lineAddress, int lineOffset) throws DebugException { - BigInteger memoryAddr; + BigInteger memoryAddr; - if (memory instanceof IMemoryBlockExtension) { - memoryAddr = ((IMemoryBlockExtension) memory).getBigBaseAddress(); - } else { - memoryAddr = BigInteger.valueOf(memory.getStartAddress()); - } + if (memory instanceof IMemoryBlockExtension) { + memoryAddr = ((IMemoryBlockExtension) memory).getBigBaseAddress(); + } else { + memoryAddr = BigInteger.valueOf(memory.getStartAddress()); + } - if (memoryAddr == null) + if (memoryAddr == null) { memoryAddr = new BigInteger("0"); //$NON-NLS-1$ } - return lineAddress.subtract(memoryAddr).add(BigInteger.valueOf(lineOffset)); - } + return lineAddress.subtract(memoryAddr).add(BigInteger.valueOf(lineOffset)); + } - private boolean isValueModificationSupported() - { - return fMBSupportsValueModification; - } + private boolean isValueModificationSupported() + { + return fMBSupportsValueModification; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/AsyncTableRenderingViewer.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/AsyncTableRenderingViewer.java index bdb80ff7d..cf12bcc2b 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/AsyncTableRenderingViewer.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/AsyncTableRenderingViewer.java @@ -310,7 +310,7 @@ public class AsyncTableRenderingViewer extends AsyncVirtualContentTableViewer { private synchronized void attemptSetKeySelection() { if (fPendingSelection != null) { - doAttemptSetKeySelection(fPendingSelection); + doAttemptSetKeySelection(fPendingSelection); } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/CreateRendering.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/CreateRendering.java index e0617e1b9..4db332fb7 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/CreateRendering.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/CreateRendering.java @@ -96,7 +96,7 @@ public class CreateRendering extends AbstractMemoryRendering implements IMemoryR String label = ((IMemoryRenderingType)element).getLabel(); return label; } - return element.toString(); + return element.toString(); } @Override diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/GoToAddressAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/GoToAddressAction.java index 3ee45d4db..c3e126253 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/GoToAddressAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/GoToAddressAction.java @@ -47,7 +47,7 @@ import org.eclipse.ui.PlatformUI; */ public class GoToAddressAction extends Action { - private IMemoryRenderingContainer fContainer; + private IMemoryRenderingContainer fContainer; private IRepositionableMemoryRendering fRendering; public GoToAddressAction(IMemoryRenderingContainer container, IRepositionableMemoryRendering rendering) diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/HexIntegerRendering.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/HexIntegerRendering.java index 5c811e18f..53280662e 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/HexIntegerRendering.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/HexIntegerRendering.java @@ -38,13 +38,13 @@ public class HexIntegerRendering extends AbstractIntegerRendering { String paddedStr = DebugUIPlugin.getDefault().getPreferenceStore().getString(IDebugUIConstants.PREF_PADDED_STR); - if (endianess == RenderingsUtil.LITTLE_ENDIAN) { - MemoryByte[] swapped = new MemoryByte[data.length]; - for (int i = 0; i < data.length; i++){ - swapped[data.length-i-1] = data[i]; - } - data = swapped; - } + if (endianess == RenderingsUtil.LITTLE_ENDIAN) { + MemoryByte[] swapped = new MemoryByte[data.length]; + for (int i = 0; i < data.length; i++){ + swapped[data.length-i-1] = data[i]; + } + data = swapped; + } for (int i=0; i<data.length; i++) { @@ -62,20 +62,20 @@ public class HexIntegerRendering extends AbstractIntegerRendering { return strBuffer.toString().toUpperCase(); } - /** - * @todo davidp needs to add a method comment. - * @param data - * @return - */ - private int getEndianness (MemoryByte[] data) { - // if the user has not set an endianess to the rendering - // take default - int endianess = getDisplayEndianess(); - if (endianess == RenderingsUtil.ENDIANESS_UNKNOWN) { + /** + * @todo davidp needs to add a method comment. + * @param data + * @return + */ + private int getEndianness (MemoryByte[] data) { + // if the user has not set an endianess to the rendering + // take default + int endianess = getDisplayEndianess(); + if (endianess == RenderingsUtil.ENDIANESS_UNKNOWN) { endianess = getBytesEndianess(data); } - return endianess; - } + return endianess; + } @Override public byte[] getBytes(String dataType, BigInteger address, @@ -85,13 +85,13 @@ public class HexIntegerRendering extends AbstractIntegerRendering { byte[] bytes = RenderingsUtil.convertHexStringToByteArray(data, currentValues.length, getNumCharsPerByte()); - if (endianess == RenderingsUtil.LITTLE_ENDIAN) { - byte[] swapped = new byte[bytes.length]; - for (int i = 0; i < bytes.length; i++){ - swapped[bytes.length-i-1] = bytes[i]; - } - bytes = swapped; - } + if (endianess == RenderingsUtil.LITTLE_ENDIAN) { + byte[] swapped = new byte[bytes.length]; + for (int i = 0; i < bytes.length; i++){ + swapped[bytes.length-i-1] = bytes[i]; + } + bytes = swapped; + } return bytes; } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/RenderingsUtil.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/RenderingsUtil.java index 5e64ee17d..b39ea5133 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/RenderingsUtil.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/RenderingsUtil.java @@ -53,23 +53,23 @@ public class RenderingsUtil { array = temp; return array; } - byte[] temp = new byte[size]; - - for (int i=0; i<size - array.length; i++) - { - temp[i] = 0; - } - - int j=0; - // fill up the rest of the array - for (int i=size - array.length; i<size; i++) - { - temp[i] = array[j]; - j++; - } - - array = temp; - return array; + byte[] temp = new byte[size]; + + for (int i=0; i<size - array.length; i++) + { + temp[i] = 0; + } + + int j=0; + // fill up the rest of the array + for (int i=size - array.length; i<size; i++) + { + temp[i] = array[j]; + j++; + } + + array = temp; + return array; } static public BigInteger convertByteArrayToUnsignedLong(byte[] array, int endianess) @@ -130,15 +130,15 @@ public class RenderingsUtil { } return value; } - long value = 0; - for (int i=0; i< 8; i++) - { - long b = array[i]; - b &= 0xff; - value |= (b<<((7-i)*8)); - } + long value = 0; + for (int i=0; i< 8; i++) + { + long b = array[i]; + b &= 0xff; + value |= (b<<((7-i)*8)); + } - return value; + return value; } static public BigInteger convertByteArrayToSignedBigInt(byte[] array, int endianess) @@ -162,8 +162,8 @@ public class RenderingsUtil { BigInteger value = new BigInteger(holder); return value; } - BigInteger value = new BigInteger(array); - return value; + BigInteger value = new BigInteger(array); + return value; } static public BigInteger convertByteArrayToSignedBigInt(byte[] array, int endianess, int arraySize) @@ -187,8 +187,8 @@ public class RenderingsUtil { BigInteger value = new BigInteger(holder); return value; } - BigInteger value = new BigInteger(array); - return value; + BigInteger value = new BigInteger(array); + return value; } static public BigInteger convertByteArrayToUnsignedBigInt(byte[] array, int endianess) @@ -284,15 +284,15 @@ public class RenderingsUtil { } return value; } - int value = 0; - for (int i=0; i< 4; i++) - { - int b = array[i]; - b &= 0xff; - value |= (b<<((3-i)*8)); - } + int value = 0; + for (int i=0; i< 4; i++) + { + int b = array[i]; + b &= 0xff; + value |= (b<<((3-i)*8)); + } - return value; + return value; } /** @@ -318,14 +318,14 @@ public class RenderingsUtil { } return value; } - short value = 0; - for (int i=0; i< 2; i++) - { - short b = array[i]; - b &= 0xff; - value |= (b<<((1-i)*8)); - } - return value; + short value = 0; + for (int i=0; i< 2; i++) + { + short b = array[i]; + b &= 0xff; + value |= (b<<((1-i)*8)); + } + return value; } /** @@ -347,12 +347,12 @@ public class RenderingsUtil { } return buf; } - for (int j=15; j>=0; j--) - { - BigInteger x = i.shiftRight((15-j)*8); - buf[j] = x.byteValue(); - } - return buf; + for (int j=15; j>=0; j--) + { + BigInteger x = i.shiftRight((15-j)*8); + buf[j] = x.byteValue(); + } + return buf; } static public byte[] convertSignedBigIntToByteArray(BigInteger i, int endianess, int arraySize) @@ -368,12 +368,12 @@ public class RenderingsUtil { } return buf; } - for (int j=arraySize-1; j>=0; j--) - { - BigInteger x = i.shiftRight((arraySize-1-j)*8); - buf[j] = x.byteValue(); - } - return buf; + for (int j=arraySize-1; j>=0; j--) + { + BigInteger x = i.shiftRight((arraySize-1-j)*8); + buf[j] = x.byteValue(); + } + return buf; } /** @@ -395,12 +395,12 @@ public class RenderingsUtil { } return buf; } - for (int j=31; j>=0; j--) - { - BigInteger x = i.shiftRight((31-j)*8); - buf[j] = x.byteValue(); - } - return buf; + for (int j=31; j>=0; j--) + { + BigInteger x = i.shiftRight((31-j)*8); + buf[j] = x.byteValue(); + } + return buf; } static public byte[] convertUnsignedBigIntToByteArray(BigInteger i, int endianess, int arraySize) @@ -416,12 +416,12 @@ public class RenderingsUtil { } return buf; } - for (int j=(arraySize*2)-1; j>=0; j--) - { - BigInteger x = i.shiftRight(((arraySize*2)-1-j)*8); - buf[j] = x.byteValue(); - } - return buf; + for (int j=(arraySize*2)-1; j>=0; j--) + { + BigInteger x = i.shiftRight(((arraySize*2)-1-j)*8); + buf[j] = x.byteValue(); + } + return buf; } /** @@ -442,11 +442,11 @@ public class RenderingsUtil { } return buf; } - for (int j=7; j>=0; j--) - { - buf[j] = Long.valueOf(i>>(7-j)*8).byteValue(); - } - return buf; + for (int j=7; j>=0; j--) + { + buf[j] = Long.valueOf(i>>(7-j)*8).byteValue(); + } + return buf; } /** @@ -539,17 +539,17 @@ public class RenderingsUtil { */ public static byte[] convertHexStringToByteArray(String str, int numBytes, int numCharsPerByte) throws NumberFormatException { - if (str.length() == 0) - return null; + if (str.length() == 0) + return null; StringBuilder buf = new StringBuilder(str); - // pad string with zeros - int requiredPadding = numBytes * numCharsPerByte - str.length(); - while (requiredPadding > 0) { - buf.insert(0, "0"); //$NON-NLS-1$ - requiredPadding--; - } + // pad string with zeros + int requiredPadding = numBytes * numCharsPerByte - str.length(); + while (requiredPadding > 0) { + buf.insert(0, "0"); //$NON-NLS-1$ + requiredPadding--; + } byte[] bytes = new byte[numBytes]; str = buf.toString(); diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/TableRenderingCellModifier.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/TableRenderingCellModifier.java index c1b8e826a..c88de3fff 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/TableRenderingCellModifier.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/TableRenderingCellModifier.java @@ -33,229 +33,229 @@ import org.eclipse.swt.widgets.TableItem; */ public class TableRenderingCellModifier implements ICellModifier { - private boolean editActionInvoked = false; + private boolean editActionInvoked = false; - private AbstractTableRendering fRendering; + private AbstractTableRendering fRendering; - public TableRenderingCellModifier(AbstractTableRendering rendering) { - fRendering = rendering; - } + public TableRenderingCellModifier(AbstractTableRendering rendering) { + fRendering = rendering; + } - @Override + @Override public boolean canModify(Object element, String property) { - boolean canModify = true; - try { - if (!(element instanceof TableRenderingLine)) { + boolean canModify = true; + try { + if (!(element instanceof TableRenderingLine)) { return false; } - if (!editActionInvoked) { + if (!editActionInvoked) { return false; } - if (fRendering == null) { + if (fRendering == null) { return false; } - if (fRendering.getMemoryBlock().supportsValueModification() == false) { - return false; - } - - TableRenderingLine line = (TableRenderingLine) element; - if (TableRenderingLine.P_ADDRESS.equals(property)) { - return false; - } - - // property is stored as number of addressable unit away from the - // line address - // to calculate offset to the memory line array, offset = - // numberofAddressableUnit * addressableSize - int addressableSize = getAddressableSize(); - - int offset = Integer.valueOf(property, 16).intValue() * addressableSize; - int end = offset + fRendering.getBytesPerColumn(); - - for (int i = offset; i < end; i++) { - MemoryByte oneByte = line.getByte(i); - - if (!oneByte.isWritable()) { - canModify = false; - } - } - return canModify; - } catch (NumberFormatException e) { - canModify = false; - return canModify; - } - } - - /** - * @return - */ - private int getAddressableSize() { - int addressableSize = fRendering.getAddressableSize(); - if (addressableSize < 1) { + if (fRendering.getMemoryBlock().supportsValueModification() == false) { + return false; + } + + TableRenderingLine line = (TableRenderingLine) element; + if (TableRenderingLine.P_ADDRESS.equals(property)) { + return false; + } + + // property is stored as number of addressable unit away from the + // line address + // to calculate offset to the memory line array, offset = + // numberofAddressableUnit * addressableSize + int addressableSize = getAddressableSize(); + + int offset = Integer.valueOf(property, 16).intValue() * addressableSize; + int end = offset + fRendering.getBytesPerColumn(); + + for (int i = offset; i < end; i++) { + MemoryByte oneByte = line.getByte(i); + + if (!oneByte.isWritable()) { + canModify = false; + } + } + return canModify; + } catch (NumberFormatException e) { + canModify = false; + return canModify; + } + } + + /** + * @return + */ + private int getAddressableSize() { + int addressableSize = fRendering.getAddressableSize(); + if (addressableSize < 1) { addressableSize = 1; } - return addressableSize; - } + return addressableSize; + } - @Override + @Override public Object getValue(Object element, String property) { - // give back the value of the column + // give back the value of the column - if (!(element instanceof TableRenderingLine)) { + if (!(element instanceof TableRenderingLine)) { return null; } - TableRenderingLine line = (TableRenderingLine) element; - try { - if (TableRenderingLine.P_ADDRESS.equals(property)) { + TableRenderingLine line = (TableRenderingLine) element; + try { + if (TableRenderingLine.P_ADDRESS.equals(property)) { return line.getAddress(); } - int offset = Integer.valueOf(property, 16).intValue() * getAddressableSize(); - int end = offset + fRendering.getBytesPerColumn(); + int offset = Integer.valueOf(property, 16).intValue() * getAddressableSize(); + int end = offset + fRendering.getBytesPerColumn(); - // Ask for label provider - MemoryByte[] memory = line.getBytes(offset, end); + // Ask for label provider + MemoryByte[] memory = line.getBytes(offset, end); - if (line.isAvailable(offset, end)) { - // ask the renderer for a string representation of the bytes - offset = Integer.valueOf(property, 16).intValue(); + if (line.isAvailable(offset, end)) { + // ask the renderer for a string representation of the bytes + offset = Integer.valueOf(property, 16).intValue(); - BigInteger address = new BigInteger(((TableRenderingLine) element).getAddress(), 16); - address = address.add(BigInteger.valueOf(offset)); + BigInteger address = new BigInteger(((TableRenderingLine) element).getAddress(), 16); + address = address.add(BigInteger.valueOf(offset)); - return fRendering.getString(fRendering.getRenderingId(), address, memory); - } - // if the range is not available, just return padded string - return getPaddedString(offset, end); - } catch (NumberFormatException e) { - return "00"; //$NON-NLS-1$ - } - } + return fRendering.getString(fRendering.getRenderingId(), address, memory); + } + // if the range is not available, just return padded string + return getPaddedString(offset, end); + } catch (NumberFormatException e) { + return "00"; //$NON-NLS-1$ + } + } - @Override + @Override public void modify(Object element, String property, Object value) { - TableRenderingLine line = null; - if (!(element instanceof TableRenderingLine)) { - line = (TableRenderingLine) ((TableItem) element).getData(); - } else { - line = (TableRenderingLine) element; - } - - // validate data - if (!(value instanceof String)) { + TableRenderingLine line = null; + if (!(element instanceof TableRenderingLine)) { + line = (TableRenderingLine) ((TableItem) element).getData(); + } else { + line = (TableRenderingLine) element; + } + + // validate data + if (!(value instanceof String)) { return; } - try { - // calculate offset to update - IMemoryBlock memoryBlk = fRendering.getMemoryBlock(); + try { + // calculate offset to update + IMemoryBlock memoryBlk = fRendering.getMemoryBlock(); - int lineOffset = Integer.valueOf(property, 16).intValue(); + int lineOffset = Integer.valueOf(property, 16).intValue(); - // this offset is number of addressable unit from the line address - BigInteger offset = getOffset(memoryBlk, line.getAddress(), lineOffset); + // this offset is number of addressable unit from the line address + BigInteger offset = getOffset(memoryBlk, line.getAddress(), lineOffset); - byte[] bytes = null; + byte[] bytes = null; - String oldValue = (String) getValue(line, property); + String oldValue = (String) getValue(line, property); - if (!oldValue.equals(value)) { + if (!oldValue.equals(value)) { - // property is number of addressable unit from line address - // to calculate proper offset in the memoryViewLine's array - // offset = numberOfAddressableUnit * addressableSize - int offsetToLine = Integer.valueOf(property, 16).intValue() * getAddressableSize(); - int end = offsetToLine + fRendering.getBytesPerColumn(); + // property is number of addressable unit from line address + // to calculate proper offset in the memoryViewLine's array + // offset = numberOfAddressableUnit * addressableSize + int offsetToLine = Integer.valueOf(property, 16).intValue() * getAddressableSize(); + int end = offsetToLine + fRendering.getBytesPerColumn(); - MemoryByte[] oldArray = line.getBytes(offsetToLine, end); + MemoryByte[] oldArray = line.getBytes(offsetToLine, end); - BigInteger address = new BigInteger(line.getAddress(), 16); - address = address.add(BigInteger.valueOf(offsetToLine)); + BigInteger address = new BigInteger(line.getAddress(), 16); + address = address.add(BigInteger.valueOf(offsetToLine)); - bytes = fRendering.getBytes(fRendering.getRenderingId(), address, oldArray, (String) value); + bytes = fRendering.getBytes(fRendering.getRenderingId(), address, oldArray, (String) value); - if (bytes == null) { + if (bytes == null) { return; } - if (bytes.length == 0) { + if (bytes.length == 0) { return; } - if (bytes.length <= oldArray.length) { - boolean changed = false; - // check that the bytes returned has actually changed - for (int i = 0; i < bytes.length; i++) { - if (bytes[i] != oldArray[i].getValue()) { - changed = true; - break; - } - } - if (!changed) { + if (bytes.length <= oldArray.length) { + boolean changed = false; + // check that the bytes returned has actually changed + for (int i = 0; i < bytes.length; i++) { + if (bytes[i] != oldArray[i].getValue()) { + changed = true; + break; + } + } + if (!changed) { return; } - } - } else { - // return if value has not changed - return; - } + } + } else { + // return if value has not changed + return; + } - if (memoryBlk instanceof IMemoryBlockExtension) { + if (memoryBlk instanceof IMemoryBlockExtension) { ((IMemoryBlockExtension) memoryBlk).setValue(offset, bytes); } else { memoryBlk.setValue(offset.longValue(), bytes); } - } catch (DebugException e) { - MemoryViewUtil.openError(DebugUIMessages.MemoryViewCellModifier_failure_title, DebugUIMessages.MemoryViewCellModifier_failed, e); - } catch (NumberFormatException e) { - MemoryViewUtil.openError(DebugUIMessages.MemoryViewCellModifier_failure_title, DebugUIMessages.MemoryViewCellModifier_failed + "\n" + DebugUIMessages.MemoryViewCellModifier_data_is_invalid, null); //$NON-NLS-1$ - } + } catch (DebugException e) { + MemoryViewUtil.openError(DebugUIMessages.MemoryViewCellModifier_failure_title, DebugUIMessages.MemoryViewCellModifier_failed, e); + } catch (NumberFormatException e) { + MemoryViewUtil.openError(DebugUIMessages.MemoryViewCellModifier_failure_title, DebugUIMessages.MemoryViewCellModifier_failed + "\n" + DebugUIMessages.MemoryViewCellModifier_data_is_invalid, null); //$NON-NLS-1$ + } - } + } - private BigInteger getOffset(IMemoryBlock memory, String lineAddress, int lineOffset) throws DebugException { + private BigInteger getOffset(IMemoryBlock memory, String lineAddress, int lineOffset) throws DebugException { - BigInteger lineAddr = new BigInteger(lineAddress, 16); - BigInteger memoryAddr; + BigInteger lineAddr = new BigInteger(lineAddress, 16); + BigInteger memoryAddr; - if (memory instanceof IMemoryBlockExtension) { - memoryAddr = ((IMemoryBlockExtension) memory).getBigBaseAddress(); - } else { - memoryAddr = BigInteger.valueOf(memory.getStartAddress()); - } + if (memory instanceof IMemoryBlockExtension) { + memoryAddr = ((IMemoryBlockExtension) memory).getBigBaseAddress(); + } else { + memoryAddr = BigInteger.valueOf(memory.getStartAddress()); + } - if (memoryAddr == null) + if (memoryAddr == null) { memoryAddr = new BigInteger("0"); //$NON-NLS-1$ } - return lineAddr.subtract(memoryAddr).add(BigInteger.valueOf(lineOffset)); - } - - /** - * @param editActionInvoked - * The editActionInvoked to set. - */ - public void setEditActionInvoked(boolean editActionInvoked) { - this.editActionInvoked = editActionInvoked; - } - - /** - * @param start - * @param end - * @return padded string - */ - public String getPaddedString(int start, int end) { - StringBuilder buf = new StringBuilder(); - String paddedStr = DebugUIPlugin.getDefault().getPreferenceStore().getString(IDebugUIConstants.PREF_PADDED_STR); - for (int i = start; i < end; i++) { - buf.append(paddedStr); - } - return buf.toString(); - } + return lineAddr.subtract(memoryAddr).add(BigInteger.valueOf(lineOffset)); + } + + /** + * @param editActionInvoked + * The editActionInvoked to set. + */ + public void setEditActionInvoked(boolean editActionInvoked) { + this.editActionInvoked = editActionInvoked; + } + + /** + * @param start + * @param end + * @return padded string + */ + public String getPaddedString(int start, int end) { + StringBuilder buf = new StringBuilder(); + String paddedStr = DebugUIPlugin.getDefault().getPreferenceStore().getString(IDebugUIConstants.PREF_PADDED_STR); + for (int i = start; i < end; i++) { + buf.append(paddedStr); + } + return buf.toString(); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/modules/ModulesView.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/modules/ModulesView.java index 9d0fec797..8f17f8989 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/modules/ModulesView.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/modules/ModulesView.java @@ -47,26 +47,26 @@ public class ModulesView extends VariablesView { @Override protected void configureToolBar(IToolBarManager tbm) { - tbm.add(new Separator(this.getClass().getName())); - tbm.add(new Separator(IDebugUIConstants.RENDER_GROUP)); - tbm.add(getAction("CollapseAll")); //$NON-NLS-1$ - tbm.add( new Separator( IDebugUIConstants.MODULES_GROUP ) ); + tbm.add(new Separator(this.getClass().getName())); + tbm.add(new Separator(IDebugUIConstants.RENDER_GROUP)); + tbm.add(getAction("CollapseAll")); //$NON-NLS-1$ + tbm.add( new Separator( IDebugUIConstants.MODULES_GROUP ) ); } - @Override + @Override protected void fillContextMenu( IMenuManager menu ) { - menu.add( new Separator( IDebugUIConstants.EMPTY_MODULES_GROUP ) ); - menu.add( new Separator( IDebugUIConstants.MODULES_GROUP ) ); - menu.add(getAction(FIND_ACTION)); - menu.add(new Separator()); - IAction action = new AvailableDetailPanesAction(this); - if (isDetailPaneVisible() && action.isEnabled()) { - menu.add(action); - } - menu.add(new Separator(IDebugUIConstants.EMPTY_RENDER_GROUP)); - menu.add(new Separator(IDebugUIConstants.EMPTY_NAVIGATION_GROUP)); - menu.add( new Separator( IWorkbenchActionConstants.MB_ADDITIONS ) ); - } + menu.add( new Separator( IDebugUIConstants.EMPTY_MODULES_GROUP ) ); + menu.add( new Separator( IDebugUIConstants.MODULES_GROUP ) ); + menu.add(getAction(FIND_ACTION)); + menu.add(new Separator()); + IAction action = new AvailableDetailPanesAction(this); + if (isDetailPaneVisible() && action.isEnabled()) { + menu.add(action); + } + menu.add(new Separator(IDebugUIConstants.EMPTY_RENDER_GROUP)); + menu.add(new Separator(IDebugUIConstants.EMPTY_NAVIGATION_GROUP)); + menu.add( new Separator( IWorkbenchActionConstants.MB_ADDITIONS ) ); + } @Override protected String getDetailPanePreferenceKey() { diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/modules/ModulesViewMessages.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/modules/ModulesViewMessages.java index ca89e7d9f..f10a8bedd 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/modules/ModulesViewMessages.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/modules/ModulesViewMessages.java @@ -20,7 +20,7 @@ import org.eclipse.osgi.util.NLS; public class ModulesViewMessages extends NLS { private static final String BUNDLE_NAME = "org.eclipse.debug.internal.ui.views.modules.ModulesViewMessages";//$NON-NLS-1$ - public static String ModulesView_0; + public static String ModulesView_0; public static String ModulesView_1; diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/registers/RegistersViewMessages.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/registers/RegistersViewMessages.java index f8d76a38c..6c6b2630e 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/registers/RegistersViewMessages.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/registers/RegistersViewMessages.java @@ -19,7 +19,7 @@ import org.eclipse.osgi.util.NLS; public class RegistersViewMessages extends NLS { private static final String BUNDLE_NAME = "org.eclipse.debug.internal.ui.views.registers.RegistersViewMessages";//$NON-NLS-1$ - public static String RegistersView_0; + public static String RegistersView_0; static { // load message values from bundle file diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/AvailableLogicalStructuresAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/AvailableLogicalStructuresAction.java index c032a0ea6..f5a5c9354 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/AvailableLogicalStructuresAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/AvailableLogicalStructuresAction.java @@ -95,20 +95,20 @@ public class AvailableLogicalStructuresAction extends Action implements IMenuCre fMenu= new Menu(parent); ILogicalStructureType[] types = getTypes(); - ILogicalStructureType enabledType = DebugPlugin.getDefaultStructureType(types); + ILogicalStructureType enabledType = DebugPlugin.getDefaultStructureType(types); if (types != null && types.length > 0) { for (int i = 0; i < types.length; i++) { - ILogicalStructureType type= types[i]; + ILogicalStructureType type= types[i]; Action action = new SelectLogicalStructureAction(getView(), type, getValue(), types); action.setChecked((enabledType == type) && getView().isShowLogicalStructure()); - StringBuilder label= new StringBuilder(); - //add the numerical accelerator - if (i < 9) { - label.append('&'); - label.append(i + 1); - label.append(' '); - } - label.append(action.getText()); + StringBuilder label= new StringBuilder(); + //add the numerical accelerator + if (i < 9) { + label.append('&'); + label.append(i + 1); + label.append(' '); + } + label.append(action.getText()); if (enabledType == type) { action.setText(label.toString() + " " + VariablesViewMessages.AvailableLogicalStructuresAction_2); //$NON-NLS-1$ } else { diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/EditVariableLogicalStructureAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/EditVariableLogicalStructureAction.java index 4dc0e525c..8950b9602 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/EditVariableLogicalStructureAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/EditVariableLogicalStructureAction.java @@ -32,10 +32,10 @@ import org.eclipse.ui.dialogs.PreferencesUtil; */ public class EditVariableLogicalStructureAction extends Action { - /** - * The editable structure for the currently selected variable or - * <code>null</code> if none. - */ + /** + * The editable structure for the currently selected variable or + * <code>null</code> if none. + */ private ILogicalStructureType fStructure = null; private VariablesView fView = null; @@ -49,12 +49,12 @@ public class EditVariableLogicalStructureAction extends Action { } public void setActivePart(IAction action, IWorkbenchPart targetPart) { - } + } - /** - * Prompt the user to edit the logical structure associated with the currently - * selected variable. - */ + /** + * Prompt the user to edit the logical structure associated with the currently + * selected variable. + */ @Override public void run() { PreferencesUtil.createPreferenceDialogOn(DebugUIPlugin.getShell(), "org.eclipse.jdt.debug.ui.JavaLogicalStructuresPreferencePage", //$NON-NLS-1$ @@ -64,37 +64,37 @@ public class EditVariableLogicalStructureAction extends Action { "org.eclipse.jdt.debug.ui.JavaPrimitivesPreferencePage" }, (fStructure != null) //$NON-NLS-1$ ? fStructure.getId() + fStructure.getDescription() + fStructure.hashCode() : null).open(); - } + } private void init(ISelection selection) { - fStructure= null; - Object element = ((IStructuredSelection) selection).getFirstElement(); - if (element instanceof IVariable) { - try { - IValue value= ((IVariable) element).getValue(); - ILogicalStructureType type= getLogicalStructure(value); + fStructure= null; + Object element = ((IStructuredSelection) selection).getFirstElement(); + if (element instanceof IVariable) { + try { + IValue value= ((IVariable) element).getValue(); + ILogicalStructureType type= getLogicalStructure(value); fStructure = type; - } catch (DebugException e) { + } catch (DebugException e) { DebugUIPlugin.log(e.getStatus()); - } - } + } + } setEnabled(fView.isShowLogicalStructure()); - } + } - /** - * Returns the logical structure currently associated with the given - * value or <code>null</code> if none. - * @param value the value - * @return the logical structure currently associated with the given - * value or <code>null</code> if none. - */ + /** + * Returns the logical structure currently associated with the given + * value or <code>null</code> if none. + * @param value the value + * @return the logical structure currently associated with the given + * value or <code>null</code> if none. + */ private ILogicalStructureType getLogicalStructure(IValue value) { - // This code is based on VariablesViewContentProvider#getLogicalValue(IValue) - ILogicalStructureType type = null; - ILogicalStructureType[] types = DebugPlugin.getLogicalStructureTypes(value); - if (types.length > 0) { - type= DebugPlugin.getDefaultStructureType(types); - } - return type; - } + // This code is based on VariablesViewContentProvider#getLogicalValue(IValue) + ILogicalStructureType type = null; + ILogicalStructureType[] types = DebugPlugin.getLogicalStructureTypes(value); + if (types.length > 0) { + type= DebugPlugin.getDefaultStructureType(types); + } + return type; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/SelectLogicalStructureAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/SelectLogicalStructureAction.java index f7d8139f9..4b18fe3cc 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/SelectLogicalStructureAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/SelectLogicalStructureAction.java @@ -27,8 +27,8 @@ import org.eclipse.swt.custom.BusyIndicator; public class SelectLogicalStructureAction extends Action { private VariablesView fView; - private ILogicalStructureType fType; - private ILogicalStructureType[] fAvailableTypes; + private ILogicalStructureType fType; + private ILogicalStructureType[] fAvailableTypes; /** * @@ -36,12 +36,12 @@ public class SelectLogicalStructureAction extends Action { * @param type the type that this action will turn on/off * @param value the value for which logical structures are to be chosen * @param availableTypes the set of logical structure types that are being offered - * to the user in addition to the type controlled by this action + * to the user in addition to the type controlled by this action */ public SelectLogicalStructureAction(VariablesView view, ILogicalStructureType type, IValue value, ILogicalStructureType[] availableTypes) { super(type.getDescription(value), IAction.AS_CHECK_BOX); setView(view); - fAvailableTypes= availableTypes; + fAvailableTypes= availableTypes; fType= type; } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/SelectionDragAdapter.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/SelectionDragAdapter.java index eac9916cb..109f4c3f9 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/SelectionDragAdapter.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/SelectionDragAdapter.java @@ -32,44 +32,44 @@ import org.eclipse.swt.dnd.Transfer; */ public class SelectionDragAdapter extends DragSourceAdapter implements TransferDragSourceListener { - /** - * The associated viewer for the adapter - */ - private TreeModelViewer fViewer; + /** + * The associated viewer for the adapter + */ + private TreeModelViewer fViewer; - /** - * Constructor, takes the viewer that contains the selection provider - * @param view the associated view, <b>must</b> implement <code>ISelectionProvider</code> - */ - public SelectionDragAdapter(TreeModelViewer viewer) { - Assert.isNotNull(viewer); - fViewer = viewer; - } + /** + * Constructor, takes the viewer that contains the selection provider + * @param view the associated view, <b>must</b> implement <code>ISelectionProvider</code> + */ + public SelectionDragAdapter(TreeModelViewer viewer) { + Assert.isNotNull(viewer); + fViewer = viewer; + } - @Override + @Override public Transfer getTransfer() { - return LocalSelectionTransfer.getTransfer(); - } + return LocalSelectionTransfer.getTransfer(); + } - @Override + @Override public void dragStart(DragSourceEvent event) { - ISelection selection = fViewer.getSelection(); - LocalSelectionTransfer.getTransfer().setSelection(selection); - LocalSelectionTransfer.getTransfer().setSelectionSetTime(event.time & 0xFFFFFFFFL); - event.doit = !selection.isEmpty(); - } + ISelection selection = fViewer.getSelection(); + LocalSelectionTransfer.getTransfer().setSelection(selection); + LocalSelectionTransfer.getTransfer().setSelectionSetTime(event.time & 0xFFFFFFFFL); + event.doit = !selection.isEmpty(); + } - @Override + @Override public void dragSetData(DragSourceEvent event) { - // For consistency set the data to the selection even though - // the selection is provided by the LocalSelectionTransfer - // to the drop target adapter. - event.data = LocalSelectionTransfer.getTransfer().getSelection(); - } + // For consistency set the data to the selection even though + // the selection is provided by the LocalSelectionTransfer + // to the drop target adapter. + event.data = LocalSelectionTransfer.getTransfer().getSelection(); + } - @Override + @Override public void dragFinished(DragSourceEvent event) { - LocalSelectionTransfer.getTransfer().setSelection(null); - LocalSelectionTransfer.getTransfer().setSelectionSetTime(0); - } + LocalSelectionTransfer.getTransfer().setSelection(null); + LocalSelectionTransfer.getTransfer().setSelectionSetTime(0); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/VariablesView.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/VariablesView.java index 348e59a05..ae9dfed9e 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/VariablesView.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/VariablesView.java @@ -297,7 +297,7 @@ public class VariablesView extends AbstractDebugView implements IDebugContextLis @Override public void viewerInputComplete(IViewerInputUpdate update) { if (!update.isCanceled()) { - viewerInputUpdateComplete(update); + viewerInputUpdateComplete(update); } } }; @@ -313,7 +313,7 @@ public class VariablesView extends AbstractDebugView implements IDebugContextLis private ToggleDetailPaneAction[] fToggleDetailPaneActions; private ConfigureColumnsAction fConfigureColumnsAction; - protected String PREF_STATE_MEMENTO = "pref_state_memento."; //$NON-NLS-1$ + protected String PREF_STATE_MEMENTO = "pref_state_memento."; //$NON-NLS-1$ public static final String LOGICAL_STRUCTURE_TYPE_PREFIX = "VAR_LS_"; //$NON-NLS-1$ @@ -339,16 +339,16 @@ public class VariablesView extends AbstractDebugView implements IDebugContextLis */ protected static final String DETAIL_PANE_TYPE = "DETAIL_PANE_TYPE"; //$NON-NLS-1$ - /** - * Visits deltas to determine if details should be displayed - */ - class Visitor implements IModelDeltaVisitor { - /** - * Whether to trigger details display. - * - * @since 3.3 - */ - private boolean fTriggerDetails = false; + /** + * Visits deltas to determine if details should be displayed + */ + class Visitor implements IModelDeltaVisitor { + /** + * Whether to trigger details display. + * + * @since 3.3 + */ + private boolean fTriggerDetails = false; @Override public boolean visit(IModelDelta delta, int depth) { if ((delta.getFlags() & IModelDelta.CONTENT) > 0) { @@ -366,16 +366,16 @@ public class VariablesView extends AbstractDebugView implements IDebugContextLis return fTriggerDetails; } - } - /** - * Delta visitor - */ - private Visitor fVisitor = new Visitor(); + } + /** + * Delta visitor + */ + private Visitor fVisitor = new Visitor(); - /** - * Job to update details in the UI thread. - */ - private Job fTriggerDetailsJob = new UIJob("trigger details") { //$NON-NLS-1$ + /** + * Job to update details in the UI thread. + */ + private Job fTriggerDetailsJob = new UIJob("trigger details") { //$NON-NLS-1$ @Override public IStatus runInUIThread(IProgressMonitor monitor) { @@ -406,7 +406,7 @@ public class VariablesView extends AbstractDebugView implements IDebugContextLis @Override public void dispose() { - DebugUITools.removePartDebugContextListener(getSite(), this); + DebugUITools.removePartDebugContextListener(getSite(), this); getSite().getWorkbenchWindow().removePerspectiveListener(this); DebugUIPlugin.getDefault().getPreferenceStore().removePropertyChangeListener(this); JFaceResources.getFontRegistry().removeListener(this); @@ -416,14 +416,14 @@ public class VariablesView extends AbstractDebugView implements IDebugContextLis viewer.removeViewerUpdateListener(this); } if (fPresentationContext != null) { - fPresentationContext.dispose(); - fPresentationContext = null; + fPresentationContext.dispose(); + fPresentationContext = null; } if (fDetailPane != null) { fDetailPane.dispose(); } - fInputService.dispose(); - fSelectionProvider.dispose(); + fInputService.dispose(); + fSelectionProvider.dispose(); super.dispose(); } @@ -435,8 +435,8 @@ public class VariablesView extends AbstractDebugView implements IDebugContextLis * @param update Completed viewer input update. */ protected void viewerInputUpdateComplete(IViewerInputUpdate update) { - setViewerInput(update.getInputElement()); - updateAction(FIND_ACTION); + setViewerInput(update.getInputElement()); + updateAction(FIND_ACTION); } /** @@ -444,24 +444,24 @@ public class VariablesView extends AbstractDebugView implements IDebugContextLis * @param context the object context */ protected void setViewerInput(Object context) { - if (context == null) { - // Clear the detail pane - refreshDetailPaneContents(); - } + if (context == null) { + // Clear the detail pane + refreshDetailPaneContents(); + } - Object current = getViewer().getInput(); + Object current = getViewer().getInput(); - if (current == null && context == null) { - return; - } + if (current == null && context == null) { + return; + } - if (current != null && current.equals(context)) { - return; - } + if (current != null && current.equals(context)) { + return; + } - showViewer(); - getViewer().setInput(context); - updateObjects(); + showViewer(); + getViewer().setInput(context); + updateObjects(); } @Override @@ -521,39 +521,39 @@ public class VariablesView extends AbstractDebugView implements IDebugContextLis variablesViewer.addModelChangedListener(this); variablesViewer.addViewerUpdateListener(this); - initDragAndDrop(variablesViewer); + initDragAndDrop(variablesViewer); return variablesViewer; } - /** - * Initializes the drag and/or drop adapters for this view. Called from createViewer(). - * - * @param viewer the viewer to add drag/drop support to. - * @since 3.4 - */ - protected void initDragAndDrop(TreeModelViewer viewer) { - // Drag only - viewer.addDragSupport(DND.DROP_COPY, new Transfer[] {LocalSelectionTransfer.getTransfer()}, new SelectionDragAdapter(viewer)); - } + /** + * Initializes the drag and/or drop adapters for this view. Called from createViewer(). + * + * @param viewer the viewer to add drag/drop support to. + * @since 3.4 + */ + protected void initDragAndDrop(TreeModelViewer viewer) { + // Drag only + viewer.addDragSupport(DND.DROP_COPY, new Transfer[] {LocalSelectionTransfer.getTransfer()}, new SelectionDragAdapter(viewer)); + } @Override public void init(IViewSite site, IMemento memento) throws PartInitException { super.init(site, memento); PREF_STATE_MEMENTO = PREF_STATE_MEMENTO + site.getId(); - IPreferenceStore store = DebugUIPlugin.getDefault().getPreferenceStore(); - String string = store.getString(PREF_STATE_MEMENTO); - if(string.length() > 0) { + IPreferenceStore store = DebugUIPlugin.getDefault().getPreferenceStore(); + String string = store.getString(PREF_STATE_MEMENTO); + if(string.length() > 0) { try (ByteArrayInputStream bin = new ByteArrayInputStream(string.getBytes()); InputStreamReader reader = new InputStreamReader(bin);) { - XMLMemento stateMemento = XMLMemento.createReadRoot(reader); - setMemento(stateMemento); - } catch (WorkbenchException e) { + XMLMemento stateMemento = XMLMemento.createReadRoot(reader); + setMemento(stateMemento); + } catch (WorkbenchException e) { } catch (IOException e1) { } - } - IMemento mem = getMemento(); - // check the weights to makes sure they are valid -- bug 154025 - setLastSashWeights(DEFAULT_SASH_WEIGHTS); + } + IMemento mem = getMemento(); + // check the weights to makes sure they are valid -- bug 154025 + setLastSashWeights(DEFAULT_SASH_WEIGHTS); if (mem != null) { int[] weights = getWeights(mem); if (weights != null) { @@ -561,7 +561,7 @@ public class VariablesView extends AbstractDebugView implements IDebugContextLis } } site.getWorkbenchWindow().addPerspectiveListener(this); - } + } /** * Returns sash weights stored in the given memento or <code>null</code> if none. @@ -584,7 +584,7 @@ public class VariablesView extends AbstractDebugView implements IDebugContextLis return null; } - @Override + @Override public void partDeactivated(IWorkbenchPart part) { String id = part.getSite().getId(); if (id.equals(getSite().getId())) { @@ -608,7 +608,7 @@ public class VariablesView extends AbstractDebugView implements IDebugContextLis */ public void saveViewerState(IMemento memento) { if (fSashForm != null && !fSashForm.isDisposed()) { - int[] weights = fSashForm.getWeights(); + int[] weights = fSashForm.getWeights(); memento.putInteger(SASH_VIEW_PART, weights[0]); memento.putInteger(SASH_DETAILS_PART, weights[1]); } @@ -643,10 +643,10 @@ public class VariablesView extends AbstractDebugView implements IDebugContextLis @Override public void focusLost(FocusEvent e){ - // Do not reset the selection provider with the provider proxy. - // This should allow toolbar actions to remain active when the view - // is de-activated but still visible. - // Bug 316850. + // Do not reset the selection provider with the provider proxy. + // This should allow toolbar actions to remain active when the view + // is de-activated but still visible. + // Bug 316850. clearGlobalActions(); getViewSite().getActionBars().updateActionBars(); } @@ -717,7 +717,7 @@ public class VariablesView extends AbstractDebugView implements IDebugContextLis * @since 3.7 */ protected ISelection getDebugContext() { - IViewSite site = (IViewSite)getSite(); + IViewSite site = (IViewSite)getSite(); IDebugContextService contextService = DebugUITools.getDebugContextManager().getContextService(site.getWorkbenchWindow()); return contextService.getActiveContext(site.getId(), site.getSecondaryId()); } @@ -1062,7 +1062,7 @@ public class VariablesView extends AbstractDebugView implements IDebugContextLis tbm.add(getAction(COLLAPSE_ALL)); } - /** + /** * Adds items to the tree viewer's context menu including any extension defined * actions. * @@ -1075,7 +1075,7 @@ public class VariablesView extends AbstractDebugView implements IDebugContextLis menu.add(getAction(FIND_ACTION)); ChangeVariableValueAction changeValueAction = (ChangeVariableValueAction)getAction("ChangeVariableValue"); //$NON-NLS-1$ if (changeValueAction.isApplicable()) { - menu.add(changeValueAction); + menu.add(changeValueAction); } menu.add(new Separator()); IAction action = new AvailableLogicalStructuresAction(this); @@ -1091,31 +1091,31 @@ public class VariablesView extends AbstractDebugView implements IDebugContextLis menu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); } - /** + /** * Lazily instantiate and return a selection listener that populates the detail pane, * but only if the detail is currently visible. * * @return Created selection listener */ - protected ISelectionChangedListener getTreeSelectionChangedListener() { - if (fTreeSelectionChangedListener == null) { - fTreeSelectionChangedListener = new ISelectionChangedListener() { - @Override + protected ISelectionChangedListener getTreeSelectionChangedListener() { + if (fTreeSelectionChangedListener == null) { + fTreeSelectionChangedListener = new ISelectionChangedListener() { + @Override public void selectionChanged(final SelectionChangedEvent event) { - if (event.getSelectionProvider().equals(getViewer())) { - clearStatusLine(); - // if the detail pane is not visible, don't waste time retrieving details - if (fSashForm.getMaximizedControl() == getViewer().getControl()) { - return; - } - refreshDetailPaneContents(); - treeSelectionChanged(event); - } - } - }; - } - return fTreeSelectionChangedListener; - } + if (event.getSelectionProvider().equals(getViewer())) { + clearStatusLine(); + // if the detail pane is not visible, don't waste time retrieving details + if (fSashForm.getMaximizedControl() == getViewer().getControl()) { + return; + } + refreshDetailPaneContents(); + treeSelectionChanged(event); + } + } + }; + } + return fTreeSelectionChangedListener; + } /** * Selection in the variable tree changed. Perform any updates. @@ -1322,7 +1322,7 @@ public class VariablesView extends AbstractDebugView implements IDebugContextLis * @param flag If true, turns the logical structures on. */ public void setShowLogicalStructure(boolean flag) { - getPresentationContext().setProperty(PRESENTATION_SHOW_LOGICAL_STRUCTURES, Boolean.valueOf(flag)); + getPresentationContext().setProperty(PRESENTATION_SHOW_LOGICAL_STRUCTURES, Boolean.valueOf(flag)); } /** @@ -1336,7 +1336,7 @@ public class VariablesView extends AbstractDebugView implements IDebugContextLis @Override protected void becomesHidden() { - fInputService.resolveViewerInput(ViewerInputService.NULL_INPUT); + fInputService.resolveViewerInput(ViewerInputService.NULL_INPUT); super.becomesHidden(); } @@ -1381,7 +1381,7 @@ public class VariablesView extends AbstractDebugView implements IDebugContextLis delta.accept(fVisitor); updateAction(FIND_ACTION); - updateAction(COLLAPSE_ALL); + updateAction(COLLAPSE_ALL); } @Override @@ -1394,8 +1394,8 @@ public class VariablesView extends AbstractDebugView implements IDebugContextLis showViewer(); } if (TreePath.EMPTY.equals(update.getElementPath())) { - updateAction(FIND_ACTION); - updateAction(COLLAPSE_ALL); + updateAction(FIND_ACTION); + updateAction(COLLAPSE_ALL); } } } @@ -1407,11 +1407,11 @@ public class VariablesView extends AbstractDebugView implements IDebugContextLis @Override public synchronized void viewerUpdatesBegin() { fTriggerDetailsJob.cancel(); - IWorkbenchSiteProgressService progressService = - getSite().getAdapter(IWorkbenchSiteProgressService.class); - if (progressService != null) { - progressService.incrementBusy(); - } + IWorkbenchSiteProgressService progressService = + getSite().getAdapter(IWorkbenchSiteProgressService.class); + if (progressService != null) { + progressService.incrementBusy(); + } } @Override @@ -1419,11 +1419,11 @@ public class VariablesView extends AbstractDebugView implements IDebugContextLis if (fVisitor.isTriggerDetails()) { fTriggerDetailsJob.schedule(); } - IWorkbenchSiteProgressService progressService = - getSite().getAdapter(IWorkbenchSiteProgressService.class); - if (progressService != null) { - progressService.decrementBusy(); - } + IWorkbenchSiteProgressService progressService = + getSite().getAdapter(IWorkbenchSiteProgressService.class); + if (progressService != null) { + progressService.decrementBusy(); + } } @Override diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/details/AvailableDetailPanesAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/details/AvailableDetailPanesAction.java index 52efea39d..41a811c51 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/details/AvailableDetailPanesAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/details/AvailableDetailPanesAction.java @@ -109,12 +109,12 @@ public class AvailableDetailPanesAction extends Action implements IMenuCreator { for (String currentID : fAvailableIDs) { StringBuilder name = new StringBuilder(); //add the numerical accelerator - i++; + i++; if (i < 9) { - name.append('&'); - name.append(i); - name.append(' '); - } + name.append('&'); + name.append(i); + name.append(' '); + } String typeName = DetailPaneManager.getDefault().getNameFromID(currentID); if (typeName != null && typeName.length() > 0){ diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/details/DefaultDetailPane.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/details/DefaultDetailPane.java index a6eda1fcf..fd18bf7b4 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/details/DefaultDetailPane.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/details/DefaultDetailPane.java @@ -214,15 +214,15 @@ public class DefaultDetailPane extends AbstractDetailPane implements IDetailPane message = bp.getMarker().getAttribute(IMarker.MESSAGE, ""); //$NON-NLS-1$ } else if (element instanceof IBreakpointContainer) { IBreakpointContainer c = (IBreakpointContainer) element; - IAdaptable category = c.getCategory(); - if (category != null) { - IWorkbenchAdapter adapter = category.getAdapter(IWorkbenchAdapter.class); - if (adapter != null) { - message = adapter.getLabel(category); - } else { - message = c.getOrganizer().getLabel(); - } - } + IAdaptable category = c.getCategory(); + if (category != null) { + IWorkbenchAdapter adapter = category.getAdapter(IWorkbenchAdapter.class); + if (adapter != null) { + message = adapter.getLabel(category); + } else { + message = c.getOrganizer().getLabel(); + } + } } // When selecting a index partition, clear the pane if (val instanceof IndexedValuePartition) { @@ -617,9 +617,9 @@ public class DefaultDetailPane extends AbstractDetailPane implements IDetailPane textAction.setDisabledImageDescriptor(DebugPluginImages.getImageDescriptor(IDebugUIConstants.IMG_DLCL_CONTENT_ASSIST)); PlatformUI.getWorkbench().getHelpSystem().setHelp(textAction, IDebugHelpContextIds.DETAIL_PANE_CONTENT_ASSIST_ACTION); ActionHandler actionHandler = new ActionHandler(textAction); - IHandlerService handlerService = getViewSite().getService(IHandlerService.class); - fContentAssistActivation = handlerService.activateHandler(textAction.getActionDefinitionId(), actionHandler); - setAction(DETAIL_CONTENT_ASSIST_ACTION, textAction); + IHandlerService handlerService = getViewSite().getService(IHandlerService.class); + fContentAssistActivation = handlerService.activateHandler(textAction.getActionDefinitionId(), actionHandler); + setAction(DETAIL_CONTENT_ASSIST_ACTION, textAction); textAction= new TextViewerAction(fSourceViewer, ITextOperationTarget.SELECT_ALL); textAction.configureAction(DetailMessages.DefaultDetailPane_Select__All_5, IInternalDebugCoreConstants.EMPTY_STRING,IInternalDebugCoreConstants.EMPTY_STRING); @@ -751,13 +751,13 @@ public class DefaultDetailPane extends AbstractDetailPane implements IDetailPane } } - synchronized (this) { - if (fDetailJob != null) { - fDetailJob.cancel(); - } + synchronized (this) { + if (fDetailJob != null) { + fDetailJob.cancel(); + } fDetailJob = new DetailJob(selection,fModelPresentation); fDetailJob.schedule(); - } + } } @@ -792,8 +792,8 @@ public class DefaultDetailPane extends AbstractDetailPane implements IDetailPane } if (fContentAssistActivation != null){ IHandlerService service = getViewSite().getService(IHandlerService.class); - service.deactivateHandler(fContentAssistActivation); - fContentAssistActivation = null; + service.deactivateHandler(fContentAssistActivation); + fContentAssistActivation = null; } disposeUndoRedoAction(ITextEditorActionConstants.UNDO); @@ -873,12 +873,12 @@ public class DefaultDetailPane extends AbstractDetailPane implements IDetailPane } } - if (svc == null) { + if (svc == null) { svc = new SourceViewerConfiguration(); fSourceViewer.setEditable(false); } - fSourceViewer.unconfigure(); - fSourceViewer.configure(svc); + fSourceViewer.unconfigure(); + fSourceViewer.configure(svc); //update actions that depend on the configuration of the source viewer if (isInView()){ diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/details/DetailPaneManager.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/details/DetailPaneManager.java index 4c9b71a58..5c41204b1 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/details/DetailPaneManager.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/details/DetailPaneManager.java @@ -258,12 +258,12 @@ public class DetailPaneManager { */ private List<DetailPaneFactoryExtension> fKnownFactories; - /** - * Preference key for storing the preferred detail panes map. - * @see #storePreferredDetailsAreas() - * @see #loadPreferredDetailsAreas() - */ - public static final String PREF_DETAIL_AREAS = "preferredDetailPanes"; //$NON-NLS-1$ + /** + * Preference key for storing the preferred detail panes map. + * @see #storePreferredDetailsAreas() + * @see #loadPreferredDetailsAreas() + */ + public static final String PREF_DETAIL_AREAS = "preferredDetailPanes"; //$NON-NLS-1$ private DetailPaneManager(){ fFactoriesByPaneID = new HashMap<>(); @@ -488,59 +488,59 @@ public class DetailPaneManager { } - /** - * Stores the map of preferred detail pane IDs to the preference store in the format: - * - * Key1A,Key1B:Value1|Key2A,Key2B,Key2C:Value2| - * - * Where the sub keys (Key1A, Key1B, etc.) are the elements of the set used at the - * key in the mapping and the values are the associated String value in the mapping. - */ - private void storePreferredDetailsAreas() { - StringBuilder buffer= new StringBuilder(); + /** + * Stores the map of preferred detail pane IDs to the preference store in the format: + * + * Key1A,Key1B:Value1|Key2A,Key2B,Key2C:Value2| + * + * Where the sub keys (Key1A, Key1B, etc.) are the elements of the set used at the + * key in the mapping and the values are the associated String value in the mapping. + */ + private void storePreferredDetailsAreas() { + StringBuilder buffer= new StringBuilder(); for (Entry<Set<String>, String> entry : fPreferredDetailPanes.entrySet()) { for (String currentID : entry.getKey()) { buffer.append(currentID); buffer.append(','); } - buffer.deleteCharAt(buffer.length()-1); - buffer.append(':'); - buffer.append(entry.getValue()); - buffer.append('|'); - } - IEclipsePreferences node = InstanceScope.INSTANCE.getNode(DebugUIPlugin.getUniqueIdentifier()); - if(node != null) { - node.put(PREF_DETAIL_AREAS, buffer.toString()); - try { + buffer.deleteCharAt(buffer.length()-1); + buffer.append(':'); + buffer.append(entry.getValue()); + buffer.append('|'); + } + IEclipsePreferences node = InstanceScope.INSTANCE.getNode(DebugUIPlugin.getUniqueIdentifier()); + if(node != null) { + node.put(PREF_DETAIL_AREAS, buffer.toString()); + try { node.flush(); } catch (BackingStoreException e) { DebugUIPlugin.log(e); } - } - } - - /** - * Loads the map of preferred detail pane IDs from the preference store. - * - * @see #storePreferredDetailsAreas() - */ - private void loadPreferredDetailsAreas() { + } + } + + /** + * Loads the map of preferred detail pane IDs from the preference store. + * + * @see #storePreferredDetailsAreas() + */ + private void loadPreferredDetailsAreas() { fPreferredDetailPanes = new HashMap<>(); - String preferenceValue = Platform.getPreferencesService().getString(DebugUIPlugin.getUniqueIdentifier(), - PREF_DETAIL_AREAS, - "", //$NON-NLS-1$ - null); - StringTokenizer entryTokenizer = new StringTokenizer(preferenceValue,"|"); //$NON-NLS-1$ - while (entryTokenizer.hasMoreTokens()){ - String token = entryTokenizer.nextToken(); - int valueStart = token.indexOf(':'); - StringTokenizer keyTokenizer = new StringTokenizer(token.substring(0,valueStart),","); //$NON-NLS-1$ + String preferenceValue = Platform.getPreferencesService().getString(DebugUIPlugin.getUniqueIdentifier(), + PREF_DETAIL_AREAS, + "", //$NON-NLS-1$ + null); + StringTokenizer entryTokenizer = new StringTokenizer(preferenceValue,"|"); //$NON-NLS-1$ + while (entryTokenizer.hasMoreTokens()){ + String token = entryTokenizer.nextToken(); + int valueStart = token.indexOf(':'); + StringTokenizer keyTokenizer = new StringTokenizer(token.substring(0,valueStart),","); //$NON-NLS-1$ Set<String> keys = new LinkedHashSet<>(); - while (keyTokenizer.hasMoreTokens()){ - keys.add(keyTokenizer.nextToken()); - } - fPreferredDetailPanes.put(keys, token.substring(valueStart+1)); - } - } + while (keyTokenizer.hasMoreTokens()){ + keys.add(keyTokenizer.nextToken()); + } + fPreferredDetailPanes.put(keys, token.substring(valueStart+1)); + } + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/AbstractBreakpointOrganizerDelegate.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/AbstractBreakpointOrganizerDelegate.java index 2d24acb8a..79e0c9547 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/AbstractBreakpointOrganizerDelegate.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/AbstractBreakpointOrganizerDelegate.java @@ -32,80 +32,80 @@ import org.eclipse.jface.util.PropertyChangeEvent; */ public abstract class AbstractBreakpointOrganizerDelegate implements IBreakpointOrganizerDelegate { - // property change listeners + // property change listeners private ListenerList<IPropertyChangeListener> fListeners = new ListenerList<>(); - @Override + @Override public void addBreakpoint(IBreakpoint breakpoint, IAdaptable category) { - // do noting, not supported by default - } + // do noting, not supported by default + } - @Override + @Override public void addPropertyChangeListener(IPropertyChangeListener listener) { - fListeners.add(listener); - } + fListeners.add(listener); + } /* * Subclasses that override should return super.canAdd(...) when they are not * able to add the breakpoint. */ - @Override + @Override public boolean canAdd(IBreakpoint breakpoint, IAdaptable category) { - return category instanceof OtherBreakpointCategory; - } + return category instanceof OtherBreakpointCategory; + } /* * Subclasses that override should return super.canRemove(...) when they are not * able to remove the breakpoint. */ - @Override + @Override public boolean canRemove(IBreakpoint breakpoint, IAdaptable category) { - return category instanceof OtherBreakpointCategory; - } + return category instanceof OtherBreakpointCategory; + } - @Override + @Override public void dispose() { fListeners = new ListenerList<>(); - } + } - @Override + @Override public void removeBreakpoint(IBreakpoint breakpoint, IAdaptable category) { - // do nothing, not supported by default - } + // do nothing, not supported by default + } - @Override + @Override public void removePropertyChangeListener(IPropertyChangeListener listener) { - fListeners.remove(listener); - } + fListeners.remove(listener); + } - /** - * Fires a property change notification for the given category. - * - * @param category category that has changed - */ - protected void fireCategoryChanged(IAdaptable category) { - if (fListeners.isEmpty()) { - return; - } - final PropertyChangeEvent event = new PropertyChangeEvent(this, P_CATEGORY_CHANGED, category, null); + /** + * Fires a property change notification for the given category. + * + * @param category category that has changed + */ + protected void fireCategoryChanged(IAdaptable category) { + if (fListeners.isEmpty()) { + return; + } + final PropertyChangeEvent event = new PropertyChangeEvent(this, P_CATEGORY_CHANGED, category, null); for (IPropertyChangeListener iPropertyChangeListener : fListeners) { final IPropertyChangeListener listener = iPropertyChangeListener; - ISafeRunnable runnable = new ISafeRunnable() { - @Override + ISafeRunnable runnable = new ISafeRunnable() { + @Override public void handleException(Throwable exception) { - DebugUIPlugin.log(exception); - } - @Override + DebugUIPlugin.log(exception); + } + @Override public void run() throws Exception { - listener.propertyChange(event); - } - }; - SafeRunner.run(runnable); - } - } + listener.propertyChange(event); + } + }; + SafeRunner.run(runnable); + } + } - @Override + @Override public IAdaptable[] getCategories() { - return null; - } + return null; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/AbstractDebugView.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/AbstractDebugView.java index ea5438a74..073504821 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/AbstractDebugView.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/AbstractDebugView.java @@ -678,7 +678,7 @@ public abstract class AbstractDebugView extends PageBookView implements IDebugVi * Sets the viewer for this view. * * @param viewer viewer - * @since 3.1 + * @since 3.1 */ protected void setViewer(Viewer viewer) { fViewer = viewer; @@ -789,7 +789,7 @@ public abstract class AbstractDebugView extends PageBookView implements IDebugVi * Registers the given runnable with the display * associated with this view's control, if any. * @param r the {@link Runnable} to run - * + * * @see org.eclipse.swt.widgets.Display#syncExec(java.lang.Runnable) */ public void syncExec(Runnable r) { diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/BreakpointTypeCategory.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/BreakpointTypeCategory.java index 7a5199cd5..bc4e4fb6c 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/BreakpointTypeCategory.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/BreakpointTypeCategory.java @@ -100,6 +100,6 @@ public class BreakpointTypeCategory extends PlatformObject implements IBreakpoin @Override public String toString() { - return fName; + return fName; } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/CommonTab.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/CommonTab.java index 559197f64..9ac350da1 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/CommonTab.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/CommonTab.java @@ -128,16 +128,16 @@ public class CommonTab extends AbstractLaunchConfigurationTab { private Text fSharedLocationText; private Button fSharedLocationButton; private Button fLaunchInBackgroundButton; - private Button fDefaultEncodingButton; - private Button fAltEncodingButton; - private Combo fEncodingCombo; + private Button fDefaultEncodingButton; + private Button fAltEncodingButton; + private Combo fEncodingCombo; private Button fConsoleOutput; - private Button fFileOutput; - private Button fFileBrowse; - private Text fFileText; - private Button fVariables; - private Button fAppend; - private Button fWorkspaceBrowse; + private Button fFileOutput; + private Button fFileBrowse; + private Text fFileText; + private Button fVariables; + private Button fAppend; + private Button fWorkspaceBrowse; private Button fInputFileCheckButton; private Text fInputFileLocationText; @@ -160,7 +160,7 @@ public class CommonTab extends AbstractLaunchConfigurationTab { } }; - /** + /** * Constructs a new tab with default context help. */ public CommonTab() { @@ -260,96 +260,96 @@ public class CommonTab extends AbstractLaunchConfigurationTab { setSharedEnabled(false); } - /** - * Creates the component set for the capture output composite - * @param parent the parent to add this component to - */ + /** + * Creates the component set for the capture output composite + * @param parent the parent to add this component to + */ private void createOutputCaptureComponent(Composite parent) { - Group group = SWTFactory.createGroup(parent, LaunchConfigurationsMessages.CommonTab_4, 5, 2, GridData.FILL_HORIZONTAL); + Group group = SWTFactory.createGroup(parent, LaunchConfigurationsMessages.CommonTab_4, 5, 2, GridData.FILL_HORIZONTAL); createInputCaptureComponent(group); Composite comp = SWTFactory.createComposite(group, group.getFont(), 5, 5, GridData.FILL_BOTH, 0, 0); fFileOutput = createCheckButton(comp, LaunchConfigurationsMessages.CommonTab_6); - fFileOutput.setLayoutData(new GridData(SWT.BEGINNING, SWT.NORMAL, false, false)); - fFileOutput.addSelectionListener(new SelectionAdapter() { - @Override + fFileOutput.setLayoutData(new GridData(SWT.BEGINNING, SWT.NORMAL, false, false)); + fFileOutput.addSelectionListener(new SelectionAdapter() { + @Override public void widgetSelected(SelectionEvent e) { - enableOuputCaptureWidgets(fFileOutput.getSelection()); - updateLaunchConfigurationDialog(); - } - }); - fFileText = SWTFactory.createSingleText(comp, 4); - fFileText.getAccessible().addAccessibleListener(new AccessibleAdapter() { - @Override + enableOuputCaptureWidgets(fFileOutput.getSelection()); + updateLaunchConfigurationDialog(); + } + }); + fFileText = SWTFactory.createSingleText(comp, 4); + fFileText.getAccessible().addAccessibleListener(new AccessibleAdapter() { + @Override public void getName(AccessibleEvent e) { - e.result = LaunchConfigurationsMessages.CommonTab_6; - } - }); - fFileText.addModifyListener(fBasicModifyListener); + e.result = LaunchConfigurationsMessages.CommonTab_6; + } + }); + fFileText.addModifyListener(fBasicModifyListener); - Composite bcomp = SWTFactory.createComposite(comp, 3, 5, GridData.HORIZONTAL_ALIGN_END); + Composite bcomp = SWTFactory.createComposite(comp, 3, 5, GridData.HORIZONTAL_ALIGN_END); GridLayout ld = (GridLayout)bcomp.getLayout(); - ld.marginHeight = 1; - ld.marginWidth = 0; - fWorkspaceBrowse = createPushButton(bcomp, LaunchConfigurationsMessages.CommonTab_12, null); - fWorkspaceBrowse.addSelectionListener(new SelectionAdapter() { - @Override + ld.marginHeight = 1; + ld.marginWidth = 0; + fWorkspaceBrowse = createPushButton(bcomp, LaunchConfigurationsMessages.CommonTab_12, null); + fWorkspaceBrowse.addSelectionListener(new SelectionAdapter() { + @Override public void widgetSelected(SelectionEvent e) { - ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog(getShell(), new WorkbenchLabelProvider(), new WorkbenchContentProvider()); - dialog.setTitle(LaunchConfigurationsMessages.CommonTab_13); - dialog.setMessage(LaunchConfigurationsMessages.CommonTab_14); - dialog.setInput(ResourcesPlugin.getWorkspace().getRoot()); - dialog.setComparator(new ResourceComparator(ResourceComparator.NAME)); - dialog.setDialogBoundsSettings(getDialogBoundsSettings(WORKSPACE_SELECTION_DIALOG), Dialog.DIALOG_PERSISTSIZE); - if (dialog.open() == IDialogConstants.OK_ID) { - IResource resource = (IResource) dialog.getFirstResult(); - if(resource != null) { - String arg = resource.getFullPath().toString(); - String fileLoc = VariablesPlugin.getDefault().getStringVariableManager().generateVariableExpression("workspace_loc", arg); //$NON-NLS-1$ - fFileText.setText(fileLoc); - } - } - } - }); - fFileBrowse = createPushButton(bcomp, LaunchConfigurationsMessages.CommonTab_7, null); - fFileBrowse.addSelectionListener(new SelectionAdapter() { - @Override + ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog(getShell(), new WorkbenchLabelProvider(), new WorkbenchContentProvider()); + dialog.setTitle(LaunchConfigurationsMessages.CommonTab_13); + dialog.setMessage(LaunchConfigurationsMessages.CommonTab_14); + dialog.setInput(ResourcesPlugin.getWorkspace().getRoot()); + dialog.setComparator(new ResourceComparator(ResourceComparator.NAME)); + dialog.setDialogBoundsSettings(getDialogBoundsSettings(WORKSPACE_SELECTION_DIALOG), Dialog.DIALOG_PERSISTSIZE); + if (dialog.open() == IDialogConstants.OK_ID) { + IResource resource = (IResource) dialog.getFirstResult(); + if(resource != null) { + String arg = resource.getFullPath().toString(); + String fileLoc = VariablesPlugin.getDefault().getStringVariableManager().generateVariableExpression("workspace_loc", arg); //$NON-NLS-1$ + fFileText.setText(fileLoc); + } + } + } + }); + fFileBrowse = createPushButton(bcomp, LaunchConfigurationsMessages.CommonTab_7, null); + fFileBrowse.addSelectionListener(new SelectionAdapter() { + @Override public void widgetSelected(SelectionEvent e) { - String filePath = fFileText.getText(); + String filePath = fFileText.getText(); FileDialog dialog = new FileDialog(getShell(), SWT.SAVE | SWT.SHEET); - filePath = dialog.open(); - if (filePath != null) { - fFileText.setText(filePath); - } - } - }); - fVariables = createPushButton(bcomp, LaunchConfigurationsMessages.CommonTab_9, null); - fVariables.addSelectionListener(new SelectionListener() { - @Override + filePath = dialog.open(); + if (filePath != null) { + fFileText.setText(filePath); + } + } + }); + fVariables = createPushButton(bcomp, LaunchConfigurationsMessages.CommonTab_9, null); + fVariables.addSelectionListener(new SelectionListener() { + @Override public void widgetSelected(SelectionEvent e) { - StringVariableSelectionDialog dialog = new StringVariableSelectionDialog(getShell()); + StringVariableSelectionDialog dialog = new StringVariableSelectionDialog(getShell()); dialog.open(); String variable = dialog.getVariableExpression(); if (variable != null) { fFileText.insert(variable); } - } - @Override + } + @Override public void widgetDefaultSelected(SelectionEvent e) {} - }); - fAppend = createCheckButton(comp, LaunchConfigurationsMessages.CommonTab_11); + }); + fAppend = createCheckButton(comp, LaunchConfigurationsMessages.CommonTab_11); GridData gd = new GridData(SWT.LEFT, SWT.TOP, true, false); - gd.horizontalSpan = 4; - fAppend.setLayoutData(gd); + gd.horizontalSpan = 4; + fAppend.setLayoutData(gd); fAppend.addSelectionListener(new SelectionAdapter() { - @Override + @Override public void widgetSelected(SelectionEvent e) { - updateLaunchConfigurationDialog(); - } + updateLaunchConfigurationDialog(); + } }); - } + } - private void createInputCaptureComponent(Composite parent){ + private void createInputCaptureComponent(Composite parent){ Composite comp1 = SWTFactory.createComposite(parent, parent.getFont(), 5, 5, GridData.FILL_BOTH, 0, 0); fConsoleOutput = createCheckButton(comp1, LaunchConfigurationsMessages.CommonTab_5); fConsoleOutput.addSelectionListener(new SelectionAdapter() { @@ -450,30 +450,30 @@ public class CommonTab extends AbstractLaunchConfigurationTab { }); setInputFileEnabled(false); - } - /** - * Enables or disables the output capture widgets based on the the specified enablement - * @param enable if the output capture widgets should be enabled or not - * @since 3.2 - */ - private void enableOuputCaptureWidgets(boolean enable) { - fFileText.setEnabled(enable); - fFileBrowse.setEnabled(enable); - fWorkspaceBrowse.setEnabled(enable); - fVariables.setEnabled(enable); - fAppend.setEnabled(enable); - } - - /** - * Returns the default encoding for the specified config - * @param config the configuration to get the encoding for - * @return the default encoding - * - * @since 3.4 - */ - private String getDefaultEncoding(ILaunchConfiguration config) { - try { - IResource[] resources = config.getMappedResources(); + } + /** + * Enables or disables the output capture widgets based on the the specified enablement + * @param enable if the output capture widgets should be enabled or not + * @since 3.2 + */ + private void enableOuputCaptureWidgets(boolean enable) { + fFileText.setEnabled(enable); + fFileBrowse.setEnabled(enable); + fWorkspaceBrowse.setEnabled(enable); + fVariables.setEnabled(enable); + fAppend.setEnabled(enable); + } + + /** + * Returns the default encoding for the specified config + * @param config the configuration to get the encoding for + * @return the default encoding + * + * @since 3.4 + */ + private String getDefaultEncoding(ILaunchConfiguration config) { + try { + IResource[] resources = config.getMappedResources(); if(resources != null && resources.length > 0) { IResource res = resources[0]; if(res instanceof IFile) { @@ -483,62 +483,62 @@ public class CommonTab extends AbstractLaunchConfigurationTab { return ((IContainer)res).getDefaultCharset(); } } - } - catch(CoreException ce) { - DebugUIPlugin.log(ce); - } - return ResourcesPlugin.getEncoding(); - } - - /** - * Creates the encoding component - * @param parent the parent to add this composite to - */ - private void createEncodingComponent(Composite parent) { - Group group = SWTFactory.createGroup(parent, LaunchConfigurationsMessages.CommonTab_1, 2, 1, GridData.FILL_BOTH); - - fDefaultEncodingButton = createRadioButton(group, IInternalDebugCoreConstants.EMPTY_STRING); - GridData gd = new GridData(SWT.BEGINNING, SWT.NORMAL, true, false); - gd.horizontalSpan = 2; - fDefaultEncodingButton.setLayoutData(gd); - - fAltEncodingButton = createRadioButton(group, LaunchConfigurationsMessages.CommonTab_3); - fAltEncodingButton.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING)); - - fEncodingCombo = new Combo(group, SWT.NONE); - fEncodingCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - fEncodingCombo.setFont(parent.getFont()); - List<String> allEncodings = IDEEncoding.getIDEEncodings(); - String[] encodingArray = allEncodings.toArray(new String[0]); - fEncodingCombo.setItems(encodingArray); - if (encodingArray.length > 0) { - fEncodingCombo.select(0); - } - fEncodingCombo.getAccessible().addAccessibleListener(new AccessibleAdapter() { - @Override + } + catch(CoreException ce) { + DebugUIPlugin.log(ce); + } + return ResourcesPlugin.getEncoding(); + } + + /** + * Creates the encoding component + * @param parent the parent to add this composite to + */ + private void createEncodingComponent(Composite parent) { + Group group = SWTFactory.createGroup(parent, LaunchConfigurationsMessages.CommonTab_1, 2, 1, GridData.FILL_BOTH); + + fDefaultEncodingButton = createRadioButton(group, IInternalDebugCoreConstants.EMPTY_STRING); + GridData gd = new GridData(SWT.BEGINNING, SWT.NORMAL, true, false); + gd.horizontalSpan = 2; + fDefaultEncodingButton.setLayoutData(gd); + + fAltEncodingButton = createRadioButton(group, LaunchConfigurationsMessages.CommonTab_3); + fAltEncodingButton.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING)); + + fEncodingCombo = new Combo(group, SWT.NONE); + fEncodingCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + fEncodingCombo.setFont(parent.getFont()); + List<String> allEncodings = IDEEncoding.getIDEEncodings(); + String[] encodingArray = allEncodings.toArray(new String[0]); + fEncodingCombo.setItems(encodingArray); + if (encodingArray.length > 0) { + fEncodingCombo.select(0); + } + fEncodingCombo.getAccessible().addAccessibleListener(new AccessibleAdapter() { + @Override public void getName(AccessibleEvent e) { - e.result = LaunchConfigurationsMessages.CommonTab_3; - } - }); - SelectionListener listener = new SelectionAdapter() { - @Override + e.result = LaunchConfigurationsMessages.CommonTab_3; + } + }); + SelectionListener listener = new SelectionAdapter() { + @Override public void widgetSelected(SelectionEvent e) { - if(e.getSource() instanceof Button) { - Button button = (Button)e.getSource(); - if(button.getSelection()) { - updateLaunchConfigurationDialog(); - fEncodingCombo.setEnabled(fAltEncodingButton.getSelection() == true); - } - } - else { - updateLaunchConfigurationDialog(); - } - } - }; - fAltEncodingButton.addSelectionListener(listener); - fDefaultEncodingButton.addSelectionListener(listener); - fEncodingCombo.addSelectionListener(listener); - fEncodingCombo.addKeyListener(new KeyAdapter() { + if(e.getSource() instanceof Button) { + Button button = (Button)e.getSource(); + if(button.getSelection()) { + updateLaunchConfigurationDialog(); + fEncodingCombo.setEnabled(fAltEncodingButton.getSelection() == true); + } + } + else { + updateLaunchConfigurationDialog(); + } + } + }; + fAltEncodingButton.addSelectionListener(listener); + fDefaultEncodingButton.addSelectionListener(listener); + fEncodingCombo.addSelectionListener(listener); + fEncodingCombo.addKeyListener(new KeyAdapter() { @Override public void keyReleased(KeyEvent e) { scheduleUpdateJob(); @@ -658,9 +658,9 @@ public class CommonTab extends AbstractLaunchConfigurationTab { String currentContainerString = fSharedLocationText.getText(); IContainer currentContainer = getContainer(currentContainerString); ContainerSelectionDialog dialog = new ContainerSelectionDialog(getShell(), - currentContainer, - false, - LaunchConfigurationsMessages.CommonTab_Select_a_location_for_the_launch_configuration_13); + currentContainer, + false, + LaunchConfigurationsMessages.CommonTab_Select_a_location_for_the_launch_configuration_13); dialog.showClosedProjects(false); dialog.setDialogBoundsSettings(getDialogBoundsSettings(SHARED_LAUNCH_CONFIGURATON_DIALOG), Dialog.DIALOG_PERSISTSIZE); dialog.open(); @@ -706,33 +706,33 @@ public class CommonTab extends AbstractLaunchConfigurationTab { updateConsoleOutput(configuration); } - /** - * Updates the console output form the local configuration - * @param configuration the local configuration - */ - private void updateConsoleOutput(ILaunchConfiguration configuration) { - boolean outputToConsole = true; + /** + * Updates the console output form the local configuration + * @param configuration the local configuration + */ + private void updateConsoleOutput(ILaunchConfiguration configuration) { + boolean outputToConsole = true; String stdinFromFile = null; - String outputFile = null; - boolean append = false; + String outputFile = null; + boolean append = false; - try { - outputToConsole = configuration.getAttribute(IDebugUIConstants.ATTR_CAPTURE_IN_CONSOLE, true); + try { + outputToConsole = configuration.getAttribute(IDebugUIConstants.ATTR_CAPTURE_IN_CONSOLE, true); stdinFromFile = configuration.getAttribute(IDebugUIConstants.ATTR_CAPTURE_STDIN_FILE, (String) null); - outputFile = configuration.getAttribute(IDebugUIConstants.ATTR_CAPTURE_IN_FILE, (String)null); - append = configuration.getAttribute(IDebugUIConstants.ATTR_APPEND_TO_FILE, false); - } catch (CoreException e) { - } + outputFile = configuration.getAttribute(IDebugUIConstants.ATTR_CAPTURE_IN_FILE, (String)null); + append = configuration.getAttribute(IDebugUIConstants.ATTR_APPEND_TO_FILE, false); + } catch (CoreException e) { + } fConsoleOutput.setSelection(outputToConsole); - fAppend.setSelection(append); - boolean haveOutputFile= outputFile != null; - if (haveOutputFile) { - fFileText.setText(outputFile); - } - fFileOutput.setSelection(haveOutputFile); - enableOuputCaptureWidgets(haveOutputFile); + fAppend.setSelection(append); + boolean haveOutputFile= outputFile != null; + if (haveOutputFile) { + fFileText.setText(outputFile); + } + fFileOutput.setSelection(haveOutputFile); + enableOuputCaptureWidgets(haveOutputFile); boolean haveInputFile = stdinFromFile != null; if (haveInputFile) { @@ -740,13 +740,13 @@ public class CommonTab extends AbstractLaunchConfigurationTab { } fInputFileCheckButton.setSelection(haveInputFile); setInputFileEnabled(haveInputFile); - } + } - /** - * Updates the launch on background check button - * @param configuration the local launch configuration - */ - protected void updateLaunchInBackground(ILaunchConfiguration configuration) { + /** + * Updates the launch on background check button + * @param configuration the local launch configuration + */ + protected void updateLaunchInBackground(ILaunchConfiguration configuration) { fLaunchInBackgroundButton.setSelection(isLaunchInBackground(configuration)); } @@ -755,24 +755,24 @@ public class CommonTab extends AbstractLaunchConfigurationTab { * @param configuration the local configuration */ private void updateEncoding(ILaunchConfiguration configuration) { - String encoding = null; - try { - encoding = configuration.getAttribute(DebugPlugin.ATTR_CONSOLE_ENCODING, (String)null); - } catch (CoreException e) { - } - String defaultEncoding = getDefaultEncoding(configuration); + String encoding = null; + try { + encoding = configuration.getAttribute(DebugPlugin.ATTR_CONSOLE_ENCODING, (String)null); + } catch (CoreException e) { + } + String defaultEncoding = getDefaultEncoding(configuration); fDefaultEncodingButton.setText(MessageFormat.format(LaunchConfigurationsMessages.CommonTab_2, new Object[] { defaultEncoding })); - fDefaultEncodingButton.pack(); - if (encoding != null) { - fAltEncodingButton.setSelection(true); - fDefaultEncodingButton.setSelection(false); - fEncodingCombo.setText(encoding); - fEncodingCombo.setEnabled(true); - } else { - fDefaultEncodingButton.setSelection(true); - fAltEncodingButton.setSelection(false); - fEncodingCombo.setEnabled(false); - } + fDefaultEncodingButton.pack(); + if (encoding != null) { + fAltEncodingButton.setSelection(true); + fDefaultEncodingButton.setSelection(false); + fEncodingCombo.setText(encoding); + fEncodingCombo.setEnabled(true); + } else { + fDefaultEncodingButton.setSelection(true); + fAltEncodingButton.setSelection(false); + fEncodingCombo.setEnabled(false); + } } /** @@ -925,42 +925,42 @@ public class CommonTab extends AbstractLaunchConfigurationTab { return validateLocalShared() && validateRedirectFile() && validateEncoding() && validateStdinFile(); } - /** - * validates the encoding selection - * @return true if the validate encoding is allowable, false otherwise - */ - private boolean validateEncoding() { - if (fAltEncodingButton.getSelection()) { - if (fEncodingCombo.getSelectionIndex() == -1) { - if (!isValidEncoding(fEncodingCombo.getText().trim())) { - setErrorMessage(LaunchConfigurationsMessages.CommonTab_15); - return false; - } - } - } - return true; - } - - /** - * Validates if the redirect file is valid - * @return true if the filename is not zero, false otherwise - */ - private boolean validateRedirectFile() { - if(fFileOutput.getSelection()) { - int len = fFileText.getText().trim().length(); - if (len == 0) { - setErrorMessage(LaunchConfigurationsMessages.CommonTab_8); - return false; - } - } - return true; - } - - /** - * validates the local shared config file location - * @return true if the local shared file exists, false otherwise - */ - private boolean validateLocalShared() { + /** + * validates the encoding selection + * @return true if the validate encoding is allowable, false otherwise + */ + private boolean validateEncoding() { + if (fAltEncodingButton.getSelection()) { + if (fEncodingCombo.getSelectionIndex() == -1) { + if (!isValidEncoding(fEncodingCombo.getText().trim())) { + setErrorMessage(LaunchConfigurationsMessages.CommonTab_15); + return false; + } + } + } + return true; + } + + /** + * Validates if the redirect file is valid + * @return true if the filename is not zero, false otherwise + */ + private boolean validateRedirectFile() { + if(fFileOutput.getSelection()) { + int len = fFileText.getText().trim().length(); + if (len == 0) { + setErrorMessage(LaunchConfigurationsMessages.CommonTab_8); + return false; + } + } + return true; + } + + /** + * validates the local shared config file location + * @return true if the local shared file exists, false otherwise + */ + private boolean validateLocalShared() { if (isShared()) { String path = fSharedLocationText.getText().trim(); IContainer container = getContainer(path); @@ -1004,15 +1004,15 @@ public class CommonTab extends AbstractLaunchConfigurationTab { setAttribute(IDebugUIConstants.ATTR_LAUNCH_IN_BACKGROUND, configuration, fLaunchInBackgroundButton.getSelection(), true); String encoding = null; if(fAltEncodingButton.getSelection()) { - encoding = fEncodingCombo.getText().trim(); + encoding = fEncodingCombo.getText().trim(); } configuration.setAttribute(DebugPlugin.ATTR_CONSOLE_ENCODING, encoding); boolean captureOutput = false; if (fConsoleOutput.getSelection()) { - captureOutput = true; + captureOutput = true; configuration.setAttribute(IDebugUIConstants.ATTR_CAPTURE_IN_CONSOLE, (String) null); } else { - configuration.setAttribute(IDebugUIConstants.ATTR_CAPTURE_IN_CONSOLE, false); + configuration.setAttribute(IDebugUIConstants.ATTR_CAPTURE_IN_CONSOLE, false); } if (fInputFileCheckButton.getSelection()) { configuration.setAttribute(IDebugUIConstants.ATTR_CAPTURE_STDIN_FILE, fInputFileLocationText.getText()); @@ -1020,22 +1020,22 @@ public class CommonTab extends AbstractLaunchConfigurationTab { configuration.setAttribute(IDebugUIConstants.ATTR_CAPTURE_STDIN_FILE, (String) null); } if (fFileOutput.getSelection()) { - captureOutput = true; - String file = fFileText.getText(); - configuration.setAttribute(IDebugUIConstants.ATTR_CAPTURE_IN_FILE, file); - if(fAppend.getSelection()) { - configuration.setAttribute(IDebugUIConstants.ATTR_APPEND_TO_FILE, true); - } else { - configuration.setAttribute(IDebugUIConstants.ATTR_APPEND_TO_FILE, (String)null); - } + captureOutput = true; + String file = fFileText.getText(); + configuration.setAttribute(IDebugUIConstants.ATTR_CAPTURE_IN_FILE, file); + if(fAppend.getSelection()) { + configuration.setAttribute(IDebugUIConstants.ATTR_APPEND_TO_FILE, true); + } else { + configuration.setAttribute(IDebugUIConstants.ATTR_APPEND_TO_FILE, (String)null); + } } else { - configuration.setAttribute(IDebugUIConstants.ATTR_CAPTURE_IN_FILE, (String)null); + configuration.setAttribute(IDebugUIConstants.ATTR_CAPTURE_IN_FILE, (String)null); } if (!captureOutput) { - configuration.setAttribute(DebugPlugin.ATTR_CAPTURE_OUTPUT, false); + configuration.setAttribute(DebugPlugin.ATTR_CAPTURE_OUTPUT, false); } else { - configuration.setAttribute(DebugPlugin.ATTR_CAPTURE_OUTPUT, (String)null); + configuration.setAttribute(DebugPlugin.ATTR_CAPTURE_OUTPUT, (String)null); } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/DebugElementWorkbenchAdapter.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/DebugElementWorkbenchAdapter.java index ae1c7aa60..310bdbcea 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/DebugElementWorkbenchAdapter.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/DebugElementWorkbenchAdapter.java @@ -37,29 +37,29 @@ import org.eclipse.ui.model.IWorkbenchAdapter2; @Deprecated public abstract class DebugElementWorkbenchAdapter implements IWorkbenchAdapter, IWorkbenchAdapter2 { - @Override + @Override public ImageDescriptor getImageDescriptor(Object object) { - return DebugElementHelper.getImageDescriptor(object); - } + return DebugElementHelper.getImageDescriptor(object); + } - @Override + @Override public String getLabel(Object o) { - return DebugElementHelper.getLabel(o); - } + return DebugElementHelper.getLabel(o); + } - @Override + @Override public RGB getForeground(Object element) { - return DebugElementHelper.getForeground(element); - } + return DebugElementHelper.getForeground(element); + } - @Override + @Override public RGB getBackground(Object element) { - return DebugElementHelper.getBackground(element); - } + return DebugElementHelper.getBackground(element); + } - @Override + @Override public FontData getFont(Object element) { - return DebugElementHelper.getFont(element); - } + return DebugElementHelper.getFont(element); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/DebugPopup.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/DebugPopup.java index 134ff6bf9..d939d751d 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/DebugPopup.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/DebugPopup.java @@ -46,167 +46,167 @@ import com.ibm.icu.text.MessageFormat; */ public abstract class DebugPopup extends PopupDialog { - private Point fAnchor; + private Point fAnchor; - private IHandlerActivation fActivation; + private IHandlerActivation fActivation; - private IHandlerService fHandlerService; + private IHandlerService fHandlerService; private String fCommandId; private boolean fPersisted = false; - /** - * Constructs a new popup dialog of type <code>PopupDialog.INFOPOPUPRESIZE_SHELLSTYLE</code> - * @param parent The parent shell - * @param anchor point at which to anchor the popup dialog in Display coordinate space. - * Since 3.3, <code>null</code> can be specified to use a default anchor point - * @param commandId The command id to be used for persistence of - * the dialog, or <code>null</code> - */ - public DebugPopup(Shell parent, Point anchor, String commandId) { - super(parent, PopupDialog.INFOPOPUPRESIZE_SHELLSTYLE, true, true, false, true, false, null, null); - fAnchor = anchor; - fCommandId = commandId; - } - - /** - * Returns the text to be shown in the popups's information area. - * May return <code>null</code>. - * <p> - * By default, if this dialog has a persistence command associated with it, - * the text displayed is of the form "Press {key-sequence} to {action}". The - * action text is specified by the method <code>getActionText()</code>. - * </p> - * @return The text to be shown in the popup's information area or <code>null</code> - */ - protected String getInfoText() { - if (getCommandId() != null && getActionText() != null) { - IWorkbench workbench = PlatformUI.getWorkbench(); - IBindingService bindingService = workbench.getAdapter(IBindingService.class); - String formattedBinding = bindingService.getBestActiveBindingFormattedFor(getCommandId()); - - String infoText = null; - if (formattedBinding != null) { + /** + * Constructs a new popup dialog of type <code>PopupDialog.INFOPOPUPRESIZE_SHELLSTYLE</code> + * @param parent The parent shell + * @param anchor point at which to anchor the popup dialog in Display coordinate space. + * Since 3.3, <code>null</code> can be specified to use a default anchor point + * @param commandId The command id to be used for persistence of + * the dialog, or <code>null</code> + */ + public DebugPopup(Shell parent, Point anchor, String commandId) { + super(parent, PopupDialog.INFOPOPUPRESIZE_SHELLSTYLE, true, true, false, true, false, null, null); + fAnchor = anchor; + fCommandId = commandId; + } + + /** + * Returns the text to be shown in the popups's information area. + * May return <code>null</code>. + * <p> + * By default, if this dialog has a persistence command associated with it, + * the text displayed is of the form "Press {key-sequence} to {action}". The + * action text is specified by the method <code>getActionText()</code>. + * </p> + * @return The text to be shown in the popup's information area or <code>null</code> + */ + protected String getInfoText() { + if (getCommandId() != null && getActionText() != null) { + IWorkbench workbench = PlatformUI.getWorkbench(); + IBindingService bindingService = workbench.getAdapter(IBindingService.class); + String formattedBinding = bindingService.getBestActiveBindingFormattedFor(getCommandId()); + + String infoText = null; + if (formattedBinding != null) { infoText = MessageFormat.format(DebugUIViewsMessages.InspectPopupDialog_1, new Object[] { formattedBinding, getActionText() }); - } - return infoText; - } - return null; - } - - /** - * Returns the text to be shown as the action performed when this dialog's - * persist command is invoked, or <code>null</code>. - * <p> - * Subclasses should override as necessary. - * </p> - * @return the text to be shown as the action performed when this dialog's - * persist command is invoked - */ - protected String getActionText() { - return null; - } - - /** - * Returns the command id to be used for persisting the contents of the - * dialog. If the contents should not be persisted, this method should - * return null. - * - * @return The command id to be used for persisting the contents of the - * dialog or <code>null</code> - */ - protected String getCommandId() { - return fCommandId; - } - - /** - * Persists the contents of the dialog. Subclasses should override as required, - * but also call super.persist(). - */ - protected void persist() { - fPersisted = true; - } - - /** - * Returns whether the command handler was invoked to persist this popup's result. - * - * @return whether the command handler was invoked to persist this popup's result - */ - protected boolean wasPersisted() { - return fPersisted; - } - - @Override + } + return infoText; + } + return null; + } + + /** + * Returns the text to be shown as the action performed when this dialog's + * persist command is invoked, or <code>null</code>. + * <p> + * Subclasses should override as necessary. + * </p> + * @return the text to be shown as the action performed when this dialog's + * persist command is invoked + */ + protected String getActionText() { + return null; + } + + /** + * Returns the command id to be used for persisting the contents of the + * dialog. If the contents should not be persisted, this method should + * return null. + * + * @return The command id to be used for persisting the contents of the + * dialog or <code>null</code> + */ + protected String getCommandId() { + return fCommandId; + } + + /** + * Persists the contents of the dialog. Subclasses should override as required, + * but also call super.persist(). + */ + protected void persist() { + fPersisted = true; + } + + /** + * Returns whether the command handler was invoked to persist this popup's result. + * + * @return whether the command handler was invoked to persist this popup's result + */ + protected boolean wasPersisted() { + return fPersisted; + } + + @Override protected abstract Control createDialogArea(Composite parent); - /** - * Returns the initial location to use for the shell based upon the - * current selection in the viewer. Bottom is preferred to top, and - * right is preferred to left, therefore if possible the popup will - * be located below and to the right of the selection. - * - * @param initialSize - * the initial size of the shell, as returned by - * <code>getInitialSize</code>. - * @return the initial location of the shell - */ - @Override + /** + * Returns the initial location to use for the shell based upon the + * current selection in the viewer. Bottom is preferred to top, and + * right is preferred to left, therefore if possible the popup will + * be located below and to the right of the selection. + * + * @param initialSize + * the initial size of the shell, as returned by + * <code>getInitialSize</code>. + * @return the initial location of the shell + */ + @Override protected Point getInitialLocation(Point initialSize) { - if (fAnchor == null) { - return super.getInitialLocation(initialSize); - } - Point point = fAnchor; - Rectangle monitor = getShell().getMonitor().getClientArea(); - if (monitor.width < point.x + initialSize.x) { - point.x = Math.max(0, point.x - initialSize.x); - } - if (monitor.height < point.y + initialSize.y) { - point.y = Math.max(0, point.y - initialSize.y); - } - return point; - } - - @Override + if (fAnchor == null) { + return super.getInitialLocation(initialSize); + } + Point point = fAnchor; + Rectangle monitor = getShell().getMonitor().getClientArea(); + if (monitor.width < point.x + initialSize.x) { + point.x = Math.max(0, point.x - initialSize.x); + } + if (monitor.height < point.y + initialSize.y) { + point.y = Math.max(0, point.y - initialSize.y); + } + return point; + } + + @Override protected IDialogSettings getDialogSettings() { - IDialogSettings settings = DebugUIPlugin.getDefault().getDialogSettings(); - return settings; - } + IDialogSettings settings = DebugUIPlugin.getDefault().getDialogSettings(); + return settings; + } - @Override + @Override public int open() { - IWorkbench workbench = PlatformUI.getWorkbench(); - String commandId = getCommandId(); - if (commandId != null) { - IHandler fCloseHandler = new AbstractHandler() { - @Override + IWorkbench workbench = PlatformUI.getWorkbench(); + String commandId = getCommandId(); + if (commandId != null) { + IHandler fCloseHandler = new AbstractHandler() { + @Override public Object execute(ExecutionEvent event) throws ExecutionException { - persist(); - close(); - return null; - } - }; - - fHandlerService = workbench.getAdapter(IHandlerService.class); - fActivation = fHandlerService.activateHandler(commandId, fCloseHandler); - } - - String infoText = getInfoText(); - if (infoText != null) { + persist(); + close(); + return null; + } + }; + + fHandlerService = workbench.getAdapter(IHandlerService.class); + fActivation = fHandlerService.activateHandler(commandId, fCloseHandler); + } + + String infoText = getInfoText(); + if (infoText != null) { setInfoText(infoText); } - return super.open(); - } + return super.open(); + } - @Override + @Override public boolean close() { - if (fActivation != null) { + if (fActivation != null) { fHandlerService.deactivateHandler(fActivation); } - return super.close(); - } + return super.close(); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/DebugUITools.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/DebugUITools.java index 91baf81e1..886f32ef6 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/DebugUITools.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/DebugUITools.java @@ -236,7 +236,7 @@ public class DebugUITools { } /** - * Returns the element of the currently selected context in the + * Returns the element of the currently selected context in the * active workbench window. Returns <code>null</code> if there is no * current debug context. * <p> @@ -247,38 +247,38 @@ public class DebugUITools { * @since 2.0 */ public static IAdaptable getDebugContext() { - IWorkbenchWindow activeWindow = SelectedResourceManager.getDefault().getActiveWindow(); - if (activeWindow != null) { - ISelection activeContext = DebugUITools.getDebugContextManager().getContextService(activeWindow).getActiveContext(); - return getDebugContextElementForSelection(activeContext); - } - return null; + IWorkbenchWindow activeWindow = SelectedResourceManager.getDefault().getActiveWindow(); + if (activeWindow != null) { + ISelection activeContext = DebugUITools.getDebugContextManager().getContextService(activeWindow).getActiveContext(); + return getDebugContextElementForSelection(activeContext); + } + return null; } - /** - * Returns the currently selected context in the given part or part's - * workbench window. Returns <code>null</code> if there is no current - * debug context. - * @param part workbench part where the active context is to be evaluated - * @return the currently selected debug context in the given workbench part, - * or <code>null</code> - * @since 3.8 - * @see IDebugContextService#getActiveContext(String) - * @see IDebugContextService#getActiveContext(String, String) - */ - public static ISelection getDebugContextForPart(IWorkbenchPart part) { - IWorkbenchPartSite site = part.getSite(); - IWorkbenchWindow partWindow = site.getWorkbenchWindow(); - if (partWindow != null) { - IDebugContextService contextService = DebugUITools.getDebugContextManager().getContextService(partWindow); - if (site instanceof IViewSite) { - return contextService.getActiveContext(site.getId(), ((IViewSite)site).getSecondaryId()); - } else { - return contextService.getActiveContext(site.getId()); - } - } - return null; - } + /** + * Returns the currently selected context in the given part or part's + * workbench window. Returns <code>null</code> if there is no current + * debug context. + * @param part workbench part where the active context is to be evaluated + * @return the currently selected debug context in the given workbench part, + * or <code>null</code> + * @since 3.8 + * @see IDebugContextService#getActiveContext(String) + * @see IDebugContextService#getActiveContext(String, String) + */ + public static ISelection getDebugContextForPart(IWorkbenchPart part) { + IWorkbenchPartSite site = part.getSite(); + IWorkbenchWindow partWindow = site.getWorkbenchWindow(); + if (partWindow != null) { + IDebugContextService contextService = DebugUITools.getDebugContextManager().getContextService(partWindow); + if (site instanceof IViewSite) { + return contextService.getActiveContext(site.getId(), ((IViewSite)site).getSecondaryId()); + } else { + return contextService.getActiveContext(site.getId()); + } + } + return null; + } /** * Return the undo context that should be used for operations involving breakpoints. @@ -354,7 +354,7 @@ public class DebugUITools { } } - /** + /** * Returns the currently active context for the given workbench part. Returns * <code>null</code> if there is no current debug context. * @@ -363,88 +363,88 @@ public class DebugUITools { * <code>null</code> * @since 3.7 */ - public static IAdaptable getPartDebugContext(IWorkbenchPartSite site) { - IDebugContextService service = DebugUITools.getDebugContextManager().getContextService(site.getWorkbenchWindow()); - String id = null; - String secondaryId = null; - id = site.getId(); - if (site instanceof IViewSite) { - secondaryId = ((IViewSite)site).getSecondaryId(); - } - ISelection activeContext = service.getActiveContext(id, secondaryId); - return getDebugContextElementForSelection(activeContext); - } - - /** - * Adds the given debug context listener as a listener to the debug context changed events, in - * the context of the given workbench part. - * <p> - * This method is a utility method which ultimately calls - * {@link IDebugContextService#addDebugContextListener(IDebugContextListener, String, String)} - * using the part id parameters extracted from the given part parameter. - * </p> - * - * @param site the part's site to get the part ID and part secondary ID from - * @param listener Debug context listener to add - * - * @see IDebugContextService#addDebugContextListener(IDebugContextListener, String, String) - * @see IDebugContextManager#addDebugContextListener(IDebugContextListener) - * @since 3.7 - */ - public static void addPartDebugContextListener(IWorkbenchPartSite site, IDebugContextListener listener) { - IDebugContextService service = DebugUITools.getDebugContextManager().getContextService(site.getWorkbenchWindow()); - String id = site.getId(); - String secondaryId = null; - if (site instanceof IViewSite) { - secondaryId = ((IViewSite)site).getSecondaryId(); - } - service.addDebugContextListener(listener, id, secondaryId); - } - - /** - * Removes the given debug context listener as a listener to the debug context changed events, - * in the context of the given workbench part. - * <p> - * This method is a utility method which ultimately calls - * {@link IDebugContextService#removeDebugContextListener(IDebugContextListener, String, String)} - * using the part id parameters extracted from the given part parameter. - * </p> - * - * @param site the part's site to get the part ID and part secondary ID from - * @param listener Debug context listener to remove - * - * @see IDebugContextService#removeDebugContextListener(IDebugContextListener, String, String) - * @see IDebugContextManager#removeDebugContextListener(IDebugContextListener) - * @since 3.7 - */ - public static void removePartDebugContextListener(IWorkbenchPartSite site, IDebugContextListener listener) { - IDebugContextService service = DebugUITools.getDebugContextManager().getContextService(site.getWorkbenchWindow()); - String id = site.getId(); - String secondaryId = null; - if (site instanceof IViewSite) { - secondaryId = ((IViewSite)site).getSecondaryId(); - } - service.removeDebugContextListener(listener, id, secondaryId); - } - - /** + public static IAdaptable getPartDebugContext(IWorkbenchPartSite site) { + IDebugContextService service = DebugUITools.getDebugContextManager().getContextService(site.getWorkbenchWindow()); + String id = null; + String secondaryId = null; + id = site.getId(); + if (site instanceof IViewSite) { + secondaryId = ((IViewSite)site).getSecondaryId(); + } + ISelection activeContext = service.getActiveContext(id, secondaryId); + return getDebugContextElementForSelection(activeContext); + } + + /** + * Adds the given debug context listener as a listener to the debug context changed events, in + * the context of the given workbench part. + * <p> + * This method is a utility method which ultimately calls + * {@link IDebugContextService#addDebugContextListener(IDebugContextListener, String, String)} + * using the part id parameters extracted from the given part parameter. + * </p> + * + * @param site the part's site to get the part ID and part secondary ID from + * @param listener Debug context listener to add + * + * @see IDebugContextService#addDebugContextListener(IDebugContextListener, String, String) + * @see IDebugContextManager#addDebugContextListener(IDebugContextListener) + * @since 3.7 + */ + public static void addPartDebugContextListener(IWorkbenchPartSite site, IDebugContextListener listener) { + IDebugContextService service = DebugUITools.getDebugContextManager().getContextService(site.getWorkbenchWindow()); + String id = site.getId(); + String secondaryId = null; + if (site instanceof IViewSite) { + secondaryId = ((IViewSite)site).getSecondaryId(); + } + service.addDebugContextListener(listener, id, secondaryId); + } + + /** + * Removes the given debug context listener as a listener to the debug context changed events, + * in the context of the given workbench part. + * <p> + * This method is a utility method which ultimately calls + * {@link IDebugContextService#removeDebugContextListener(IDebugContextListener, String, String)} + * using the part id parameters extracted from the given part parameter. + * </p> + * + * @param site the part's site to get the part ID and part secondary ID from + * @param listener Debug context listener to remove + * + * @see IDebugContextService#removeDebugContextListener(IDebugContextListener, String, String) + * @see IDebugContextManager#removeDebugContextListener(IDebugContextListener) + * @since 3.7 + */ + public static void removePartDebugContextListener(IWorkbenchPartSite site, IDebugContextListener listener) { + IDebugContextService service = DebugUITools.getDebugContextManager().getContextService(site.getWorkbenchWindow()); + String id = site.getId(); + String secondaryId = null; + if (site instanceof IViewSite) { + secondaryId = ((IViewSite)site).getSecondaryId(); + } + service.removeDebugContextListener(listener, id, secondaryId); + } + + /** * Extracts the first element from the given selection and casts it to IAdaptable. * * @param activeContext the selection * @return an adaptable */ - private static IAdaptable getDebugContextElementForSelection(ISelection activeContext) { - if (activeContext instanceof IStructuredSelection) { - IStructuredSelection selection = (IStructuredSelection) activeContext; - if (!selection.isEmpty()) { - Object firstElement = selection.getFirstElement(); - if (firstElement instanceof IAdaptable) { - return (IAdaptable) firstElement; - } - } - } - return null; - } + private static IAdaptable getDebugContextElementForSelection(ISelection activeContext) { + if (activeContext instanceof IStructuredSelection) { + IStructuredSelection selection = (IStructuredSelection) activeContext; + if (!selection.isEmpty()) { + Object firstElement = selection.getFirstElement(); + if (firstElement instanceof IAdaptable) { + return (IAdaptable) firstElement; + } + } + } + return null; + } /** * Returns the currently selected resource in the active workbench window, @@ -480,11 +480,11 @@ public class DebugUITools { return ((IDebugElement)context).getDebugTarget().getProcess(); } - if (context instanceof IProcess) { + if (context instanceof IProcess) { return (IProcess)context; } - if (context instanceof ILaunch) { + if (context instanceof ILaunch) { ILaunch launch= (ILaunch)context; IDebugTarget target= launch.getDebugTarget(); if (target != null) { @@ -499,9 +499,9 @@ public class DebugUITools { } } - if (context != null) { - return context.getAdapter(IProcess.class); - } + if (context != null) { + return context.getAdapter(IProcess.class); + } return null; } @@ -683,37 +683,37 @@ public class DebugUITools { } /** - * Open the launch configuration dialog on the specified launch - * configuration. The dialog displays the tabs for a single configuration - * only (a tree of launch configuration is not displayed), and provides a - * launch (run or debug) button. - * <p> - * If a status is specified, a status handler is consulted to handle the - * status. The status handler is passed the instance of the launch - * configuration dialog that is opened. This gives the status handler an - * opportunity to perform error handling/initialization as required. - * </p> - * @param shell the parent shell for the launch configuration dialog - * @param configuration the configuration to display - * @param groupIdentifier group identifier of the launch group the launch configuration - * belongs to - * @param status the status to display, or <code>null</code> if none - * @return the return code from opening the launch configuration dialog - - * one of <code>Window.OK</code> or <code>Window.CANCEL</code>. <code>Window.CANCEL</code> + * Open the launch configuration dialog on the specified launch + * configuration. The dialog displays the tabs for a single configuration + * only (a tree of launch configuration is not displayed), and provides a + * launch (run or debug) button. + * <p> + * If a status is specified, a status handler is consulted to handle the + * status. The status handler is passed the instance of the launch + * configuration dialog that is opened. This gives the status handler an + * opportunity to perform error handling/initialization as required. + * </p> + * @param shell the parent shell for the launch configuration dialog + * @param configuration the configuration to display + * @param groupIdentifier group identifier of the launch group the launch configuration + * belongs to + * @param status the status to display, or <code>null</code> if none + * @return the return code from opening the launch configuration dialog - + * one of <code>Window.OK</code> or <code>Window.CANCEL</code>. <code>Window.CANCEL</code> * is returned if an invalid launch group identifier is provided. * @see ILaunchGroup - * @since 2.1 - */ - public static int openLaunchConfigurationDialog(Shell shell, ILaunchConfiguration configuration, String groupIdentifier, IStatus status) { - LaunchGroupExtension group = DebugUIPlugin.getDefault().getLaunchConfigurationManager().getLaunchGroup(groupIdentifier); - if (group != null) { - LaunchConfigurationDialog dialog = new LaunchConfigurationDialog(shell, configuration, group); - dialog.setInitialStatus(status); - return dialog.open(); - } - - return Window.CANCEL; - } + * @since 2.1 + */ + public static int openLaunchConfigurationDialog(Shell shell, ILaunchConfiguration configuration, String groupIdentifier, IStatus status) { + LaunchGroupExtension group = DebugUIPlugin.getDefault().getLaunchConfigurationManager().getLaunchGroup(groupIdentifier); + if (group != null) { + LaunchConfigurationDialog dialog = new LaunchConfigurationDialog(shell, configuration, group); + dialog.setInitialStatus(status); + return dialog.open(); + } + + return Window.CANCEL; + } /** * Saves all dirty editors and builds the workspace according to current @@ -1217,45 +1217,45 @@ public class DebugUITools { } } - /** - * Performs source lookup on the given artifact and returns the result. - * Optionally, a source locator may be specified. - * - * @param artifact object for which source is to be resolved - * @param locator the source locator to use, or <code>null</code>. When <code>null</code> - * a source locator is determined from the artifact, if possible. If the artifact - * is a debug element, the source locator from its associated launch is used. - * @return a source lookup result - * @since 3.1 - */ - public static ISourceLookupResult lookupSource(Object artifact, ISourceLocator locator) { + /** + * Performs source lookup on the given artifact and returns the result. + * Optionally, a source locator may be specified. + * + * @param artifact object for which source is to be resolved + * @param locator the source locator to use, or <code>null</code>. When <code>null</code> + * a source locator is determined from the artifact, if possible. If the artifact + * is a debug element, the source locator from its associated launch is used. + * @return a source lookup result + * @since 3.1 + */ + public static ISourceLookupResult lookupSource(Object artifact, ISourceLocator locator) { return SourceLookupFacility.getDefault().lookup(artifact, locator, false); - } - - /** - * Displays the given source lookup result in an editor in the given workbench - * page. Has no effect if the result has an unknown editor id or editor input. - * The editor is opened, positioned, and annotated. - * <p> - * Honors user preference for editors re-use. - * </p> - * @param result source lookup result to display - * @param page the page to display the result in - * @since 3.1 - */ - public static void displaySource(ISourceLookupResult result, IWorkbenchPage page) { - SourceLookupFacility.getDefault().display(result, page); - } - - /** - * Returns the memory rendering manager. - * - * @return the memory rendering manager - * @since 3.1 - */ - public static IMemoryRenderingManager getMemoryRenderingManager() { - return MemoryRenderingManager.getDefault(); - } + } + + /** + * Displays the given source lookup result in an editor in the given workbench + * page. Has no effect if the result has an unknown editor id or editor input. + * The editor is opened, positioned, and annotated. + * <p> + * Honors user preference for editors re-use. + * </p> + * @param result source lookup result to display + * @param page the page to display the result in + * @since 3.1 + */ + public static void displaySource(ISourceLookupResult result, IWorkbenchPage page) { + SourceLookupFacility.getDefault().display(result, page); + } + + /** + * Returns the memory rendering manager. + * + * @return the memory rendering manager + * @since 3.1 + */ + public static IMemoryRenderingManager getMemoryRenderingManager() { + return MemoryRenderingManager.getDefault(); + } /** * Returns the image associated with the specified type of source container @@ -1308,55 +1308,55 @@ public class DebugUITools { return DebugContextManager.getDefault(); } - /** - * Return the debug context for the given executionEvent or <code>null</code> if none. - * - * @param event The execution event that contains the application context - * @return the current debug context, or <code>null</code>. - * - * @since 3.5 - */ - public static ISelection getDebugContextForEvent(ExecutionEvent event) { - Object o = HandlerUtil.getVariable(event, IConfigurationElementConstants.DEBUG_CONTEXT); - if (o instanceof ISelection) { - return (ISelection) o; - } - return null; - } - - /** - * Return the debug context for the given executionEvent. - * - * @param event The execution event that contains the application context - * @return the debug context. Will not return <code>null</code>. - * @throws ExecutionException If the current selection variable is not found. - * - * @since 3.5 - */ - public static ISelection getDebugContextForEventChecked(ExecutionEvent event) - throws ExecutionException { - Object o = HandlerUtil.getVariableChecked(event, IConfigurationElementConstants.DEBUG_CONTEXT); - if (!(o instanceof ISelection)) { - throw new ExecutionException("Incorrect type for " //$NON-NLS-1$ - + IConfigurationElementConstants.DEBUG_CONTEXT - + " found while executing " //$NON-NLS-1$ - + event.getCommand().getId() - + ", expected " + ISelection.class.getName() //$NON-NLS-1$ - + " found " + o.getClass().getName()); //$NON-NLS-1$ - } - return (ISelection) o; - } - - /** - * Returns the global instance of toggle breakpoints target manager. - * - * @return toggle breakpoints target manager - * - * @since 3.8 - */ - public static IToggleBreakpointsTargetManager getToggleBreakpointsTargetManager() { - return ToggleBreakpointsTargetManager.getDefault(); - } + /** + * Return the debug context for the given executionEvent or <code>null</code> if none. + * + * @param event The execution event that contains the application context + * @return the current debug context, or <code>null</code>. + * + * @since 3.5 + */ + public static ISelection getDebugContextForEvent(ExecutionEvent event) { + Object o = HandlerUtil.getVariable(event, IConfigurationElementConstants.DEBUG_CONTEXT); + if (o instanceof ISelection) { + return (ISelection) o; + } + return null; + } + + /** + * Return the debug context for the given executionEvent. + * + * @param event The execution event that contains the application context + * @return the debug context. Will not return <code>null</code>. + * @throws ExecutionException If the current selection variable is not found. + * + * @since 3.5 + */ + public static ISelection getDebugContextForEventChecked(ExecutionEvent event) + throws ExecutionException { + Object o = HandlerUtil.getVariableChecked(event, IConfigurationElementConstants.DEBUG_CONTEXT); + if (!(o instanceof ISelection)) { + throw new ExecutionException("Incorrect type for " //$NON-NLS-1$ + + IConfigurationElementConstants.DEBUG_CONTEXT + + " found while executing " //$NON-NLS-1$ + + event.getCommand().getId() + + ", expected " + ISelection.class.getName() //$NON-NLS-1$ + + " found " + o.getClass().getName()); //$NON-NLS-1$ + } + return (ISelection) o; + } + + /** + * Returns the global instance of toggle breakpoints target manager. + * + * @return toggle breakpoints target manager + * + * @since 3.8 + */ + public static IToggleBreakpointsTargetManager getToggleBreakpointsTargetManager() { + return ToggleBreakpointsTargetManager.getDefault(); + } /** * Returns the ILaunchConfiguration corresponding to diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/DeferredDebugElementWorkbenchAdapter.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/DeferredDebugElementWorkbenchAdapter.java index fdf8b4422..755daac87 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/DeferredDebugElementWorkbenchAdapter.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/DeferredDebugElementWorkbenchAdapter.java @@ -39,31 +39,31 @@ public abstract class DeferredDebugElementWorkbenchAdapter extends DebugElementW /** * An empty collection of children */ - protected static final Object[] EMPTY = new Object[0]; + protected static final Object[] EMPTY = new Object[0]; - @Override + @Override public boolean isContainer() { - return true; - } + return true; + } - @Override + @Override public ISchedulingRule getRule(Object object) { - return null; - } + return null; + } @Override public void fetchDeferredChildren(Object object, IElementCollector collector, IProgressMonitor monitor) { if (monitor.isCanceled()) { return; } - Object[] children = getChildren(object); - if (monitor.isCanceled()) { - return; - } - if (children.length > 0) { - collector.add(children, monitor); - } - collector.done(); + Object[] children = getChildren(object); + if (monitor.isCanceled()) { + return; + } + if (children.length > 0) { + collector.add(children, monitor); + } + collector.done(); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/IBreakpointOrganizerDelegate.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/IBreakpointOrganizerDelegate.java index 81679e6a5..34673c50b 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/IBreakpointOrganizerDelegate.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/IBreakpointOrganizerDelegate.java @@ -60,101 +60,101 @@ import org.eclipse.jface.util.IPropertyChangeListener; */ public interface IBreakpointOrganizerDelegate { - /** - * Change event id when a category's breakpoints have changed. - * The <code>oldValue</code> of the <code>PropertyChangeEvent</code> will be the - * category that has changed, and the source of the event will the the - * breakpoint organizer. Breakpoints in the category will be - * recategorized when this event is fired. - * - * @see IPropertyChangeListener - */ - String P_CATEGORY_CHANGED = DebugUIPlugin.getUniqueIdentifier() + ".P_CATEGORY_CHANGED"; //$NON-NLS-1$ + /** + * Change event id when a category's breakpoints have changed. + * The <code>oldValue</code> of the <code>PropertyChangeEvent</code> will be the + * category that has changed, and the source of the event will the the + * breakpoint organizer. Breakpoints in the category will be + * recategorized when this event is fired. + * + * @see IPropertyChangeListener + */ + String P_CATEGORY_CHANGED = DebugUIPlugin.getUniqueIdentifier() + ".P_CATEGORY_CHANGED"; //$NON-NLS-1$ - /** - * Returns objects representing the categories of the specified - * breakpoint or <code>null</code> if this organizer cannot classify - * the breakpoint. Categories must return <code>true</code> when sent - * the message <code>equals(Object)</code> with an equivalent category - * as an argument. - * - * @param breakpoint breakpoint to classify - * @return categories of the given breakpoint or <code>null</code> - */ - IAdaptable[] getCategories(IBreakpoint breakpoint); + /** + * Returns objects representing the categories of the specified + * breakpoint or <code>null</code> if this organizer cannot classify + * the breakpoint. Categories must return <code>true</code> when sent + * the message <code>equals(Object)</code> with an equivalent category + * as an argument. + * + * @param breakpoint breakpoint to classify + * @return categories of the given breakpoint or <code>null</code> + */ + IAdaptable[] getCategories(IBreakpoint breakpoint); - /** - * Adds the specified listener. Has no effect if an identical listener is - * already registered. - * - * @param listener listener to add - */ - void addPropertyChangeListener(IPropertyChangeListener listener); + /** + * Adds the specified listener. Has no effect if an identical listener is + * already registered. + * + * @param listener listener to add + */ + void addPropertyChangeListener(IPropertyChangeListener listener); - /** - * Removes the specified listener. Has no effect if an identical listener - * is not already registered. - * - * @param listener listener to remove - */ - void removePropertyChangeListener(IPropertyChangeListener listener); + /** + * Removes the specified listener. Has no effect if an identical listener + * is not already registered. + * + * @param listener listener to remove + */ + void removePropertyChangeListener(IPropertyChangeListener listener); - /** - * Adds the specified breakpoint to the given category. Only called - * if <code>canAdd(...)</code> returns <code>true</code> for the given - * breakpoint and category. - * - * @param breakpoint breakpoint to recategorize - * @param category the breakpoint's new category - */ - void addBreakpoint(IBreakpoint breakpoint, IAdaptable category); + /** + * Adds the specified breakpoint to the given category. Only called + * if <code>canAdd(...)</code> returns <code>true</code> for the given + * breakpoint and category. + * + * @param breakpoint breakpoint to recategorize + * @param category the breakpoint's new category + */ + void addBreakpoint(IBreakpoint breakpoint, IAdaptable category); - /** - * Removes the specified breakpoint from the given category. Only - * called if <code>canRemove(...)</code> returns <code>true</code> for - * the given breakpoint and category. - * - * @param breakpoint breakpoint to recategorize - * @param category the category the breakpoint is remove from - */ - void removeBreakpoint(IBreakpoint breakpoint, IAdaptable category); + /** + * Removes the specified breakpoint from the given category. Only + * called if <code>canRemove(...)</code> returns <code>true</code> for + * the given breakpoint and category. + * + * @param breakpoint breakpoint to recategorize + * @param category the category the breakpoint is remove from + */ + void removeBreakpoint(IBreakpoint breakpoint, IAdaptable category); - /** - * Returns whether the given breakpoint can be categorized in the - * specified category. - * - * @param breakpoint breakpoint to recatogorize - * @param category the category to add the breakpoint to - * @return whether the given breakpoint can be categorized in the - * specified category - */ - boolean canAdd(IBreakpoint breakpoint, IAdaptable category); + /** + * Returns whether the given breakpoint can be categorized in the + * specified category. + * + * @param breakpoint breakpoint to recatogorize + * @param category the category to add the breakpoint to + * @return whether the given breakpoint can be categorized in the + * specified category + */ + boolean canAdd(IBreakpoint breakpoint, IAdaptable category); - /** - * Returns whether the given breakpoint can be removed from the given - * category. - * - * @param breakpoint breakpoint to recategorize - * @param category the category to remove the breakpoint from - * @return whether the given breakpoint can be removed from the given - * category - */ - boolean canRemove(IBreakpoint breakpoint, IAdaptable category); + /** + * Returns whether the given breakpoint can be removed from the given + * category. + * + * @param breakpoint breakpoint to recategorize + * @param category the category to remove the breakpoint from + * @return whether the given breakpoint can be removed from the given + * category + */ + boolean canRemove(IBreakpoint breakpoint, IAdaptable category); - /** - * Returns all categories managed by this organizer, or <code>null</code>. - * When <code>null</code> is returned, the breakpoints view only displays - * categories that contain breakpoints. When a collection of categories - * is returned the breakpoints will display all of the categories, some of - * which may be empty. - * - * @return all categories managed by this organizer, or <code>null</code> - */ - IAdaptable[] getCategories(); + /** + * Returns all categories managed by this organizer, or <code>null</code>. + * When <code>null</code> is returned, the breakpoints view only displays + * categories that contain breakpoints. When a collection of categories + * is returned the breakpoints will display all of the categories, some of + * which may be empty. + * + * @return all categories managed by this organizer, or <code>null</code> + */ + IAdaptable[] getCategories(); - /** - * Disposes this breakpoint organizer. - */ - void dispose(); + /** + * Disposes this breakpoint organizer. + */ + void dispose(); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/IBreakpointOrganizerDelegateExtension.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/IBreakpointOrganizerDelegateExtension.java index 5dcfd5f93..b22bb2fb4 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/IBreakpointOrganizerDelegateExtension.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/IBreakpointOrganizerDelegateExtension.java @@ -27,25 +27,25 @@ import org.eclipse.debug.core.model.IBreakpoint; */ public interface IBreakpointOrganizerDelegateExtension extends IBreakpointOrganizerDelegate { - /** - * Adds the specified breakpoints to the given category. Only called - * if <code>canAdd(...)</code> returns <code>true</code> for the given - * breakpoints and category. - * - * @param breakpoints breakpoints add - * @param category the breakpoints' new category - */ - void addBreakpoints(IBreakpoint[] breakpoints, IAdaptable category); + /** + * Adds the specified breakpoints to the given category. Only called + * if <code>canAdd(...)</code> returns <code>true</code> for the given + * breakpoints and category. + * + * @param breakpoints breakpoints add + * @param category the breakpoints' new category + */ + void addBreakpoints(IBreakpoint[] breakpoints, IAdaptable category); - /** - * Removes the specified breakpoints from the given category. Only - * called if <code>canRemove(...)</code> returns <code>true</code> for - * the given breakpoints and category. - * - * @param breakpoints breakpoints to remove - * @param category the category the breakpoint is remove from - */ - void removeBreakpoints(IBreakpoint[] breakpoints, IAdaptable category); + /** + * Removes the specified breakpoints from the given category. Only + * called if <code>canRemove(...)</code> returns <code>true</code> for + * the given breakpoints and category. + * + * @param breakpoints breakpoints to remove + * @param category the category the breakpoint is remove from + */ + void removeBreakpoints(IBreakpoint[] breakpoints, IAdaptable category); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/IDebugUIConstants.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/IDebugUIConstants.java index cfb8d5028..58be140f4 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/IDebugUIConstants.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/IDebugUIConstants.java @@ -243,8 +243,8 @@ public interface IDebugUIConstants { /** * The default value of the {@link IDebugUIConstants#PREF_MANAGE_VIEW_PERSPECTIVES} preference. * - * @see IDebugUIConstants#PREF_MANAGE_VIEW_PERSPECTIVES - * + * @see IDebugUIConstants#PREF_MANAGE_VIEW_PERSPECTIVES + * * @since 3.5 */ String PREF_MANAGE_VIEW_PERSPECTIVES_DEFAULT= "DEFAULT"; //$NON-NLS-1$ @@ -283,11 +283,11 @@ public interface IDebugUIConstants { */ String ID_REGISTER_VIEW= "org.eclipse.debug.ui.RegisterView"; //$NON-NLS-1$ - /** - * Module view identifier (value <code>"org.eclipse.debug.ui.ModuleView"</code>). - * @since 3.4 - */ - String ID_MODULE_VIEW= "org.eclipse.debug.ui.ModuleView"; //$NON-NLS-1$ + /** + * Module view identifier (value <code>"org.eclipse.debug.ui.ModuleView"</code>). + * @since 3.4 + */ + String ID_MODULE_VIEW= "org.eclipse.debug.ui.ModuleView"; //$NON-NLS-1$ /** * Console view identifier (value <code>"org.eclipse.debug.ui.ConsoleView"</code>). @@ -334,8 +334,8 @@ public interface IDebugUIConstants { */ String IMG_ACT_RUN= "IMG_ACT_RUN"; //$NON-NLS-1$ - /** "Link with View" action image identifier. */ - String IMG_ACT_SYNCED= "IMG_ACT_SYNCED"; //$NON-NLS-1$ + /** "Link with View" action image identifier. */ + String IMG_ACT_SYNCED= "IMG_ACT_SYNCED"; //$NON-NLS-1$ /** "Skip Breakpoints" action image identifier */ String IMG_SKIP_BREAKPOINTS= "IMG_SKIP_BREAKPOINTS"; //$NON-NLS-1$ @@ -367,12 +367,12 @@ public interface IDebugUIConstants { */ String IMG_LCL_LOCK = "IMG_LCL_LOCK"; //$NON-NLS-1$ - /** - * Add action image identifier. - * - * @since 3.8 - */ - String IMG_LCL_ADD = "IMG_LCL_MONITOR_EXPRESSION"; //$NON-NLS-1$ + /** + * Add action image identifier. + * + * @since 3.8 + */ + String IMG_LCL_ADD = "IMG_LCL_MONITOR_EXPRESSION"; //$NON-NLS-1$ /** * Remove all action image identifier @@ -381,12 +381,12 @@ public interface IDebugUIConstants { */ String IMG_LCL_REMOVE_ALL = "IMG_LCL_REMOVE_ALL"; //$NON-NLS-1$ - /** - * Remove action image identifier - * - * @since 3.2 - */ - String IMG_LCL_REMOVE = "IMG_LCL_REMOVE"; //$NON-NLS-1$ + /** + * Remove action image identifier + * + * @since 3.2 + */ + String IMG_LCL_REMOVE = "IMG_LCL_REMOVE"; //$NON-NLS-1$ /** * Content assist action image identifier. @@ -615,11 +615,11 @@ public interface IDebugUIConstants { /** Error overlay image identifier. */ String IMG_OVR_ERROR = "IMG_OVR_ERROR"; //$NON-NLS-1$ - /** - * Skip breakpoint image overlay identifier. - * @since 3.1 - */ - String IMG_OVR_SKIP_BREAKPOINT = "IMG_OVR_SKIP_BREAKPOINT"; //$NON-NLS-1$ + /** + * Skip breakpoint image overlay identifier. + * @since 3.1 + */ + String IMG_OVR_SKIP_BREAKPOINT = "IMG_OVR_SKIP_BREAKPOINT"; //$NON-NLS-1$ /** * Prototype image overlay identifier. @@ -633,22 +633,22 @@ public interface IDebugUIConstants { */ String DEBUG_ACTION_SET= PLUGIN_ID + ".debugActionSet"; //$NON-NLS-1$ - /** - * Debug Toolbar action set identifier (value <code>"org.eclipse.debug.ui.debugToolbarActionSet"</code>). - * - * @since 3.8 - */ - String DEBUG_TOOLBAR_ACTION_SET= PLUGIN_ID + ".debugToolbarActionSet"; //$NON-NLS-1$ + /** + * Debug Toolbar action set identifier (value <code>"org.eclipse.debug.ui.debugToolbarActionSet"</code>). + * + * @since 3.8 + */ + String DEBUG_TOOLBAR_ACTION_SET= PLUGIN_ID + ".debugToolbarActionSet"; //$NON-NLS-1$ - /** - * System property which indicates whether the common debugging actions - * should be shown in the Debug view, as opposed to the top level - * toolbar. Actions contributing to the debug view can use this property - * to control their visibility. - * - * @since 3.8 - */ - String DEBUG_VIEW_TOOBAR_VISIBLE = PLUGIN_ID + ".debugViewToolbarVisible"; //$NON-NLS-1$ + /** + * System property which indicates whether the common debugging actions + * should be shown in the Debug view, as opposed to the top level + * toolbar. Actions contributing to the debug view can use this property + * to control their visibility. + * + * @since 3.8 + */ + String DEBUG_VIEW_TOOBAR_VISIBLE = PLUGIN_ID + ".debugViewToolbarVisible"; //$NON-NLS-1$ /** * Launch action set identifier (value <code>"org.eclipse.debug.ui.launchActionSet"</code>). @@ -822,18 +822,18 @@ public interface IDebugUIConstants { */ String REGISTER_GROUP = "registerGroup"; //$NON-NLS-1$ - /** - * Identifier for an empty group preceding a - * modules group in a menu (value <code>"emptyModulesGroup"</code>). - * @since 3.4 - */ - String EMPTY_MODULES_GROUP = "emptyModulesGroup"; //$NON-NLS-1$ + /** + * Identifier for an empty group preceding a + * modules group in a menu (value <code>"emptyModulesGroup"</code>). + * @since 3.4 + */ + String EMPTY_MODULES_GROUP = "emptyModulesGroup"; //$NON-NLS-1$ - /** - * Identifier for a modules group in a menu (value <code>"modulesGroup"</code>). - * @since 3.4 - */ - String MODULES_GROUP = "modulesGroup"; //$NON-NLS-1$ + /** + * Identifier for a modules group in a menu (value <code>"modulesGroup"</code>). + * @since 3.4 + */ + String MODULES_GROUP = "modulesGroup"; //$NON-NLS-1$ /** * Id for the popup menu associated with the variables (tree viewer) part of the VariableView @@ -953,7 +953,7 @@ public interface IDebugUIConstants { * from {@link org.eclipse.ui.WorkbenchEncoding}. * * @since 3.1 - * @deprecated in 3.3 Please use DebugPlugin.ATTR_CONSOLE_ENCODING instead. + * @deprecated in 3.3 Please use DebugPlugin.ATTR_CONSOLE_ENCODING instead. */ @Deprecated String ATTR_CONSOLE_ENCODING = DebugPlugin.ATTR_CONSOLE_ENCODING; @@ -1086,35 +1086,35 @@ public interface IDebugUIConstants { /** * Variable value editors extension point identifier (value * <code>"variableValueEditors"</code> - * - * @since 3.1 + * + * @since 3.1 */ String EXTENSION_POINT_VARIABLE_VALUE_EDITORS = "variableValueEditors"; //$NON-NLS-1$ - /** - * Memory renderings extension point identifier (value - * <code>"memoryRenderings"</code> - * - * @since 3.1 - * @deprecated As of release 3.4, replaced by {@link #EXTENSION_POINT_MEMORY_RENDERINGS} - */ - @Deprecated String EXTENSION_POINT_MEMORY_RENDERIGNS = "memoryRenderings"; //$NON-NLS-1$ - - /** - * Memory renderings extension point identifier (value - * <code>"memoryRenderings"</code> - * - * @since 3.4 - */ - String EXTENSION_POINT_MEMORY_RENDERINGS = "memoryRenderings"; //$NON-NLS-1$ - - /** - * Breakpoint organizers extension point identifier (value - * <code>"breakpointOrganizers"</code> - * - * @since 3.1 - */ - String EXTENSION_POINT_BREAKPOINT_ORGANIZERS = "breakpointOrganizers"; //$NON-NLS-1$ + /** + * Memory renderings extension point identifier (value + * <code>"memoryRenderings"</code> + * + * @since 3.1 + * @deprecated As of release 3.4, replaced by {@link #EXTENSION_POINT_MEMORY_RENDERINGS} + */ + @Deprecated String EXTENSION_POINT_MEMORY_RENDERIGNS = "memoryRenderings"; //$NON-NLS-1$ + + /** + * Memory renderings extension point identifier (value + * <code>"memoryRenderings"</code> + * + * @since 3.4 + */ + String EXTENSION_POINT_MEMORY_RENDERINGS = "memoryRenderings"; //$NON-NLS-1$ + + /** + * Breakpoint organizers extension point identifier (value + * <code>"breakpointOrganizers"</code> + * + * @since 3.1 + */ + String EXTENSION_POINT_BREAKPOINT_ORGANIZERS = "breakpointOrganizers"; //$NON-NLS-1$ /** * Simple identifier constant (value <code>"detailPaneFactories"</code>) for the @@ -1124,21 +1124,21 @@ public interface IDebugUIConstants { */ String EXTENSION_POINT_DETAIL_FACTORIES = "detailPaneFactories"; //$NON-NLS-1$ - /** - * Simple identifier constant (value <code>"toggleBreakpointsTargetFactories"</code>) for the - * toggle breakpoint targets extension point. - * - * @since 3.5 - */ - String EXTENSION_POINT_TOGGLE_BREAKPOINTS_TARGET_FACTORIES = "toggleBreakpointsTargetFactories"; //$NON-NLS-1$ + /** + * Simple identifier constant (value <code>"toggleBreakpointsTargetFactories"</code>) for the + * toggle breakpoint targets extension point. + * + * @since 3.5 + */ + String EXTENSION_POINT_TOGGLE_BREAKPOINTS_TARGET_FACTORIES = "toggleBreakpointsTargetFactories"; //$NON-NLS-1$ - /** - * Update policies extension point identifier (value - * <code>"updatePolicies"</code> - * - * @since 3.2 - */ - String EXTENSION_POINT_UPDATE_POLICIES = "updatePolicies"; //$NON-NLS-1$ + /** + * Update policies extension point identifier (value + * <code>"updatePolicies"</code> + * + * @since 3.2 + */ + String EXTENSION_POINT_UPDATE_POLICIES = "updatePolicies"; //$NON-NLS-1$ /** * Padded string preference for renderings. Padded string is the string to be used in place of @@ -1215,25 +1215,25 @@ public interface IDebugUIConstants { */ String PREF_MEMORY_HISTORY_KNOWN_COLOR = PLUGIN_ID + ".MemoryHistoryKnownColor"; //$NON-NLS-1$ - /** - * Annotation type identifier for default annotation of the current instruction - * pointer (top stack frame in a thread). Value is <code>org.eclipse.debug.ui.currentIP</code>, - * identifying a <code>org.eclipse.ui.editors.markerAnnotationSpecification</code> - * extension. - * - * @since 3.2 - */ - String ANNOTATION_TYPE_INSTRUCTION_POINTER_CURRENT = "org.eclipse.debug.ui.currentIP"; //$NON-NLS-1$ - - /** - * Annotation type identifier for default annotation of secondary instruction pointers - * (non top stack frames). Value is <code>org.eclipse.debug.ui.secondaryIP</code>, - * identifying a <code>org.eclipse.ui.editors.markerAnnotationSpecification</code> - * extension. - * - * @since 3.2 - */ - String ANNOTATION_TYPE_INSTRUCTION_POINTER_SECONDARY = "org.eclipse.debug.ui.secondaryIP"; //$NON-NLS-1$ + /** + * Annotation type identifier for default annotation of the current instruction + * pointer (top stack frame in a thread). Value is <code>org.eclipse.debug.ui.currentIP</code>, + * identifying a <code>org.eclipse.ui.editors.markerAnnotationSpecification</code> + * extension. + * + * @since 3.2 + */ + String ANNOTATION_TYPE_INSTRUCTION_POINTER_CURRENT = "org.eclipse.debug.ui.currentIP"; //$NON-NLS-1$ + + /** + * Annotation type identifier for default annotation of secondary instruction pointers + * (non top stack frames). Value is <code>org.eclipse.debug.ui.secondaryIP</code>, + * identifying a <code>org.eclipse.ui.editors.markerAnnotationSpecification</code> + * extension. + * + * @since 3.2 + */ + String ANNOTATION_TYPE_INSTRUCTION_POINTER_SECONDARY = "org.eclipse.debug.ui.secondaryIP"; //$NON-NLS-1$ /** * Editor Identifier for the "Common Source Not Found" editor. diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/IDebugView.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/IDebugView.java index 1de69c906..55705c994 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/IDebugView.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/IDebugView.java @@ -155,8 +155,8 @@ public interface IDebugView extends IViewPart { /** * Removes the given IUpdate from this view's collection of updatable * objects. - * Has no effect if an identical IUpdate was not already registered. - * + * Has no effect if an identical IUpdate was not already registered. + * * @param updatable The IUpdate instance to be removed */ void remove(IUpdate updatable); diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/IDetailPane3.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/IDetailPane3.java index 08d7080fc..566b0a1fc 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/IDetailPane3.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/IDetailPane3.java @@ -45,5 +45,5 @@ public interface IDetailPane3 extends IDetailPane, ISaveablePart { * * @param listener a property listener */ - void removePropertyListener(IPropertyListener listener); + void removePropertyListener(IPropertyListener listener); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/IInstructionPointerPresentation.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/IInstructionPointerPresentation.java index 4db95a9ce..69e86b68b 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/IInstructionPointerPresentation.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/IInstructionPointerPresentation.java @@ -68,7 +68,7 @@ public interface IInstructionPointerPresentation extends IDebugModelPresentation /** * Returns an annotation used for the specified stack frame in the specified * editor, or <code>null</code> if a default annotation should be used. - * + * * @param editorPart the editor the debugger has opened * @param frame the stack frame for which the debugger is displaying * source diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/ILaunchConfigurationDialog.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/ILaunchConfigurationDialog.java index d9f4ab287..4977ccc0f 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/ILaunchConfigurationDialog.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/ILaunchConfigurationDialog.java @@ -17,15 +17,15 @@ import org.eclipse.jface.operation.IRunnableContext; /** - * A launch configuration dialog is used to edit and launch - * launch configurations. It contains a launch configuration - * tab group. - * @see ILaunchConfigurationTabGroup - * @see ILaunchConfigurationTab - * @since 2.0 + * A launch configuration dialog is used to edit and launch + * launch configurations. It contains a launch configuration + * tab group. + * @see ILaunchConfigurationTabGroup + * @see ILaunchConfigurationTab + * @since 2.0 * @noimplement This interface is not intended to be implemented by clients. * @noextend This interface is not intended to be extended by clients. - */ + */ public interface ILaunchConfigurationDialog extends IRunnableContext { diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/InspectPopupDialog.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/InspectPopupDialog.java index a07bb3d42..244d2d55f 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/InspectPopupDialog.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/InspectPopupDialog.java @@ -68,88 +68,88 @@ public class InspectPopupDialog extends DebugPopup { private static final String PREF_INSPECT_POPUP_SASH_WEIGHTS = DebugUIPlugin.getUniqueIdentifier() + "inspectPopupSashWeights"; //$NON-NLS-1$ private static final int[] DEFAULT_SASH_WEIGHTS = new int[] { 75, 25 }; - private static final int MIN_WIDTH = 300; - private static final int MIN_HEIGHT = 250; - - private IPresentationContext fContext; - private TreeModelViewer fViewer; - private SashForm fSashForm; - private Composite fDetailPaneComposite; - private DetailPaneProxy fDetailPane; - private Tree fTree; - private IExpression fExpression; - - /** - * Creates a new inspect popup. - * - * @param shell The parent shell - * @param anchor point at which to anchor the popup in Display coordinates. Since - * 3.3 <code>null</code> indicates a default location should be used. - * @param commandId The command id to be used for persistence of - * the dialog (possibly <code>null</code>) - * @param expression The expression being inspected - */ - public InspectPopupDialog(Shell shell, Point anchor, String commandId, IExpression expression) { - super(shell, anchor, commandId); - fExpression = expression; - } - - @Override + private static final int MIN_WIDTH = 300; + private static final int MIN_HEIGHT = 250; + + private IPresentationContext fContext; + private TreeModelViewer fViewer; + private SashForm fSashForm; + private Composite fDetailPaneComposite; + private DetailPaneProxy fDetailPane; + private Tree fTree; + private IExpression fExpression; + + /** + * Creates a new inspect popup. + * + * @param shell The parent shell + * @param anchor point at which to anchor the popup in Display coordinates. Since + * 3.3 <code>null</code> indicates a default location should be used. + * @param commandId The command id to be used for persistence of + * the dialog (possibly <code>null</code>) + * @param expression The expression being inspected + */ + public InspectPopupDialog(Shell shell, Point anchor, String commandId, IExpression expression) { + super(shell, anchor, commandId); + fExpression = expression; + } + + @Override protected Control createDialogArea(Composite parent) { - Composite composite = new Composite(parent, parent.getStyle()); - GridLayout layout = new GridLayout(); - composite.setLayout(layout); - composite.setLayoutData(new GridData(GridData.FILL_BOTH)); - - fSashForm = new SashForm(composite, parent.getStyle()); - fSashForm.setOrientation(SWT.VERTICAL); - fSashForm.setLayoutData(new GridData(GridData.FILL_BOTH)); - - VariablesView view = getViewToEmulate(); - fContext = new PresentationContext(IDebugUIConstants.ID_VARIABLE_VIEW, view); - if (view != null) { - // copy over properties - IPresentationContext copy = ((TreeModelViewer)view.getViewer()).getPresentationContext(); - String[] properties = copy.getProperties(); - for (int i = 0; i < properties.length; i++) { + Composite composite = new Composite(parent, parent.getStyle()); + GridLayout layout = new GridLayout(); + composite.setLayout(layout); + composite.setLayoutData(new GridData(GridData.FILL_BOTH)); + + fSashForm = new SashForm(composite, parent.getStyle()); + fSashForm.setOrientation(SWT.VERTICAL); + fSashForm.setLayoutData(new GridData(GridData.FILL_BOTH)); + + VariablesView view = getViewToEmulate(); + fContext = new PresentationContext(IDebugUIConstants.ID_VARIABLE_VIEW, view); + if (view != null) { + // copy over properties + IPresentationContext copy = ((TreeModelViewer)view.getViewer()).getPresentationContext(); + String[] properties = copy.getProperties(); + for (int i = 0; i < properties.length; i++) { String key = properties[i]; fContext.setProperty(key, copy.getProperty(key)); } - } - fViewer = new TreeModelViewer(fSashForm, SWT.NO_TRIM | SWT.MULTI | SWT.VIRTUAL, fContext); - fViewer.setAutoExpandLevel(1); + } + fViewer = new TreeModelViewer(fSashForm, SWT.NO_TRIM | SWT.MULTI | SWT.VIRTUAL, fContext); + fViewer.setAutoExpandLevel(1); - fDetailPaneComposite = SWTFactory.createComposite(fSashForm, 1, 1, GridData.FILL_BOTH); + fDetailPaneComposite = SWTFactory.createComposite(fSashForm, 1, 1, GridData.FILL_BOTH); - fDetailPane = new DetailPaneProxy(new DetailPaneContainer()); - fDetailPane.display(null); // Bring up the default pane so the user doesn't see an empty composite + fDetailPane = new DetailPaneProxy(new DetailPaneContainer()); + fDetailPane.display(null); // Bring up the default pane so the user doesn't see an empty composite - fTree = fViewer.getTree(); - fTree.addSelectionListener(new SelectionListener() { - @Override + fTree = fViewer.getTree(); + fTree.addSelectionListener(new SelectionListener() { + @Override public void widgetSelected(SelectionEvent e) { fDetailPane.display(fViewer.getStructuredSelection()); - } - @Override + } + @Override public void widgetDefaultSelected(SelectionEvent e) {} - }); - - initSashWeights(); - - fViewer.getContentProvider(); - if (view != null) { - StructuredViewer structuredViewer = (StructuredViewer) view.getViewer(); - if (structuredViewer != null) { - ViewerFilter[] filters = structuredViewer.getFilters(); - for (int i = 0; i < filters.length; i++) { - fViewer.addFilter(filters[i]); - } - } - } - - TreeRoot treeRoot = new TreeRoot(); - // add update listener to auto-select and display details of root expression - fViewer.addViewerUpdateListener(new IViewerUpdateListener() { + }); + + initSashWeights(); + + fViewer.getContentProvider(); + if (view != null) { + StructuredViewer structuredViewer = (StructuredViewer) view.getViewer(); + if (structuredViewer != null) { + ViewerFilter[] filters = structuredViewer.getFilters(); + for (int i = 0; i < filters.length; i++) { + fViewer.addFilter(filters[i]); + } + } + } + + TreeRoot treeRoot = new TreeRoot(); + // add update listener to auto-select and display details of root expression + fViewer.addViewerUpdateListener(new IViewerUpdateListener() { @Override public void viewerUpdatesComplete() { } @@ -169,58 +169,58 @@ public class InspectPopupDialog extends DebugPopup { } } }); - fViewer.setInput(treeRoot); - - return fTree; - } - - /** - * Initializes the sash form weights from the preference store (using default values if - * no sash weights were stored previously). - */ - protected void initSashWeights(){ - String prefWeights = DebugUIPlugin.getDefault().getPreferenceStore().getString(PREF_INSPECT_POPUP_SASH_WEIGHTS); - if (prefWeights.length() > 0){ - String[] weights = prefWeights.split(":"); //$NON-NLS-1$ - if (weights.length == 2){ - try{ - int[] intWeights = new int[2]; - intWeights[0] = Integer.parseInt(weights[0]); - intWeights[1] = Integer.parseInt(weights[1]); - fSashForm.setWeights(intWeights); - return; - } catch (NumberFormatException e){} - } - } - fSashForm.setWeights(DEFAULT_SASH_WEIGHTS); - } - - @Override + fViewer.setInput(treeRoot); + + return fTree; + } + + /** + * Initializes the sash form weights from the preference store (using default values if + * no sash weights were stored previously). + */ + protected void initSashWeights(){ + String prefWeights = DebugUIPlugin.getDefault().getPreferenceStore().getString(PREF_INSPECT_POPUP_SASH_WEIGHTS); + if (prefWeights.length() > 0){ + String[] weights = prefWeights.split(":"); //$NON-NLS-1$ + if (weights.length == 2){ + try{ + int[] intWeights = new int[2]; + intWeights[0] = Integer.parseInt(weights[0]); + intWeights[1] = Integer.parseInt(weights[1]); + fSashForm.setWeights(intWeights); + return; + } catch (NumberFormatException e){} + } + } + fSashForm.setWeights(DEFAULT_SASH_WEIGHTS); + } + + @Override protected void saveDialogBounds(Shell shell) { - super.saveDialogBounds(shell); - if (fSashForm != null && !fSashForm.isDisposed()){ - int[] weights = fSashForm.getWeights(); - if (weights.length == 2){ - String weightString = weights[0] + ":" + weights[1]; //$NON-NLS-1$ - IEclipsePreferences node = InstanceScope.INSTANCE.getNode(DebugUIPlugin.getUniqueIdentifier()); - if(node != null) { - node.put(PREF_INSPECT_POPUP_SASH_WEIGHTS, weightString); - try { + super.saveDialogBounds(shell); + if (fSashForm != null && !fSashForm.isDisposed()){ + int[] weights = fSashForm.getWeights(); + if (weights.length == 2){ + String weightString = weights[0] + ":" + weights[1]; //$NON-NLS-1$ + IEclipsePreferences node = InstanceScope.INSTANCE.getNode(DebugUIPlugin.getUniqueIdentifier()); + if(node != null) { + node.put(PREF_INSPECT_POPUP_SASH_WEIGHTS, weightString); + try { node.flush(); } catch (BackingStoreException e) { DebugUIPlugin.log(e); } - } - } - } - } - - /** - * Creates the content for the root element of the tree viewer in the inspect - * popup dialog. Always has one child, the expression this popup is displaying. - * - */ - private class TreeRoot extends ElementContentProvider { + } + } + } + } + + /** + * Creates the content for the root element of the tree viewer in the inspect + * popup dialog. Always has one child, the expression this popup is displaying. + * + */ + private class TreeRoot extends ElementContentProvider { @Override protected int getChildCount(Object element, IPresentationContext context, IViewerUpdate monitor) throws CoreException { return 1; @@ -234,69 +234,69 @@ public class InspectPopupDialog extends DebugPopup { protected boolean supportsContextId(String id) { return true; } - } - - /** - * Attempts to find an appropriate view to emulate, this will either be the - * variables view or the expressions view. - * @return a view to emulate or <code>null</code> - */ - private VariablesView getViewToEmulate() { - IWorkbenchPage page = DebugUIPlugin.getActiveWorkbenchWindow().getActivePage(); - VariablesView expressionsView = (VariablesView) page.findView(IDebugUIConstants.ID_EXPRESSION_VIEW); - if (expressionsView != null && expressionsView.isVisible()) { - return expressionsView; - } - VariablesView variablesView = (VariablesView) page.findView(IDebugUIConstants.ID_VARIABLE_VIEW); - if (variablesView != null && variablesView.isVisible()) { - return variablesView; - } - if (expressionsView != null) { - return expressionsView; - } - return variablesView; - } - - @Override + } + + /** + * Attempts to find an appropriate view to emulate, this will either be the + * variables view or the expressions view. + * @return a view to emulate or <code>null</code> + */ + private VariablesView getViewToEmulate() { + IWorkbenchPage page = DebugUIPlugin.getActiveWorkbenchWindow().getActivePage(); + VariablesView expressionsView = (VariablesView) page.findView(IDebugUIConstants.ID_EXPRESSION_VIEW); + if (expressionsView != null && expressionsView.isVisible()) { + return expressionsView; + } + VariablesView variablesView = (VariablesView) page.findView(IDebugUIConstants.ID_VARIABLE_VIEW); + if (variablesView != null && variablesView.isVisible()) { + return variablesView; + } + if (expressionsView != null) { + return expressionsView; + } + return variablesView; + } + + @Override public boolean close() { - if (!wasPersisted()) { - fExpression.dispose(); - } - fDetailPane.dispose(); - fContext.dispose(); + if (!wasPersisted()) { + fExpression.dispose(); + } + fDetailPane.dispose(); + fContext.dispose(); return super.close(); } - @Override + @Override protected String getActionText() { return DebugUIViewsMessages.InspectPopupDialog_0; } - @Override + @Override protected void persist() { - super.persist(); - DebugPlugin.getDefault().getExpressionManager().addExpression(fExpression); - - fExpression = null; - IWorkbenchPage page = DebugUIPlugin.getActiveWorkbenchWindow().getActivePage(); - IViewPart part = page.findView(IDebugUIConstants.ID_EXPRESSION_VIEW); - if (part == null) { - try { - page.showView(IDebugUIConstants.ID_EXPRESSION_VIEW); - } catch (PartInitException e) { - } - } else { - page.bringToTop(part); - } - } - - @Override + super.persist(); + DebugPlugin.getDefault().getExpressionManager().addExpression(fExpression); + + fExpression = null; + IWorkbenchPage page = DebugUIPlugin.getActiveWorkbenchWindow().getActivePage(); + IViewPart part = page.findView(IDebugUIConstants.ID_EXPRESSION_VIEW); + if (part == null) { + try { + page.showView(IDebugUIConstants.ID_EXPRESSION_VIEW); + } catch (PartInitException e) { + } + } else { + page.bringToTop(part); + } + } + + @Override protected Point getInitialSize() { - Point initialSize = super.getInitialSize(); - initialSize.x = Math.max(initialSize.x, MIN_WIDTH); - initialSize.y = Math.max(initialSize.y, MIN_HEIGHT); - return initialSize; - } + Point initialSize = super.getInitialSize(); + initialSize.x = Math.max(initialSize.x, MIN_WIDTH); + initialSize.y = Math.max(initialSize.y, MIN_HEIGHT); + return initialSize; + } @Override protected List<Control> getBackgroundColorExclusions() { diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/StringVariableSelectionDialog.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/StringVariableSelectionDialog.java index b6c7ddb2d..8db2295f0 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/StringVariableSelectionDialog.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/StringVariableSelectionDialog.java @@ -355,12 +355,12 @@ public class StringVariableSelectionDialog extends ElementListSelectionDialog { String text = null; if (objects.length == 1) { IStringVariable variable = (IStringVariable)objects[0]; - IArgumentSelector selector = StringVariablePresentationManager.getDefault().getArgumentSelector(variable); - if (variable instanceof IDynamicVariable) { - argEnabled = ((IDynamicVariable)variable).supportsArgument(); - } - buttonEnabled = argEnabled && selector != null; - text = variable.getDescription(); + IArgumentSelector selector = StringVariablePresentationManager.getDefault().getArgumentSelector(variable); + if (variable instanceof IDynamicVariable) { + argEnabled = ((IDynamicVariable)variable).supportsArgument(); + } + buttonEnabled = argEnabled && selector != null; + text = variable.getDescription(); } if (text == null) { text = IInternalDebugCoreConstants.EMPTY_STRING; @@ -385,13 +385,13 @@ public class StringVariableSelectionDialog extends ElementListSelectionDialog { return IDebugUIConstants.PLUGIN_ID + ".STRING_VARIABLE_SELECTION_DIALOG_SECTION"; //$NON-NLS-1$ } - @Override + @Override protected IDialogSettings getDialogBoundsSettings() { - IDialogSettings settings = DebugUIPlugin.getDefault().getDialogSettings(); - IDialogSettings section = settings.getSection(getDialogSettingsSectionName()); - if (section == null) { - section = settings.addNewSection(getDialogSettingsSectionName()); - } - return section; - } + IDialogSettings settings = DebugUIPlugin.getDefault().getDialogSettings(); + IDialogSettings section = settings.getSection(getDialogSettingsSectionName()); + if (section == null) { + section = settings.addNewSection(getDialogSettingsSectionName()); + } + return section; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/WorkingDirectoryBlock.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/WorkingDirectoryBlock.java index 7e66963da..b071075f9 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/WorkingDirectoryBlock.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/WorkingDirectoryBlock.java @@ -209,9 +209,9 @@ public abstract class WorkingDirectoryBlock extends AbstractLaunchConfigurationT * the workspace */ private void handleWorkspaceDirBrowseButtonSelected() { - IContainer currentContainer= getContainer(); + IContainer currentContainer= getContainer(); if (currentContainer == null) { - currentContainer = ResourcesPlugin.getWorkspace().getRoot(); + currentContainer = ResourcesPlugin.getWorkspace().getRoot(); } ContainerSelectionDialog dialog = new ContainerSelectionDialog(getShell(), currentContainer, false, DebugUIMessages.WorkingDirectoryBlock_4); dialog.showClosedProjects(false); @@ -231,23 +231,23 @@ public abstract class WorkingDirectoryBlock extends AbstractLaunchConfigurationT protected IContainer getContainer() { String path = getWorkingDirectoryText(); if (path.length() > 0) { - IResource res = null; - IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); - if (path.startsWith("${workspace_loc:")) { //$NON-NLS-1$ - IStringVariableManager manager = VariablesPlugin.getDefault().getStringVariableManager(); - try { - path = manager.performStringSubstitution(path, false); - IPath uriPath = new Path(path).makeAbsolute(); - IContainer[] containers = root.findContainersForLocationURI(URIUtil.toURI(uriPath)); - if (containers.length > 0) { - res = containers[0]; - } - } - catch (CoreException e) { - log(e); - } + IResource res = null; + IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); + if (path.startsWith("${workspace_loc:")) { //$NON-NLS-1$ + IStringVariableManager manager = VariablesPlugin.getDefault().getStringVariableManager(); + try { + path = manager.performStringSubstitution(path, false); + IPath uriPath = new Path(path).makeAbsolute(); + IContainer[] containers = root.findContainersForLocationURI(URIUtil.toURI(uriPath)); + if (containers.length > 0) { + res = containers[0]; + } + } + catch (CoreException e) { + log(e); + } } - else { + else { res = root.findMember(path); } if (res instanceof IContainer) { diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/AddMemoryRenderingActionDelegate.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/AddMemoryRenderingActionDelegate.java index b0095ab7c..30eba5386 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/AddMemoryRenderingActionDelegate.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/AddMemoryRenderingActionDelegate.java @@ -259,9 +259,9 @@ public class AddMemoryRenderingActionDelegate extends Action implements IViewAct if (fMenuCreator == null) { fMenuCreator = new AddMemoryRenderingMenuCreator(); } - action.setMenuCreator(fMenuCreator); - fAction= action; - } + action.setMenuCreator(fMenuCreator); + fAction= action; + } } private IAddMemoryRenderingsTarget getAddMemoryRenderingTarget(Object elmt) { diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/BreakpointTypesContribution.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/BreakpointTypesContribution.java index 8ff311d3f..e652248c1 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/BreakpointTypesContribution.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/BreakpointTypesContribution.java @@ -74,30 +74,30 @@ import org.eclipse.ui.services.IServiceLocator; */ public class BreakpointTypesContribution extends CompoundContributionItem implements IWorkbenchContribution { - private class SelectTargetAction extends Action { + private class SelectTargetAction extends Action { private final Set<String> fPossibleIDs; - private final String fID; + private final String fID; SelectTargetAction(String name, Set<String> possibleIDs, String ID) { - super(name, AS_RADIO_BUTTON); - fID = ID; - fPossibleIDs = possibleIDs; - } + super(name, AS_RADIO_BUTTON); + fID = ID; + fPossibleIDs = possibleIDs; + } - @Override + @Override public void run() { - if (isChecked()) { - // Note: setPreferredTarget is not declared on the - // IToggleBreakpontsTargetManager interface. - ToggleBreakpointsTargetManager.getDefault().setPreferredTarget(fPossibleIDs, fID); - } - } - } - - private IServiceLocator fServiceLocator; - - private static IContributionItem[] NO_BREAKPOINT_TYPES_CONTRIBUTION_ITEMS = new IContributionItem[] { - new ContributionItem() { + if (isChecked()) { + // Note: setPreferredTarget is not declared on the + // IToggleBreakpontsTargetManager interface. + ToggleBreakpointsTargetManager.getDefault().setPreferredTarget(fPossibleIDs, fID); + } + } + } + + private IServiceLocator fServiceLocator; + + private static IContributionItem[] NO_BREAKPOINT_TYPES_CONTRIBUTION_ITEMS = new IContributionItem[] { + new ContributionItem() { @Override public void fill(Menu menu, int index) { MenuItem item = new MenuItem(menu, SWT.NONE); @@ -109,56 +109,56 @@ public class BreakpointTypesContribution extends CompoundContributionItem implem public boolean isEnabled() { return false; } - } - }; + } + }; - @Override + @Override protected IContributionItem[] getContributionItems() { - IWorkbenchPart part = null; - ISelection selection = null; - - ISelectionService selectionService = - fServiceLocator.getService(ISelectionService.class); - if (selectionService != null) { - selection = selectionService.getSelection(); - } - IPartService partService = fServiceLocator.getService(IPartService.class); - if (partService != null) { - part = partService.getActivePart(); - } - - // If no part or selection, disable all. - if (part == null || selection == null) { - return NO_BREAKPOINT_TYPES_CONTRIBUTION_ITEMS; - } - - // Get breakpoint toggle target IDs. - IToggleBreakpointsTargetManager manager = DebugUITools.getToggleBreakpointsTargetManager(); + IWorkbenchPart part = null; + ISelection selection = null; + + ISelectionService selectionService = + fServiceLocator.getService(ISelectionService.class); + if (selectionService != null) { + selection = selectionService.getSelection(); + } + IPartService partService = fServiceLocator.getService(IPartService.class); + if (partService != null) { + part = partService.getActivePart(); + } + + // If no part or selection, disable all. + if (part == null || selection == null) { + return NO_BREAKPOINT_TYPES_CONTRIBUTION_ITEMS; + } + + // Get breakpoint toggle target IDs. + IToggleBreakpointsTargetManager manager = DebugUITools.getToggleBreakpointsTargetManager(); Set<String> enabledIDs = manager.getEnabledToggleBreakpointsTargetIDs(part, selection); - String preferredId = manager.getPreferredToggleBreakpointsTargetID(part, selection); + String preferredId = manager.getPreferredToggleBreakpointsTargetID(part, selection); List<Action> actions = new ArrayList<>(enabledIDs.size()); for (String id : enabledIDs) { - Action action = new SelectTargetAction(manager.getToggleBreakpointsTargetName(id), enabledIDs, id); - if (id.equals(preferredId)) { - action.setChecked(true); - } - actions.add(action); - } - - if ( enabledIDs.isEmpty() ) { - return NO_BREAKPOINT_TYPES_CONTRIBUTION_ITEMS; - } - - IContributionItem[] items = new IContributionItem[enabledIDs.size()]; - for (int i = 0; i < actions.size(); i++) { - items[i] = new ActionContributionItem(actions.get(i)); - } - return items; - } - - @Override + Action action = new SelectTargetAction(manager.getToggleBreakpointsTargetName(id), enabledIDs, id); + if (id.equals(preferredId)) { + action.setChecked(true); + } + actions.add(action); + } + + if ( enabledIDs.isEmpty() ) { + return NO_BREAKPOINT_TYPES_CONTRIBUTION_ITEMS; + } + + IContributionItem[] items = new IContributionItem[enabledIDs.size()]; + for (int i = 0; i < actions.size(); i++) { + items[i] = new ActionContributionItem(actions.get(i)); + } + return items; + } + + @Override public void initialize(IServiceLocator serviceLocator) { - fServiceLocator = serviceLocator; - } + fServiceLocator = serviceLocator; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/ContextualLaunchAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/ContextualLaunchAction.java index e0c837f28..a763267c5 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/ContextualLaunchAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/ContextualLaunchAction.java @@ -179,10 +179,10 @@ public abstract class ContextualLaunchAction implements IObjectActionDelegate, I return DebugPlugin.getDefault().getLaunchManager(); } - /** - * Fills the menu with applicable launch shortcuts - * @param menu The menu to fill - */ + /** + * Fills the menu with applicable launch shortcuts + * @param menu The menu to fill + */ protected void fillMenu(Menu menu) { IStructuredSelection ss = SelectedResourceManager.getDefault().getCurrentSelection(); int accelerator = 1; @@ -190,10 +190,10 @@ public abstract class ContextualLaunchAction implements IObjectActionDelegate, I try { //try to add the shared config it the context is one. ILaunchConfiguration config = getLaunchConfigurationManager().isSharedConfig(ss.getFirstElement()); - if(config != null && config.exists() && config.supportsMode(fMode)) { - IAction action = new LaunchConfigurationAction(config, fMode, config.getName(), DebugUITools.getDefaultImageDescriptor(config), accelerator++); - ActionContributionItem item = new ActionContributionItem(action); - item.fill(menu, -1); + if(config != null && config.exists() && config.supportsMode(fMode)) { + IAction action = new LaunchConfigurationAction(config, fMode, config.getName(), DebugUITools.getDefaultImageDescriptor(config), accelerator++); + ActionContributionItem item = new ActionContributionItem(action); + item.fill(menu, -1); } } catch (CoreException ce) {} @@ -247,8 +247,8 @@ public abstract class ContextualLaunchAction implements IObjectActionDelegate, I new MenuItem(menu, SWT.SEPARATOR); } IAction action = new OpenLaunchDialogAction(fGroup.getIdentifier()); - ActionContributionItem item = new ActionContributionItem(action); - item.fill(menu, -1); + ActionContributionItem item = new ActionContributionItem(action); + item.fill(menu, -1); } else { boolean addedSep = false; for (String category : categories) { @@ -261,9 +261,9 @@ public abstract class ContextualLaunchAction implements IObjectActionDelegate, I new MenuItem(menu, SWT.SEPARATOR); addedSep = true; } - IAction action = new OpenLaunchDialogAction(group.getIdentifier()); - ActionContributionItem item= new ActionContributionItem(action); - item.fill(menu, -1); + IAction action = new OpenLaunchDialogAction(group.getIdentifier()); + ActionContributionItem item= new ActionContributionItem(action); + item.fill(menu, -1); } } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/DebugCommandAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/DebugCommandAction.java index 641f6beda..c3ce545d2 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/DebugCommandAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/DebugCommandAction.java @@ -59,275 +59,275 @@ import org.eclipse.ui.PlatformUI; */ public abstract class DebugCommandAction extends Action implements IDebugContextListener { - private boolean fInitialized = false; + private boolean fInitialized = false; /** * The window this action is working for. */ - private IWorkbenchWindow fWindow; - - /** - * The part this action is working for, or <code>null</code> if global to - * a window. - */ - private IWorkbenchPart fPart; - - /** - * Command service. - */ - private DebugCommandService fUpdateService; - - /** - * Delegate this action is working for or <code>null</code> if none. - */ - private IAction fAction; - - private IEnabledTarget fEnabledTarget = new IEnabledTarget() { - @Override + private IWorkbenchWindow fWindow; + + /** + * The part this action is working for, or <code>null</code> if global to + * a window. + */ + private IWorkbenchPart fPart; + + /** + * Command service. + */ + private DebugCommandService fUpdateService; + + /** + * Delegate this action is working for or <code>null</code> if none. + */ + private IAction fAction; + + private IEnabledTarget fEnabledTarget = new IEnabledTarget() { + @Override public void setEnabled(boolean enabled) { - DebugCommandAction.this.setEnabled(enabled); - } - }; - - /** - * Constructor - */ - public DebugCommandAction() { - super(); - String helpContextId = getHelpContextId(); - if (helpContextId != null) { + DebugCommandAction.this.setEnabled(enabled); + } + }; + + /** + * Constructor + */ + public DebugCommandAction() { + super(); + String helpContextId = getHelpContextId(); + if (helpContextId != null) { PlatformUI.getWorkbench().getHelpSystem().setHelp(this, helpContextId); } - setEnabled(false); - } + setEnabled(false); + } /** - * Sets the current workbench action that is a proxy to an {@link org.eclipse.ui.IActionDelegate} - * that is using this action to perform its actual work. This only needs to be called when - * an {@link org.eclipse.ui.IActionDelegate} is using one of these actions to perform its - * function. - * - * @param action workbench proxy action - */ - public void setActionProxy(IAction action) { - fAction = action; - fAction.setEnabled(isEnabled()); - } - - /** - * Executes this action on the given target object - * @param targets the targets to perform the action on - * @return if the command stays enabled while the command executes - */ - private boolean execute(final Object[] targets) { - return fUpdateService.executeCommand( - getCommandType(), targets, - new ICommandParticipant() { - @Override + * Sets the current workbench action that is a proxy to an {@link org.eclipse.ui.IActionDelegate} + * that is using this action to perform its actual work. This only needs to be called when + * an {@link org.eclipse.ui.IActionDelegate} is using one of these actions to perform its + * function. + * + * @param action workbench proxy action + */ + public void setActionProxy(IAction action) { + fAction = action; + fAction.setEnabled(isEnabled()); + } + + /** + * Executes this action on the given target object + * @param targets the targets to perform the action on + * @return if the command stays enabled while the command executes + */ + private boolean execute(final Object[] targets) { + return fUpdateService.executeCommand( + getCommandType(), targets, + new ICommandParticipant() { + @Override public void requestDone(org.eclipse.debug.core.IRequest request) { - DebugCommandAction.this.postExecute(request, targets); - } - }); - } - - /** - * This method is called after the completion of the execution of this - * command. Extending classes may override this method to perform additional - * operation after command execution. - * - * @param request The completed request object which was given to the - * debug command handler. - * @param targets Objects which were the targets of this action - */ - protected void postExecute(IRequest request, Object[] targets) { - // do nothing by default - } - - /** - * Returns the {@link org.eclipse.debug.core.commands.IDebugCommandHandler} - * command handler that type this action executes. - * - * @return command class. - * - * @see org.eclipse.debug.core.commands.IDebugCommandHandler - */ + DebugCommandAction.this.postExecute(request, targets); + } + }); + } + + /** + * This method is called after the completion of the execution of this + * command. Extending classes may override this method to perform additional + * operation after command execution. + * + * @param request The completed request object which was given to the + * debug command handler. + * @param targets Objects which were the targets of this action + */ + protected void postExecute(IRequest request, Object[] targets) { + // do nothing by default + } + + /** + * Returns the {@link org.eclipse.debug.core.commands.IDebugCommandHandler} + * command handler that type this action executes. + * + * @return command class. + * + * @see org.eclipse.debug.core.commands.IDebugCommandHandler + */ abstract protected Class<?> getCommandType(); - /** - * @see org.eclipse.debug.ui.contexts.IDebugContextListener#debugContextChanged(org.eclipse.debug.ui.contexts.DebugContextEvent) - */ - @Override + /** + * @see org.eclipse.debug.ui.contexts.IDebugContextListener#debugContextChanged(org.eclipse.debug.ui.contexts.DebugContextEvent) + */ + @Override public void debugContextChanged(DebugContextEvent event) { - fUpdateService.postUpdateCommand(getCommandType(), fEnabledTarget); + fUpdateService.postUpdateCommand(getCommandType(), fEnabledTarget); } - /** - * @see org.eclipse.jface.action.Action#setEnabled(boolean) - */ - @Override + /** + * @see org.eclipse.jface.action.Action#setEnabled(boolean) + */ + @Override public void setEnabled(boolean enabled) { - synchronized (this) { - if (!fInitialized) { - fInitialized = true; - notifyAll(); - } - } - super.setEnabled(enabled); - if (fAction != null) { - fAction.setEnabled(enabled); - } - } - - /** - * Initializes this action for a specific part. - * - * @param part workbench part - */ - public void init(IWorkbenchPart part) { - fInitialized = false; - fPart = part; - fWindow = part.getSite().getWorkbenchWindow(); - fUpdateService = DebugCommandService.getService(fWindow); - IDebugContextService service = getDebugContextService(); + synchronized (this) { + if (!fInitialized) { + fInitialized = true; + notifyAll(); + } + } + super.setEnabled(enabled); + if (fAction != null) { + fAction.setEnabled(enabled); + } + } + + /** + * Initializes this action for a specific part. + * + * @param part workbench part + */ + public void init(IWorkbenchPart part) { + fInitialized = false; + fPart = part; + fWindow = part.getSite().getWorkbenchWindow(); + fUpdateService = DebugCommandService.getService(fWindow); + IDebugContextService service = getDebugContextService(); String partId = part.getSite().getId(); service.addDebugContextListener(this, partId); - ISelection activeContext = service.getActiveContext(partId); - if (activeContext != null) { - fUpdateService.updateCommand(getCommandType(), fEnabledTarget); - } else { - setEnabled(getInitialEnablement()); - } - } - - /** - * Initializes this action for a workbench window. - * - * @param window the window - */ - public void init(IWorkbenchWindow window) { - fInitialized = false; - fWindow = window; - fUpdateService = DebugCommandService.getService(fWindow); - IDebugContextService contextService = getDebugContextService(); + ISelection activeContext = service.getActiveContext(partId); + if (activeContext != null) { + fUpdateService.updateCommand(getCommandType(), fEnabledTarget); + } else { + setEnabled(getInitialEnablement()); + } + } + + /** + * Initializes this action for a workbench window. + * + * @param window the window + */ + public void init(IWorkbenchWindow window) { + fInitialized = false; + fWindow = window; + fUpdateService = DebugCommandService.getService(fWindow); + IDebugContextService contextService = getDebugContextService(); contextService.addDebugContextListener(this); - ISelection activeContext = contextService.getActiveContext(); - if (activeContext != null) { - fUpdateService.updateCommand(getCommandType(), fEnabledTarget); - } else { - setEnabled(getInitialEnablement()); - } - } - - /** - * Returns whether this action should be enabled when initialized - * and there is no active debug context. By default, <code>false</code> - * is returned. - * - * @return initial enabled state when there is no active context. - */ - protected boolean getInitialEnablement() { - return false; - } - - /** - * Returns the context (selection) this action operates on. By default - * the active debug context in this action's associated part or window is used, - * but subclasses may override as required. - * - * @return the context this action operates on - * @since 3.7 - */ - protected ISelection getContext() { + ISelection activeContext = contextService.getActiveContext(); + if (activeContext != null) { + fUpdateService.updateCommand(getCommandType(), fEnabledTarget); + } else { + setEnabled(getInitialEnablement()); + } + } + + /** + * Returns whether this action should be enabled when initialized + * and there is no active debug context. By default, <code>false</code> + * is returned. + * + * @return initial enabled state when there is no active context. + */ + protected boolean getInitialEnablement() { + return false; + } + + /** + * Returns the context (selection) this action operates on. By default + * the active debug context in this action's associated part or window is used, + * but subclasses may override as required. + * + * @return the context this action operates on + * @since 3.7 + */ + protected ISelection getContext() { if (fPart != null) { getDebugContextService().getActiveContext(fPart.getSite().getId()); - } - return getDebugContextService().getActiveContext(); - } + } + return getDebugContextService().getActiveContext(); + } - @Override + @Override public void run() { - synchronized (this) { - if (!fInitialized) { - try { - wait(); - } catch (InterruptedException e) { - } - } - } - - ISelection selection = getContext(); - if (selection instanceof IStructuredSelection && isEnabled()) { - IStructuredSelection ss = (IStructuredSelection) selection; - boolean enabled = execute(ss.toArray()); - // disable the action according to the command - setEnabled(enabled); - } - } - - @Override + synchronized (this) { + if (!fInitialized) { + try { + wait(); + } catch (InterruptedException e) { + } + } + } + + ISelection selection = getContext(); + if (selection instanceof IStructuredSelection && isEnabled()) { + IStructuredSelection ss = (IStructuredSelection) selection; + boolean enabled = execute(ss.toArray()); + // disable the action according to the command + setEnabled(enabled); + } + } + + @Override public void runWithEvent(Event event) { - run(); - } - - /** - * Clean up when removing - */ - public void dispose() { - IDebugContextService service = getDebugContextService(); - if (fPart != null) { - service.removeDebugContextListener(this, fPart.getSite().getId()); - } else { - service.removeDebugContextListener(this); - } - fWindow = null; - fPart = null; - } - - /** - * Returns the context service this action linked to. By default, this actions is - * associated with the context service for the window this action is operating in. - * - * @return associated context service - */ - protected IDebugContextService getDebugContextService() { - return DebugUITools.getDebugContextManager().getContextService(fWindow); - } - - /** - * Returns the help context id for this action or <code>null</code> if none. - * - * @return The help context id for this action or <code>null</code> - */ - public abstract String getHelpContextId(); - - @Override + run(); + } + + /** + * Clean up when removing + */ + public void dispose() { + IDebugContextService service = getDebugContextService(); + if (fPart != null) { + service.removeDebugContextListener(this, fPart.getSite().getId()); + } else { + service.removeDebugContextListener(this); + } + fWindow = null; + fPart = null; + } + + /** + * Returns the context service this action linked to. By default, this actions is + * associated with the context service for the window this action is operating in. + * + * @return associated context service + */ + protected IDebugContextService getDebugContextService() { + return DebugUITools.getDebugContextManager().getContextService(fWindow); + } + + /** + * Returns the help context id for this action or <code>null</code> if none. + * + * @return The help context id for this action or <code>null</code> + */ + public abstract String getHelpContextId(); + + @Override public abstract String getId(); - @Override + @Override public abstract String getText(); - @Override + @Override public abstract String getToolTipText(); - @Override + @Override public abstract ImageDescriptor getDisabledImageDescriptor(); - @Override + @Override public abstract ImageDescriptor getHoverImageDescriptor(); - @Override + @Override public abstract ImageDescriptor getImageDescriptor(); - /** - * Returns the workbench proxy associated with this action or <code>null</code> - * if none. This is the workbench proxy to an {@link org.eclipse.ui.IActionDelegate} - * that is using this action to perform its actual work. This is only used when - * an {@link org.eclipse.ui.IActionDelegate} is using one of these actions to perform its - * function. - * - * @return workbench proxy action or <code>null</code> - */ - protected IAction getActionProxy() { - return fAction; - } + /** + * Returns the workbench proxy associated with this action or <code>null</code> + * if none. This is the workbench proxy to an {@link org.eclipse.ui.IActionDelegate} + * that is using this action to perform its actual work. This is only used when + * an {@link org.eclipse.ui.IActionDelegate} is using one of these actions to perform its + * function. + * + * @return workbench proxy action or <code>null</code> + */ + protected IAction getActionProxy() { + return fAction; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/DebugCommandHandler.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/DebugCommandHandler.java index 32a11b7aa..442bbc396 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/DebugCommandHandler.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/DebugCommandHandler.java @@ -61,228 +61,228 @@ import org.eclipse.ui.handlers.HandlerUtil; */ public abstract class DebugCommandHandler extends AbstractHandler { - /** - * The DebugCommandService is able to evaluate the command handler - * enablement in each workbench window separately, however the workbench - * command framework uses only a single handler instance for all windows. - * This IEnabledTarget implementation tracks enablement of the command - * for a given window. When the handler enablement is tested, the - * currently active window is used to determine which enabled target - * to use. - */ - private class EnabledTarget implements IEnabledTarget, IDebugContextListener { - boolean fEnabled = getInitialEnablement(); - IWorkbenchWindow fWindow; - - EnabledTarget(IWorkbenchWindow window) { - fWindow = window; + /** + * The DebugCommandService is able to evaluate the command handler + * enablement in each workbench window separately, however the workbench + * command framework uses only a single handler instance for all windows. + * This IEnabledTarget implementation tracks enablement of the command + * for a given window. When the handler enablement is tested, the + * currently active window is used to determine which enabled target + * to use. + */ + private class EnabledTarget implements IEnabledTarget, IDebugContextListener { + boolean fEnabled = getInitialEnablement(); + IWorkbenchWindow fWindow; + + EnabledTarget(IWorkbenchWindow window) { + fWindow = window; } void init() { - DebugCommandService.getService(fWindow).updateCommand(getCommandType(), this); - getContextService(fWindow).addDebugContextListener(this); + DebugCommandService.getService(fWindow).updateCommand(getCommandType(), this); + getContextService(fWindow).addDebugContextListener(this); } - @Override + @Override public void setEnabled(boolean enabled) { - boolean oldEnabled = fEnabled; - fEnabled = enabled; - if (fEnabled != oldEnabled && fCurrentEnabledTarget == this) { - fireHandlerChanged(new HandlerEvent(DebugCommandHandler.this, true, false)); - } - } - - @Override + boolean oldEnabled = fEnabled; + fEnabled = enabled; + if (fEnabled != oldEnabled && fCurrentEnabledTarget == this) { + fireHandlerChanged(new HandlerEvent(DebugCommandHandler.this, true, false)); + } + } + + @Override public void debugContextChanged(DebugContextEvent event) { - DebugCommandService.getService(fWindow).postUpdateCommand(getCommandType(), this); - } - - void dispose() { - if (isDisposed()) { - return; - } - getContextService(fWindow).removeDebugContextListener(this); - fWindow = null; - } - - boolean isDisposed() { - return fWindow == null; - } - } - - /** - * Window listener is used to make sure that the handler enablement - * is updated when the active workbench window is changed. - */ - private IWindowListener fWindowListener = new IWindowListener() { - - @Override + DebugCommandService.getService(fWindow).postUpdateCommand(getCommandType(), this); + } + + void dispose() { + if (isDisposed()) { + return; + } + getContextService(fWindow).removeDebugContextListener(this); + fWindow = null; + } + + boolean isDisposed() { + return fWindow == null; + } + } + + /** + * Window listener is used to make sure that the handler enablement + * is updated when the active workbench window is changed. + */ + private IWindowListener fWindowListener = new IWindowListener() { + + @Override public void windowOpened(IWorkbenchWindow w) { - } + } - @Override + @Override public void windowDeactivated(IWorkbenchWindow w) { - } + } - @Override + @Override public void windowClosed(IWorkbenchWindow w) { - EnabledTarget enabledTarget = fEnabledTargetsMap.get(w); - if (enabledTarget != null) { - enabledTarget.dispose(); - } - } + EnabledTarget enabledTarget = fEnabledTargetsMap.get(w); + if (enabledTarget != null) { + enabledTarget.dispose(); + } + } - @Override + @Override public void windowActivated(IWorkbenchWindow w) { - fCurrentEnabledTarget = fEnabledTargetsMap.get(w); - fireHandlerChanged(new HandlerEvent(DebugCommandHandler.this, true, false)); - } - }; - - /** - * Map of enabled targets keyed by workbench window. - */ - private Map<IWorkbenchWindow, EnabledTarget> fEnabledTargetsMap = new WeakHashMap<>(); - - /** - * The current enabled target, based on the active - * workbench window. - */ - private EnabledTarget fCurrentEnabledTarget = null; - - /** - * The constructor adds the handler as the - */ - public DebugCommandHandler() { - super(); - PlatformUI.getWorkbench().addWindowListener(fWindowListener); - } - - @Override + fCurrentEnabledTarget = fEnabledTargetsMap.get(w); + fireHandlerChanged(new HandlerEvent(DebugCommandHandler.this, true, false)); + } + }; + + /** + * Map of enabled targets keyed by workbench window. + */ + private Map<IWorkbenchWindow, EnabledTarget> fEnabledTargetsMap = new WeakHashMap<>(); + + /** + * The current enabled target, based on the active + * workbench window. + */ + private EnabledTarget fCurrentEnabledTarget = null; + + /** + * The constructor adds the handler as the + */ + public DebugCommandHandler() { + super(); + PlatformUI.getWorkbench().addWindowListener(fWindowListener); + } + + @Override public void setEnabled(Object evaluationContext) { - // This method is called with the current evaluation context - // just prior to the isEnabled() being called. Check the active - // window and update the current enabled target based on it - fCurrentEnabledTarget = null; - - if (!(evaluationContext instanceof IEvaluationContext)) { - return; - } - IEvaluationContext context = (IEvaluationContext) evaluationContext; - Object _window = context.getVariable(ISources.ACTIVE_WORKBENCH_WINDOW_NAME); - if (_window instanceof IWorkbenchWindow) { - IWorkbenchWindow window = (IWorkbenchWindow)_window; - fCurrentEnabledTarget = getEnabledTarget(window); - } - } - - @Override + // This method is called with the current evaluation context + // just prior to the isEnabled() being called. Check the active + // window and update the current enabled target based on it + fCurrentEnabledTarget = null; + + if (!(evaluationContext instanceof IEvaluationContext)) { + return; + } + IEvaluationContext context = (IEvaluationContext) evaluationContext; + Object _window = context.getVariable(ISources.ACTIVE_WORKBENCH_WINDOW_NAME); + if (_window instanceof IWorkbenchWindow) { + IWorkbenchWindow window = (IWorkbenchWindow)_window; + fCurrentEnabledTarget = getEnabledTarget(window); + } + } + + @Override public boolean isEnabled() { - if (fCurrentEnabledTarget == null) { - return false; - } - return fCurrentEnabledTarget.fEnabled; - } - - private EnabledTarget getEnabledTarget(IWorkbenchWindow window) { - EnabledTarget target = fEnabledTargetsMap.get(window); - if (target == null) { - target = new EnabledTarget(window); + if (fCurrentEnabledTarget == null) { + return false; + } + return fCurrentEnabledTarget.fEnabled; + } + + private EnabledTarget getEnabledTarget(IWorkbenchWindow window) { + EnabledTarget target = fEnabledTargetsMap.get(window); + if (target == null) { + target = new EnabledTarget(window); fEnabledTargetsMap.put(window, target); target.init(); - } - return target; - } + } + return target; + } - @Override + @Override public Object execute(ExecutionEvent event) throws ExecutionException { - IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindow(event); - if (window == null) { - throw new ExecutionException("No active workbench window."); //$NON-NLS-1$ - } - fCurrentEnabledTarget = getEnabledTarget(window); - - ISelection selection = getContextService(window).getActiveContext(); - if (selection instanceof IStructuredSelection && isEnabled()) { - IStructuredSelection ss = (IStructuredSelection) selection; - boolean enabledAfterExecute = execute(window, ss.toArray()); - - // enable/disable the action according to the command - fCurrentEnabledTarget.setEnabled(enabledAfterExecute); - } - - return null; - } - - private IDebugContextService getContextService(IWorkbenchWindow window) { - return DebugUITools.getDebugContextManager().getContextService(window); - } - - /** - * Executes this action on the given target objects - * @param window the window - * @param targets the targets to execute this action on - * @return if the command stays enabled while the command executes - */ - private boolean execute(IWorkbenchWindow window, final Object[] targets) { - DebugCommandService service = DebugCommandService.getService(window); - return service.executeCommand( - getCommandType(), targets, - new ICommandParticipant() { - @Override + IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindow(event); + if (window == null) { + throw new ExecutionException("No active workbench window."); //$NON-NLS-1$ + } + fCurrentEnabledTarget = getEnabledTarget(window); + + ISelection selection = getContextService(window).getActiveContext(); + if (selection instanceof IStructuredSelection && isEnabled()) { + IStructuredSelection ss = (IStructuredSelection) selection; + boolean enabledAfterExecute = execute(window, ss.toArray()); + + // enable/disable the action according to the command + fCurrentEnabledTarget.setEnabled(enabledAfterExecute); + } + + return null; + } + + private IDebugContextService getContextService(IWorkbenchWindow window) { + return DebugUITools.getDebugContextManager().getContextService(window); + } + + /** + * Executes this action on the given target objects + * @param window the window + * @param targets the targets to execute this action on + * @return if the command stays enabled while the command executes + */ + private boolean execute(IWorkbenchWindow window, final Object[] targets) { + DebugCommandService service = DebugCommandService.getService(window); + return service.executeCommand( + getCommandType(), targets, + new ICommandParticipant() { + @Override public void requestDone(org.eclipse.debug.core.IRequest request) { - DebugCommandHandler.this.postExecute(request, targets); - } - }); - } - - /** - * This method is called after the completion of the execution of this - * command. Extending classes may override this method to perform additional - * operation after command execution. - * - * @param request The completed request object which was given the the - * debug command handler. - * @param targets Objects which were the targets of this action - */ - protected void postExecute(IRequest request, Object[] targets) { - // do nothing by default - } - - /** - * Returns the {@link org.eclipse.debug.core.commands.IDebugCommandHandler} - * command handler that type this action executes. - * - * @return command class. - * - * @see org.eclipse.debug.core.commands.IDebugCommandHandler - */ + DebugCommandHandler.this.postExecute(request, targets); + } + }); + } + + /** + * This method is called after the completion of the execution of this + * command. Extending classes may override this method to perform additional + * operation after command execution. + * + * @param request The completed request object which was given the the + * debug command handler. + * @param targets Objects which were the targets of this action + */ + protected void postExecute(IRequest request, Object[] targets) { + // do nothing by default + } + + /** + * Returns the {@link org.eclipse.debug.core.commands.IDebugCommandHandler} + * command handler that type this action executes. + * + * @return command class. + * + * @see org.eclipse.debug.core.commands.IDebugCommandHandler + */ abstract protected Class<?> getCommandType(); - /** - * Returns whether this action should be enabled when initialized - * and there is no active debug context. - * - * @return false, by default - */ - protected boolean getInitialEnablement() { - return false; - } + /** + * Returns whether this action should be enabled when initialized + * and there is no active debug context. + * + * @return false, by default + */ + protected boolean getInitialEnablement() { + return false; + } - /** - * Clean up when removing - */ - @Override + /** + * Clean up when removing + */ + @Override public void dispose() { - PlatformUI.getWorkbench().removeWindowListener(fWindowListener); - for(EnabledTarget target : fEnabledTargetsMap.values()) { - if (!target.isDisposed()) { - target.dispose(); - } - } - fEnabledTargetsMap.clear(); - fCurrentEnabledTarget = null; - } + PlatformUI.getWorkbench().removeWindowListener(fWindowListener); + for(EnabledTarget target : fEnabledTargetsMap.values()) { + if (!target.isDisposed()) { + target.dispose(); + } + } + fEnabledTargetsMap.clear(); + fCurrentEnabledTarget = null; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/IToggleBreakpointsTargetFactory.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/IToggleBreakpointsTargetFactory.java index 6b7a25b79..f86dd4fbb 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/IToggleBreakpointsTargetFactory.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/IToggleBreakpointsTargetFactory.java @@ -67,56 +67,56 @@ import org.eclipse.ui.IWorkbenchPart; * @since 3.5 */ public interface IToggleBreakpointsTargetFactory { - /** - * Returns all possible types of toggle breakpoints targets that this - * factory can create for the given selection and part, possibly empty. - * Toggle breakpoints targets are returned as a set of IDs. - * - * @param part The active part. - * @param selection The current selection - * @return Set of <code>String</code> IDs for possible toggle breakpoint - * targets, possibly empty - */ + /** + * Returns all possible types of toggle breakpoints targets that this + * factory can create for the given selection and part, possibly empty. + * Toggle breakpoints targets are returned as a set of IDs. + * + * @param part The active part. + * @param selection The current selection + * @return Set of <code>String</code> IDs for possible toggle breakpoint + * targets, possibly empty + */ Set<String> getToggleTargets(IWorkbenchPart part, ISelection selection); - /** - * Returns the identifier of the default toggle breakpoints target to use - * for the given selection, or <code>null</code> if this factory has no - * preference. - * - * @param part The active part. - * @param selection The current selection - * @return a breakpoint toggle target identifier or <code>null</code> - */ - String getDefaultToggleTarget(IWorkbenchPart part, ISelection selection); + /** + * Returns the identifier of the default toggle breakpoints target to use + * for the given selection, or <code>null</code> if this factory has no + * preference. + * + * @param part The active part. + * @param selection The current selection + * @return a breakpoint toggle target identifier or <code>null</code> + */ + String getDefaultToggleTarget(IWorkbenchPart part, ISelection selection); - /** - * Creates and returns a toggle breakpoint target corresponding to the - * given identifier that this factory can produce (according to - * {@link #getToggleTargets}). - * - * @param targetID The id of the toggle target to be created - * @return toggle target or <code>null</code> if one could not be created - */ - IToggleBreakpointsTarget createToggleTarget(String targetID); + /** + * Creates and returns a toggle breakpoint target corresponding to the + * given identifier that this factory can produce (according to + * {@link #getToggleTargets}). + * + * @param targetID The id of the toggle target to be created + * @return toggle target or <code>null</code> if one could not be created + */ + IToggleBreakpointsTarget createToggleTarget(String targetID); - /** - * Returns a human readable name for the breakpoint toggle target associated with the - * given ID. Used to populate the context menu with meaningful names of the types of - * breakpoints created by the given target. - * - * @param targetID toggle breakpoints target identifier - * @return toggle target name - */ - String getToggleTargetName(String targetID); + /** + * Returns a human readable name for the breakpoint toggle target associated with the + * given ID. Used to populate the context menu with meaningful names of the types of + * breakpoints created by the given target. + * + * @param targetID toggle breakpoints target identifier + * @return toggle target name + */ + String getToggleTargetName(String targetID); - /** - * Returns a description for the breakpoint toggle target associated with the - * given ID or <code>null</code> if none. - * - * @param targetID toggle breakpoints target identifier - * @return toggle target name or <code>null</code> if none - */ - String getToggleTargetDescription(String targetID); + /** + * Returns a description for the breakpoint toggle target associated with the + * given ID or <code>null</code> if none. + * + * @param targetID toggle breakpoints target identifier + * @return toggle target name or <code>null</code> if none + */ + String getToggleTargetDescription(String targetID); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/IToggleBreakpointsTargetManager.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/IToggleBreakpointsTargetManager.java index 2f8f9fdb9..7c67cf927 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/IToggleBreakpointsTargetManager.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/IToggleBreakpointsTargetManager.java @@ -43,65 +43,65 @@ import org.eclipse.ui.IWorkbenchPart; */ public interface IToggleBreakpointsTargetManager { - /** - * Returns the set of <code>String</code> IDs of toggle breakpoint targets, - * which are enabled for the given active part and selection. The IDs can be used - * to create the {@link IToggleBreakpointsTarget} instance. - * @param part active part - * @param selection active selection in part - * @return Set of toggle target IDs or an empty set - */ + /** + * Returns the set of <code>String</code> IDs of toggle breakpoint targets, + * which are enabled for the given active part and selection. The IDs can be used + * to create the {@link IToggleBreakpointsTarget} instance. + * @param part active part + * @param selection active selection in part + * @return Set of toggle target IDs or an empty set + */ Set<String> getEnabledToggleBreakpointsTargetIDs(IWorkbenchPart part, ISelection selection); - /** - * Returns the ID of the calculated preferred toggle breakpoints target for the - * given active part and selection. The returned ID is chosen based on factory - * enablement, whether the target is a default one, and on user choice. - * @param part active part - * @param selection active selection in part - * @return The toggle target IDs or null if none. - */ - String getPreferredToggleBreakpointsTargetID(IWorkbenchPart part, ISelection selection); + /** + * Returns the ID of the calculated preferred toggle breakpoints target for the + * given active part and selection. The returned ID is chosen based on factory + * enablement, whether the target is a default one, and on user choice. + * @param part active part + * @param selection active selection in part + * @return The toggle target IDs or null if none. + */ + String getPreferredToggleBreakpointsTargetID(IWorkbenchPart part, ISelection selection); - /** - * Given the ID of toggle breakpoint target, this method will try to find the factory - * that creates it and return an instance of it. - * - * @param part The workbench part in which toggle target is to be used - * @param selection The active selection to use with toggle target - * @return The instantiated target or null - */ - IToggleBreakpointsTarget getToggleBreakpointsTarget(IWorkbenchPart part, ISelection selection); + /** + * Given the ID of toggle breakpoint target, this method will try to find the factory + * that creates it and return an instance of it. + * + * @param part The workbench part in which toggle target is to be used + * @param selection The active selection to use with toggle target + * @return The instantiated target or null + */ + IToggleBreakpointsTarget getToggleBreakpointsTarget(IWorkbenchPart part, ISelection selection); - /** - * Given the ID of a toggle breakpoints target, this method will try - * to find the factory that creates it and ask it for the name of it. - * - * @param id The ID of the requested toggle breakpoint target. - * @return The name of the target. - */ - String getToggleBreakpointsTargetName(String id); + /** + * Given the ID of a toggle breakpoints target, this method will try + * to find the factory that creates it and ask it for the name of it. + * + * @param id The ID of the requested toggle breakpoint target. + * @return The name of the target. + */ + String getToggleBreakpointsTargetName(String id); - /** - * Given the ID of a toggle breakpoints target, this method will try - * to find the factory that creates it and ask it for the description of it. - * - * @param id The ID of the requested toggle breakpoint target. - * @return The description of the target or null. - */ - String getToggleBreakpointsTargetDescription(String id); + /** + * Given the ID of a toggle breakpoints target, this method will try + * to find the factory that creates it and ask it for the description of it. + * + * @param id The ID of the requested toggle breakpoint target. + * @return The description of the target or null. + */ + String getToggleBreakpointsTargetDescription(String id); - /** - * Adds the given listener to the list of listeners notified when the preferred - * toggle breakpoints targets change. - * @param listener The listener to add. - */ - void addChangedListener(IToggleBreakpointsTargetManagerListener listener); + /** + * Adds the given listener to the list of listeners notified when the preferred + * toggle breakpoints targets change. + * @param listener The listener to add. + */ + void addChangedListener(IToggleBreakpointsTargetManagerListener listener); - /** - * Removes the given listener from the list of listeners notified when the preferred - * toggle breakpoints targets change. - * @param listener The listener to add. - */ - void removeChangedListener(IToggleBreakpointsTargetManagerListener listener); + /** + * Removes the given listener from the list of listeners notified when the preferred + * toggle breakpoints targets change. + * @param listener The listener to add. + */ + void removeChangedListener(IToggleBreakpointsTargetManagerListener listener); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/IToggleBreakpointsTargetManagerListener.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/IToggleBreakpointsTargetManagerListener.java index 5d2d44ccf..e358d3545 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/IToggleBreakpointsTargetManagerListener.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/IToggleBreakpointsTargetManagerListener.java @@ -26,8 +26,8 @@ package org.eclipse.debug.ui.actions; */ public interface IToggleBreakpointsTargetManagerListener { - /** - * Called when the preferred toggle targets have changed. - */ - void preferredTargetsChanged(); + /** + * Called when the preferred toggle targets have changed. + */ + void preferredTargetsChanged(); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/IVariableValueEditor.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/IVariableValueEditor.java index b6f7c962e..3b5b744f6 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/IVariableValueEditor.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/IVariableValueEditor.java @@ -47,34 +47,34 @@ import org.eclipse.swt.widgets.Shell; */ public interface IVariableValueEditor { - /** - * Edits the given variable, if appropriate. If this editor does not apply to - * the given variable this method returns false, which indicates that the - * Debug Platform's default variable edit dialog should be used. - * - * @param variable the variable to edit - * @param shell the currently active shell, which can be used to open a dialog - * for the user - * @return whether this editor has completed the edit operation for the given variable. - * <code>true</code> if no more work should be done, <code>false</code> if the debug - * platform should prompt the user to edit the given variable using the default - * variable editor - */ - boolean editVariable(IVariable variable, Shell shell); + /** + * Edits the given variable, if appropriate. If this editor does not apply to + * the given variable this method returns false, which indicates that the + * Debug Platform's default variable edit dialog should be used. + * + * @param variable the variable to edit + * @param shell the currently active shell, which can be used to open a dialog + * for the user + * @return whether this editor has completed the edit operation for the given variable. + * <code>true</code> if no more work should be done, <code>false</code> if the debug + * platform should prompt the user to edit the given variable using the default + * variable editor + */ + boolean editVariable(IVariable variable, Shell shell); - /** - * Saves the given expression to the given variable, if appropriate. If this - * editor does not set the given variable's value from the given expression, this - * method returns false. Returning false indicates that the Debug Platform should - * perform the default operation to set a variable's value based on a String. - * - * @param variable the variable to edit - * @param expression the expression to assign to the given variable - * @param shell the currently active shell, which can be used to report errors to the - * user. May be <code>null</code> if no active shell could be found. - * @return whether this editor has completed the save operation for the given variable. - * <code>true</code> if no more work should be done, <code>false</code> if the debug - * platform should perform the default save operation - */ - boolean saveVariable(IVariable variable, String expression, Shell shell); + /** + * Saves the given expression to the given variable, if appropriate. If this + * editor does not set the given variable's value from the given expression, this + * method returns false. Returning false indicates that the Debug Platform should + * perform the default operation to set a variable's value based on a String. + * + * @param variable the variable to edit + * @param expression the expression to assign to the given variable + * @param shell the currently active shell, which can be used to report errors to the + * user. May be <code>null</code> if no active shell could be found. + * @return whether this editor has completed the save operation for the given variable. + * <code>true</code> if no more work should be done, <code>false</code> if the debug + * platform should perform the default save operation + */ + boolean saveVariable(IVariable variable, String expression, Shell shell); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/IWatchExpressionFactoryAdapter2.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/IWatchExpressionFactoryAdapter2.java index 4aed3fad8..604b7d02a 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/IWatchExpressionFactoryAdapter2.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/IWatchExpressionFactoryAdapter2.java @@ -32,18 +32,18 @@ import org.eclipse.core.runtime.CoreException; */ public interface IWatchExpressionFactoryAdapter2 { - /** - * Creates and returns an expression for the specified variable - * which is used to created an {@link org.eclipse.debug.core.model.IWatchExpression}. - * - * @param element element a watch expression is required for - * @return text used to create a watch expression - * @exception org.eclipse.core.runtime.CoreException if unable to create a watch - * expression - */ - String createWatchExpression(Object element) throws CoreException; + /** + * Creates and returns an expression for the specified variable + * which is used to created an {@link org.eclipse.debug.core.model.IWatchExpression}. + * + * @param element element a watch expression is required for + * @return text used to create a watch expression + * @exception org.eclipse.core.runtime.CoreException if unable to create a watch + * expression + */ + String createWatchExpression(Object element) throws CoreException; - /** + /** * Returns whether a watch expression can be created for the specified variable. * * @param variable the specified variable diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/ImportBreakpointsOperation.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/ImportBreakpointsOperation.java index cc5069538..945cc6422 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/ImportBreakpointsOperation.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/ImportBreakpointsOperation.java @@ -302,7 +302,7 @@ public class ImportBreakpointsOperation implements IRunnableWithProgress { */ private void readAttribute(IMemento memento, Map<String, Object> map) { String name = memento.getString(IImportExportConstants.IE_NODE_NAME), - value = memento.getString(IImportExportConstants.IE_NODE_VALUE); + value = memento.getString(IImportExportConstants.IE_NODE_VALUE); if (value != null && name != null) { if (name.equals(IInternalDebugUIConstants.WORKING_SET_NAME)) { fCurrentWorkingSetProperty = value; diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/LaunchShortcutsAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/LaunchShortcutsAction.java index aa905eacb..17dcd129a 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/LaunchShortcutsAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/LaunchShortcutsAction.java @@ -183,13 +183,13 @@ public class LaunchShortcutsAction extends Action implements IMenuCreator, IWork String mode = getMode(); try { ILaunchConfiguration config = getLaunchConfigurationManager().isSharedConfig(getSelection(context)); - if(config != null && config.exists() && config.supportsMode(mode)) { - IAction action = new LaunchConfigurationAction(config, mode, config.getName(), DebugUITools.getDefaultImageDescriptor(config), accelerator++); - ActionContributionItem item = new ActionContributionItem(action); - item.fill(fCreatedMenu, -1); - if(!filteredShortCuts.isEmpty()) { - new MenuItem(fCreatedMenu, SWT.SEPARATOR); - } + if(config != null && config.exists() && config.supportsMode(mode)) { + IAction action = new LaunchConfigurationAction(config, mode, config.getName(), DebugUITools.getDefaultImageDescriptor(config), accelerator++); + ActionContributionItem item = new ActionContributionItem(action); + item.fill(fCreatedMenu, -1); + if(!filteredShortCuts.isEmpty()) { + new MenuItem(fCreatedMenu, SWT.SEPARATOR); + } } } catch(CoreException ce) {DebugUIPlugin.log(ce);} @@ -320,10 +320,10 @@ public class LaunchShortcutsAction extends Action implements IMenuCreator, IWork */ @Override public void selectionChanged(IAction action, ISelection selection) { - if (!fInitialized) { - action.setEnabled(existsConfigTypesForMode()); - fInitialized = true; - } + if (!fInitialized) { + action.setEnabled(existsConfigTypesForMode()); + fInitialized = true; + } } /** diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/RulerBreakpointAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/RulerBreakpointAction.java index 70a0dcc72..7a92fae36 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/RulerBreakpointAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/RulerBreakpointAction.java @@ -60,7 +60,7 @@ public abstract class RulerBreakpointAction extends Action { * @return breakpoint associated with activity in the ruler or <code>null</code> */ protected IBreakpoint getBreakpoint() { - IAnnotationModel annotationModel = fEditor.getDocumentProvider().getAnnotationModel(fEditor.getEditorInput()); + IAnnotationModel annotationModel = fEditor.getDocumentProvider().getAnnotationModel(fEditor.getEditorInput()); IDocument document = fEditor.getDocumentProvider().getDocument(fEditor.getEditorInput()); if (annotationModel != null) { Iterator<Annotation> iterator = annotationModel.getAnnotationIterator(); diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/RulerBreakpointTypesActionDelegate.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/RulerBreakpointTypesActionDelegate.java index 8b145bfdf..65bf5a1df 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/RulerBreakpointTypesActionDelegate.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/RulerBreakpointTypesActionDelegate.java @@ -82,172 +82,172 @@ import org.eclipse.ui.texteditor.ITextEditorExtension; */ @Deprecated public class RulerBreakpointTypesActionDelegate implements IEditorActionDelegate, IMenuListener, IMenuCreator { - private ITextEditor fEditor = null; - private IAction fCallerAction = null; - private IVerticalRulerInfo fRulerInfo; - private ISelection fSelection; + private ITextEditor fEditor = null; + private IAction fCallerAction = null; + private IVerticalRulerInfo fRulerInfo; + private ISelection fSelection; - /** - * The menu created by this action - */ - private Menu fMenu; + /** + * The menu created by this action + */ + private Menu fMenu; - private class SelectTargetAction extends Action { + private class SelectTargetAction extends Action { private final Set<String> fPossibleIDs; - private final String fID; + private final String fID; SelectTargetAction(String name, Set<String> possibleIDs, String ID) { - super(name, AS_RADIO_BUTTON); - fID = ID; - fPossibleIDs = possibleIDs; - } + super(name, AS_RADIO_BUTTON); + fID = ID; + fPossibleIDs = possibleIDs; + } - @Override + @Override public void run() { - if (isChecked()) { - ToggleBreakpointsTargetManager.getDefault().setPreferredTarget(fPossibleIDs, fID); - } - } - } + if (isChecked()) { + ToggleBreakpointsTargetManager.getDefault().setPreferredTarget(fPossibleIDs, fID); + } + } + } - @Override + @Override public void selectionChanged(IAction action, ISelection selection) { - // In the editor we're not using the selection. - } + // In the editor we're not using the selection. + } - @Override + @Override public void run(IAction action) { - // Do nothing, this is a pull-down menu. - } + // Do nothing, this is a pull-down menu. + } - @Override + @Override public void setActiveEditor(IAction callerAction, IEditorPart targetEditor) { - // Clean up old editor data. - if (fCallerAction != null) { - fCallerAction.setMenuCreator(null); - } - if (fEditor instanceof ITextEditorExtension) { - ((ITextEditorExtension) fEditor).removeRulerContextMenuListener(this); - } - fRulerInfo = null; + // Clean up old editor data. + if (fCallerAction != null) { + fCallerAction.setMenuCreator(null); + } + if (fEditor instanceof ITextEditorExtension) { + ((ITextEditorExtension) fEditor).removeRulerContextMenuListener(this); + } + fRulerInfo = null; - // Set up new editor data. - fCallerAction = callerAction; - fCallerAction.setMenuCreator(this); + // Set up new editor data. + fCallerAction = callerAction; + fCallerAction.setMenuCreator(this); - fEditor= targetEditor == null ? null : targetEditor.getAdapter(ITextEditor.class); + fEditor= targetEditor == null ? null : targetEditor.getAdapter(ITextEditor.class); - if (fEditor != null) { - if (fEditor instanceof ITextEditorExtension) { - ((ITextEditorExtension) fEditor).addRulerContextMenuListener(this); - } + if (fEditor != null) { + if (fEditor instanceof ITextEditorExtension) { + ((ITextEditorExtension) fEditor).addRulerContextMenuListener(this); + } - fRulerInfo= fEditor.getAdapter(IVerticalRulerInfo.class); - } + fRulerInfo= fEditor.getAdapter(IVerticalRulerInfo.class); + } - } + } - @Override + @Override public void dispose() { - if (fCallerAction != null) { - fCallerAction.setMenuCreator(null); - } - if (fEditor instanceof ITextEditorExtension) { - ((ITextEditorExtension) fEditor).removeRulerContextMenuListener(this); - } - fRulerInfo = null; - } - - @Override + if (fCallerAction != null) { + fCallerAction.setMenuCreator(null); + } + if (fEditor instanceof ITextEditorExtension) { + ((ITextEditorExtension) fEditor).removeRulerContextMenuListener(this); + } + fRulerInfo = null; + } + + @Override public void menuAboutToShow(IMenuManager manager) { - fSelection = StructuredSelection.EMPTY; - if (fEditor != null && fRulerInfo != null) { - - IDocumentProvider provider = fEditor.getDocumentProvider(); - if (provider != null) { - IDocument document = provider.getDocument(fEditor.getEditorInput()); - int line = fRulerInfo.getLineOfLastMouseButtonActivity(); - if (line > -1) { - try { - IRegion region = document.getLineInformation(line); - fSelection = new TextSelection(document, region.getOffset(), 0); - } catch (BadLocationException e) {} - } - } - ToggleBreakpointsTargetManager toggleTargetManager = ToggleBreakpointsTargetManager.getDefault(); + fSelection = StructuredSelection.EMPTY; + if (fEditor != null && fRulerInfo != null) { + + IDocumentProvider provider = fEditor.getDocumentProvider(); + if (provider != null) { + IDocument document = provider.getDocument(fEditor.getEditorInput()); + int line = fRulerInfo.getLineOfLastMouseButtonActivity(); + if (line > -1) { + try { + IRegion region = document.getLineInformation(line); + fSelection = new TextSelection(document, region.getOffset(), 0); + } catch (BadLocationException e) {} + } + } + ToggleBreakpointsTargetManager toggleTargetManager = ToggleBreakpointsTargetManager.getDefault(); Set<String> enabledIDs = toggleTargetManager.getEnabledToggleBreakpointsTargetIDs(fEditor, fSelection); - fCallerAction.setEnabled(enabledIDs.size() > 0); - } else { - fCallerAction.setEnabled(false); - } - - } - - /** - * Sets this action's drop-down menu, disposing the previous menu. - * - * @param menu the new menu - */ - private void setMenu(Menu menu) { - if (fMenu != null) { - fMenu.dispose(); - } - fMenu = menu; - } - - @Override + fCallerAction.setEnabled(enabledIDs.size() > 0); + } else { + fCallerAction.setEnabled(false); + } + + } + + /** + * Sets this action's drop-down menu, disposing the previous menu. + * + * @param menu the new menu + */ + private void setMenu(Menu menu) { + if (fMenu != null) { + fMenu.dispose(); + } + fMenu = menu; + } + + @Override public Menu getMenu(Menu parent) { - setMenu(new Menu(parent)); - fillMenu(fMenu); - initMenu(); - return fMenu; - } + setMenu(new Menu(parent)); + fillMenu(fMenu); + initMenu(); + return fMenu; + } - @Override + @Override public Menu getMenu(Control parent) { - setMenu(new Menu(parent)); - fillMenu(fMenu); - initMenu(); - return fMenu; - } - - /** - * Fills the drop-down menu with enabled toggle breakpoint targets - * - * @param menu the menu to fill - */ - private void fillMenu(Menu menu) { - ToggleBreakpointsTargetManager manager = ToggleBreakpointsTargetManager.getDefault(); + setMenu(new Menu(parent)); + fillMenu(fMenu); + initMenu(); + return fMenu; + } + + /** + * Fills the drop-down menu with enabled toggle breakpoint targets + * + * @param menu the menu to fill + */ + private void fillMenu(Menu menu) { + ToggleBreakpointsTargetManager manager = ToggleBreakpointsTargetManager.getDefault(); Set<String> enabledIDs = manager.getEnabledToggleBreakpointsTargetIDs(fEditor, fSelection); - String preferredId = manager.getPreferredToggleBreakpointsTargetID(fEditor, fSelection); + String preferredId = manager.getPreferredToggleBreakpointsTargetID(fEditor, fSelection); for (String id : enabledIDs) { - SelectTargetAction action= new SelectTargetAction(manager.getToggleBreakpointsTargetName(id), enabledIDs, id); - if (id.equals(preferredId)){ - action.setChecked(true); - } - ActionContributionItem item= new ActionContributionItem(action); - item.fill(menu, -1); - } - } - - /** - * Creates the menu for the action - */ - private void initMenu() { - // Add listener to re-populate the menu each time - // it is shown because of dynamic history list - fMenu.addMenuListener(new MenuAdapter() { - @Override + SelectTargetAction action= new SelectTargetAction(manager.getToggleBreakpointsTargetName(id), enabledIDs, id); + if (id.equals(preferredId)){ + action.setChecked(true); + } + ActionContributionItem item= new ActionContributionItem(action); + item.fill(menu, -1); + } + } + + /** + * Creates the menu for the action + */ + private void initMenu() { + // Add listener to re-populate the menu each time + // it is shown because of dynamic history list + fMenu.addMenuListener(new MenuAdapter() { + @Override public void menuShown(MenuEvent e) { - Menu m = (Menu)e.widget; - MenuItem[] items = m.getItems(); - for (int i=0; i < items.length; i++) { - items[i].dispose(); - } - fillMenu(m); - } - }); - } + Menu m = (Menu)e.widget; + MenuItem[] items = m.getItems(); + for (int i=0; i < items.length; i++) { + items[i].dispose(); + } + fillMenu(m); + } + }); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/RunToLineActionDelegate.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/RunToLineActionDelegate.java index 0cab974eb..43ab92864 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/RunToLineActionDelegate.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/RunToLineActionDelegate.java @@ -72,8 +72,8 @@ public class RunToLineActionDelegate implements IEditorActionDelegate, IActionDe if (selection instanceof IStructuredSelection) { IStructuredSelection ss = (IStructuredSelection) selection; if (ss.size() == 1) { - fTargetElement = (ISuspendResume) - DebugPlugin.getAdapter(ss.getFirstElement(), ISuspendResume.class); + fTargetElement = (ISuspendResume) + DebugPlugin.getAdapter(ss.getFirstElement(), ISuspendResume.class); } } update(); diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/RunToLineHandler.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/RunToLineHandler.java index 64a419765..8a6b7ad75 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/RunToLineHandler.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/RunToLineHandler.java @@ -47,103 +47,103 @@ import org.eclipse.debug.ui.IDebugUIConstants; */ public class RunToLineHandler implements IDebugEventSetListener, IBreakpointManagerListener, IWorkspaceRunnable { - private IDebugTarget fTarget; - private ISuspendResume fResumee; - private IBreakpoint fBreakpoint; - private boolean fAutoSkip = false; + private IDebugTarget fTarget; + private ISuspendResume fResumee; + private IBreakpoint fBreakpoint; + private boolean fAutoSkip = false; - /** - * Constructs a handler to perform a run to line operation. - * - * @param target the debug target in which the operation is to be performed - * @param suspendResume the element to be resumed to begin the operation - * @param breakpoint the run to line breakpoint - */ - public RunToLineHandler(IDebugTarget target, ISuspendResume suspendResume, IBreakpoint breakpoint) { - fResumee = suspendResume; - fTarget = target; - fBreakpoint = breakpoint; - } + /** + * Constructs a handler to perform a run to line operation. + * + * @param target the debug target in which the operation is to be performed + * @param suspendResume the element to be resumed to begin the operation + * @param breakpoint the run to line breakpoint + */ + public RunToLineHandler(IDebugTarget target, ISuspendResume suspendResume, IBreakpoint breakpoint) { + fResumee = suspendResume; + fTarget = target; + fBreakpoint = breakpoint; + } - @Override + @Override public void handleDebugEvents(DebugEvent[] events) { - for (int i = 0; i < events.length; i++) { - DebugEvent event= events[i]; - Object source= event.getSource(); - if (source instanceof IThread && event.getKind() == DebugEvent.SUSPEND && - event.getDetail() == DebugEvent.BREAKPOINT) { - IThread thread = (IThread) source; - IDebugTarget suspendee = thread.getAdapter(IDebugTarget.class); - if (fTarget.equals(suspendee)) { - // cleanup if the breakpoint was hit or not - cancel(); - } - } else if (source instanceof IDebugTarget && event.getKind() == DebugEvent.TERMINATE) { - if (source.equals(fTarget)) { - // Clean up if the debug target terminates without - // hitting the breakpoint. - cancel(); - } - } - } + for (int i = 0; i < events.length; i++) { + DebugEvent event= events[i]; + Object source= event.getSource(); + if (source instanceof IThread && event.getKind() == DebugEvent.SUSPEND && + event.getDetail() == DebugEvent.BREAKPOINT) { + IThread thread = (IThread) source; + IDebugTarget suspendee = thread.getAdapter(IDebugTarget.class); + if (fTarget.equals(suspendee)) { + // cleanup if the breakpoint was hit or not + cancel(); + } + } else if (source instanceof IDebugTarget && event.getKind() == DebugEvent.TERMINATE) { + if (source.equals(fTarget)) { + // Clean up if the debug target terminates without + // hitting the breakpoint. + cancel(); + } + } + } - } + } - @Override + @Override public void breakpointManagerEnablementChanged(boolean enabled) { - // if the user changes the breakpoint manager enablement, don't restore it - fAutoSkip = false; - } + // if the user changes the breakpoint manager enablement, don't restore it + fAutoSkip = false; + } - private IBreakpointManager getBreakpointManager() { - return getDebugPlugin().getBreakpointManager(); - } + private IBreakpointManager getBreakpointManager() { + return getDebugPlugin().getBreakpointManager(); + } - private DebugPlugin getDebugPlugin() { - return DebugPlugin.getDefault(); - } + private DebugPlugin getDebugPlugin() { + return DebugPlugin.getDefault(); + } - /** - * Cancels the run to line operation. - */ - public void cancel() { - IBreakpointManager manager = getBreakpointManager(); - try { - getDebugPlugin().removeDebugEventListener(this); - manager.removeBreakpointManagerListener(this); - fTarget.breakpointRemoved(fBreakpoint, null); - } finally { - if (fAutoSkip) { - manager.setEnabled(true); - } - } - } + /** + * Cancels the run to line operation. + */ + public void cancel() { + IBreakpointManager manager = getBreakpointManager(); + try { + getDebugPlugin().removeDebugEventListener(this); + manager.removeBreakpointManagerListener(this); + fTarget.breakpointRemoved(fBreakpoint, null); + } finally { + if (fAutoSkip) { + manager.setEnabled(true); + } + } + } - @Override + @Override public void run(IProgressMonitor monitor) throws CoreException { - getDebugPlugin().addDebugEventListener(this); - IBreakpointManager breakpointManager = getBreakpointManager(); - fAutoSkip = DebugUITools.getPreferenceStore().getBoolean(IDebugUIConstants.PREF_SKIP_BREAKPOINTS_DURING_RUN_TO_LINE) && breakpointManager.isEnabled(); - if (fAutoSkip) { - getBreakpointManager().setEnabled(false); - breakpointManager.addBreakpointManagerListener(this); - } - Job job = new Job(ActionMessages.RunToLineHandler_0) { - @Override + getDebugPlugin().addDebugEventListener(this); + IBreakpointManager breakpointManager = getBreakpointManager(); + fAutoSkip = DebugUITools.getPreferenceStore().getBoolean(IDebugUIConstants.PREF_SKIP_BREAKPOINTS_DURING_RUN_TO_LINE) && breakpointManager.isEnabled(); + if (fAutoSkip) { + getBreakpointManager().setEnabled(false); + breakpointManager.addBreakpointManagerListener(this); + } + Job job = new Job(ActionMessages.RunToLineHandler_0) { + @Override protected IStatus run(IProgressMonitor jobMonitor) { - if (!jobMonitor.isCanceled()) { - fTarget.breakpointAdded(fBreakpoint); - try { - fResumee.resume(); - } catch (DebugException e) { - cancel(); - return e.getStatus(); - } - } - return Status.OK_STATUS; - } - }; - job.schedule(); - } + if (!jobMonitor.isCanceled()) { + fTarget.breakpointAdded(fBreakpoint); + try { + fResumee.resume(); + } catch (DebugException e) { + cancel(); + return e.getStatus(); + } + } + return Status.OK_STATUS; + } + }; + job.schedule(); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/ToggleBreakpointAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/ToggleBreakpointAction.java index a71280595..5f020524e 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/ToggleBreakpointAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/actions/ToggleBreakpointAction.java @@ -53,10 +53,10 @@ public class ToggleBreakpointAction extends Action implements IUpdate { private IDocument fDocument; private IVerticalRulerInfo fRulerInfo; private IToggleBreakpointsTargetManagerListener fListener = new IToggleBreakpointsTargetManagerListener() { - @Override + @Override public void preferredTargetsChanged() { - update(); - } + update(); + } }; /** @@ -120,7 +120,7 @@ public class ToggleBreakpointAction extends Action implements IUpdate { } } if (target.canToggleLineBreakpoints(fPart, selection)) { - target.toggleLineBreakpoints(fPart, selection); + target.toggleLineBreakpoints(fPart, selection); } else if (target.canToggleWatchpoints(fPart, selection)) { target.toggleWatchpoints(fPart, selection); } else if (target.canToggleMethodBreakpoints(fPart, selection)) { @@ -193,34 +193,34 @@ public class ToggleBreakpointAction extends Action implements IUpdate { public void update() { IDocument document= getDocument(); if (document != null) { - int line = fRulerInfo.getLineOfLastMouseButtonActivity(); - if (line > -1) { - try { - ITextSelection selection = getTextSelection(document, line); - - IToggleBreakpointsTarget adapter = - ToggleBreakpointsTargetManager.getDefault().getToggleBreakpointsTarget(fPart, selection); - if (adapter == null) { - setEnabled(false); - return; - } - if (adapter instanceof IToggleBreakpointsTargetExtension) { - IToggleBreakpointsTargetExtension extension = (IToggleBreakpointsTargetExtension) adapter; - if (extension.canToggleBreakpoints(fPart, selection)) { - setEnabled(true); - return; - } - } - if (adapter.canToggleLineBreakpoints(fPart, selection) || - adapter.canToggleWatchpoints(fPart, selection) || - adapter.canToggleMethodBreakpoints(fPart, selection)) - { - setEnabled(true); - return; - } - } catch (BadLocationException e) { - reportException(e); - } + int line = fRulerInfo.getLineOfLastMouseButtonActivity(); + if (line > -1) { + try { + ITextSelection selection = getTextSelection(document, line); + + IToggleBreakpointsTarget adapter = + ToggleBreakpointsTargetManager.getDefault().getToggleBreakpointsTarget(fPart, selection); + if (adapter == null) { + setEnabled(false); + return; + } + if (adapter instanceof IToggleBreakpointsTargetExtension) { + IToggleBreakpointsTargetExtension extension = (IToggleBreakpointsTargetExtension) adapter; + if (extension.canToggleBreakpoints(fPart, selection)) { + setEnabled(true); + return; + } + } + if (adapter.canToggleLineBreakpoints(fPart, selection) || + adapter.canToggleWatchpoints(fPart, selection) || + adapter.canToggleMethodBreakpoints(fPart, selection)) + { + setEnabled(true); + return; + } + } catch (BadLocationException e) { + reportException(e); + } } } setEnabled(false); diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/console/FileLink.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/console/FileLink.java index e10d4e05f..89cb28b9e 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/console/FileLink.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/console/FileLink.java @@ -101,7 +101,7 @@ public class FileLink implements IConsoleHyperlink { } IDocument document = provider.getDocument(input); try { - IRegion region= document.getLineInformation(fFileLineNumber - 1); + IRegion region= document.getLineInformation(fFileLineNumber - 1); fFileOffset = region.getOffset(); fFileLength = region.getLength(); } catch (BadLocationException e) { @@ -144,14 +144,14 @@ public class FileLink implements IConsoleHyperlink { return fEditorId; } - private IContentType getFileContentType() { - try { - IContentDescription description= fFile.getContentDescription(); - if (description != null) { - return description.getContentType(); - } - } catch (CoreException e) { - } - return null; - } + private IContentType getFileContentType() { + try { + IContentDescription description= fFile.getContentDescription(); + if (description != null) { + return description.getContentType(); + } + } catch (CoreException e) { + } + return null; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/console/IConsole.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/console/IConsole.java index c76a9abe1..62bdd0696 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/console/IConsole.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/console/IConsole.java @@ -123,25 +123,25 @@ public interface IConsole { /** * Adds the given pattern match listener to this console. The listener will - * be connected and receive match notifications. + * be connected and receive match notifications. * @param matchListener the listener to add * @since 3.1 */ void addPatternMatchListener(IPatternMatchListener matchListener); - /** - * Removes the given pattern match listener from this console. The listener will be - * disconnected and will no longer receive match notifications. - * @param matchListener the pattern match listener to remove. - * @since 3.1 - */ + /** + * Removes the given pattern match listener from this console. The listener will be + * disconnected and will no longer receive match notifications. + * @param matchListener the pattern match listener to remove. + * @since 3.1 + */ void removePatternMatchListener(IPatternMatchListener matchListener); /** * Returns the stream associated with the specified stream identifier. - * @param streamIdentifier Uniquely identifies the required stream - * @return The stream or <code>null</code> if none found with matching streamIdentifier - * @since 3.1 - */ + * @param streamIdentifier Uniquely identifies the required stream + * @return The stream or <code>null</code> if none found with matching streamIdentifier + * @since 3.1 + */ IOConsoleOutputStream getStream(String streamIdentifier); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/contexts/DebugContextEvent.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/contexts/DebugContextEvent.java index a2cbe6256..b2f11f58f 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/contexts/DebugContextEvent.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/contexts/DebugContextEvent.java @@ -54,8 +54,8 @@ public class DebugContextEvent extends EventObject { public static final int STATE = 0x10; /** - * Generated serial version UID for this class. - */ + * Generated serial version UID for this class. + */ private static final long serialVersionUID = 3395172504615255524L; /** diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/contexts/IDebugContextProvider.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/contexts/IDebugContextProvider.java index 7abbc387b..b22b31fed 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/contexts/IDebugContextProvider.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/contexts/IDebugContextProvider.java @@ -51,25 +51,25 @@ public interface IDebugContextProvider { */ IWorkbenchPart getPart(); - /** - * Registers the given listener for debug context events. - * - * @param listener event listener - */ + /** + * Registers the given listener for debug context events. + * + * @param listener event listener + */ void addDebugContextListener(IDebugContextListener listener); - /** - * Unregisters the given listener for debug context events. - * - * @param listener event listener - */ + /** + * Unregisters the given listener for debug context events. + * + * @param listener event listener + */ void removeDebugContextListener(IDebugContextListener listener); - /** - * Returns the currently active context, possibly empty or <code>null</code>. - * - * @return active context, possibly empty or <code>null</code>. - */ + /** + * Returns the currently active context, possibly empty or <code>null</code>. + * + * @return active context, possibly empty or <code>null</code>. + */ ISelection getActiveContext(); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/contexts/ISuspendTrigger.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/contexts/ISuspendTrigger.java index 761d477ed..b131209fb 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/contexts/ISuspendTrigger.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/contexts/ISuspendTrigger.java @@ -44,18 +44,18 @@ package org.eclipse.debug.ui.contexts; */ public interface ISuspendTrigger { - /** - * Registers the given listener for suspend notifications. - * - * @param listener suspend listener - */ + /** + * Registers the given listener for suspend notifications. + * + * @param listener suspend listener + */ void addSuspendTriggerListener(ISuspendTriggerListener listener); - /** - * Unregisters the given listener for suspend notifications. - * - * @param listener suspend listener - */ + /** + * Unregisters the given listener for suspend notifications. + * + * @param listener suspend listener + */ void removeSuspendTriggerListener(ISuspendTriggerListener listener); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/AbstractTextRendering.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/AbstractTextRendering.java index f62d75687..b4f3ef348 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/AbstractTextRendering.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/AbstractTextRendering.java @@ -50,8 +50,8 @@ abstract public class AbstractTextRendering extends AbstractTableRendering { * * @param renderingId memory rendering type identifier * @param codePage the name of a supported - * {@link java.nio.charset.Charset </code>charset<code>}, for - * example <code>CP1252</code> + * {@link java.nio.charset.Charset </code>charset<code>}, for + * example <code>CP1252</code> */ public AbstractTextRendering(String renderingId, String codePage) { @@ -66,7 +66,7 @@ abstract public class AbstractTextRendering extends AbstractTableRendering { * * @param codePage the name of a supported * {@link java.nio.charset.Charset </code>charset<code>}, for - * example <code>CP1252</code> + * example <code>CP1252</code> */ public void setCodePage(String codePage) { diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/IMemoryBlockTablePresentation.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/IMemoryBlockTablePresentation.java index 72e641812..0681f3170 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/IMemoryBlockTablePresentation.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/IMemoryBlockTablePresentation.java @@ -39,26 +39,26 @@ public interface IMemoryBlockTablePresentation extends IDebugModelPresentation { /** - * Returns a collection of labels to head columns in a <code>AbstractTableRendering</code> - * rendering, or <code>null</code> if default labels should be used. - * + * Returns a collection of labels to head columns in a <code>AbstractTableRendering</code> + * rendering, or <code>null</code> if default labels should be used. + * * @param blk memory block * @param bytesPerLine the number if bytes to be displayed * @param numColumns the number of columns the bytes are divided into * @return a collection of labels to head columns in a <code>AbstractTableRendering</code> - * rendering, or <code>null</code> if default labels should be used + * rendering, or <code>null</code> if default labels should be used */ String[] getColumnLabels(IMemoryBlock blk, int bytesPerLine, int numColumns); /** - * Renders and returns a label for a row starting at the given address within the given - * memory block, or <code>null</code> if default rendering should be used. - * + * Renders and returns a label for a row starting at the given address within the given + * memory block, or <code>null</code> if default rendering should be used. + * * @param blk memory block * @param address an address in the memory block * @return a label for a row starting at the given address within the given - * memory block, or <code>null</code> if default rendering should be used + * memory block, or <code>null</code> if default rendering should be used */ String getRowLabel(IMemoryBlock blk, BigInteger address); diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/IMemoryRendering.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/IMemoryRendering.java index 67785cc9f..f1fcdaee7 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/IMemoryRendering.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/IMemoryRendering.java @@ -75,111 +75,111 @@ import org.eclipse.swt.widgets.Control; */ public interface IMemoryRendering extends IAdaptable{ - /** - * Initializes this rendering to be hosted in the given container, displaying - * the given memory block. This method is called before this rendering's control - * has been created. - * - * @param container container hosting this rendering - * @param block the memory block to render - */ - void init(IMemoryRenderingContainer container, IMemoryBlock block); - - /** - * Creates the top level control for this rendering under the given parent composite. - * This method is called after this rendering's <code>init</code> method has been - * called. - * <p> - * Implementors are responsible for ensuring that - * the created control can be accessed via <code>getControl</code> - * </p> - * @param parent the parent composite - * @return the new top level control - */ - Control createControl(Composite parent); - - /** - * Returns the top level control for this rendering. - * <p> - * May return <code>null</code> if the control - * has not been created yet. - * </p> - * @return the top level control or <code>null</code> - */ - Control getControl(); - - /** - * Disposes this rendering. - */ - void dispose(); - - /** - * Notification this rendering has become the active rendering. Only one - * rendering can be active at once. Generally, the active rendering is - * visible and has focus. - */ - void activated(); - - /** - * Notification this rendering is no longer the active rendering. - */ - void deactivated(); - - /** - * Notification this rendering has become visible in its container. - * Note that a rendering does not have to be active to be visible. - */ - void becomesVisible(); - - /** - * Notification this rendering has become hidden in its container. - */ - void becomesHidden(); - - /** - * Returns the memory block displayed by this rendering. - * - * @return the memory block displayed by this rendering - */ - IMemoryBlock getMemoryBlock(); - - /** - * Returns the identifier associated with this rendering's type. - * - * @return the identifier associated with this rendering's type - * @see IMemoryRenderingType - */ - String getRenderingId(); - - /** - * Adds a listener for property changes to this rendering. - * Has no effect if an identical listener is already registered. - * - * @param listener a property change listener - */ - void addPropertyChangeListener(IPropertyChangeListener listener); - - /** - * Removes the given property change listener from this rendering. - * Has no effect if the identical listener is not registered. - * - * @param listener a property change listener - */ - void removePropertyChangeListener(IPropertyChangeListener listener); - - /** - * Returns an image for this rendering. Clients should not dispose - * this image. This rendering will dispose the image if required when - * this rendering is disposed. - * - * @return an image for this rendering - */ - Image getImage(); - - /** - * Returns a label for this rendering. - * - * @return a label for this rendering - */ - String getLabel(); + /** + * Initializes this rendering to be hosted in the given container, displaying + * the given memory block. This method is called before this rendering's control + * has been created. + * + * @param container container hosting this rendering + * @param block the memory block to render + */ + void init(IMemoryRenderingContainer container, IMemoryBlock block); + + /** + * Creates the top level control for this rendering under the given parent composite. + * This method is called after this rendering's <code>init</code> method has been + * called. + * <p> + * Implementors are responsible for ensuring that + * the created control can be accessed via <code>getControl</code> + * </p> + * @param parent the parent composite + * @return the new top level control + */ + Control createControl(Composite parent); + + /** + * Returns the top level control for this rendering. + * <p> + * May return <code>null</code> if the control + * has not been created yet. + * </p> + * @return the top level control or <code>null</code> + */ + Control getControl(); + + /** + * Disposes this rendering. + */ + void dispose(); + + /** + * Notification this rendering has become the active rendering. Only one + * rendering can be active at once. Generally, the active rendering is + * visible and has focus. + */ + void activated(); + + /** + * Notification this rendering is no longer the active rendering. + */ + void deactivated(); + + /** + * Notification this rendering has become visible in its container. + * Note that a rendering does not have to be active to be visible. + */ + void becomesVisible(); + + /** + * Notification this rendering has become hidden in its container. + */ + void becomesHidden(); + + /** + * Returns the memory block displayed by this rendering. + * + * @return the memory block displayed by this rendering + */ + IMemoryBlock getMemoryBlock(); + + /** + * Returns the identifier associated with this rendering's type. + * + * @return the identifier associated with this rendering's type + * @see IMemoryRenderingType + */ + String getRenderingId(); + + /** + * Adds a listener for property changes to this rendering. + * Has no effect if an identical listener is already registered. + * + * @param listener a property change listener + */ + void addPropertyChangeListener(IPropertyChangeListener listener); + + /** + * Removes the given property change listener from this rendering. + * Has no effect if the identical listener is not registered. + * + * @param listener a property change listener + */ + void removePropertyChangeListener(IPropertyChangeListener listener); + + /** + * Returns an image for this rendering. Clients should not dispose + * this image. This rendering will dispose the image if required when + * this rendering is disposed. + * + * @return an image for this rendering + */ + Image getImage(); + + /** + * Returns a label for this rendering. + * + * @return a label for this rendering + */ + String getLabel(); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/IMemoryRenderingBindingsProvider.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/IMemoryRenderingBindingsProvider.java index 9c7db76ed..352de6478 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/IMemoryRenderingBindingsProvider.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/IMemoryRenderingBindingsProvider.java @@ -33,50 +33,50 @@ import org.eclipse.debug.core.model.IMemoryBlock; public interface IMemoryRenderingBindingsProvider { /** - * Returns all rendering types bound to the given memory block. - * This includes default and primary rendering types. - * - * @param block memory block + * Returns all rendering types bound to the given memory block. + * This includes default and primary rendering types. + * + * @param block memory block * @return all rendering types bound to the given memory block */ IMemoryRenderingType[] getRenderingTypes(IMemoryBlock block); - /** - * Returns default rendering types bound to the given memory block, - * possibly empty. - * - * @param block memory block - * @return default rendering types bound to the given memory block, - * possibly empty - */ - IMemoryRenderingType[] getDefaultRenderingTypes(IMemoryBlock block); + /** + * Returns default rendering types bound to the given memory block, + * possibly empty. + * + * @param block memory block + * @return default rendering types bound to the given memory block, + * possibly empty + */ + IMemoryRenderingType[] getDefaultRenderingTypes(IMemoryBlock block); - /** - * Returns the primary rendering type bound to the given memory block, - * or <code>null</code> if none. - * - * @param block memory block - * @return the primary rendering type bound to the given memory block, - * or <code>null</code> if none - */ - IMemoryRenderingType getPrimaryRenderingType(IMemoryBlock block); + /** + * Returns the primary rendering type bound to the given memory block, + * or <code>null</code> if none. + * + * @param block memory block + * @return the primary rendering type bound to the given memory block, + * or <code>null</code> if none + */ + IMemoryRenderingType getPrimaryRenderingType(IMemoryBlock block); - /** - * Adds a listener to this binding provider. The listener will be notified - * when rendering bindings change. - * <p> - * Has no effect if an identical listener is already registered. - * </p> - * @param listener listener to add - */ + /** + * Adds a listener to this binding provider. The listener will be notified + * when rendering bindings change. + * <p> + * Has no effect if an identical listener is already registered. + * </p> + * @param listener listener to add + */ void addListener(IMemoryRenderingBindingsListener listener); - /** - * Removes a listener from this binding provider. - * <p> - * Has no effect if an identical listener is not already registered. - * </p> - * @param listener listener to remove - */ + /** + * Removes a listener from this binding provider. + * <p> + * Has no effect if an identical listener is not already registered. + * </p> + * @param listener listener to remove + */ void removeListener(IMemoryRenderingBindingsListener listener); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/IMemoryRenderingManager.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/IMemoryRenderingManager.java index 299b3e080..a61b11e57 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/IMemoryRenderingManager.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/IMemoryRenderingManager.java @@ -25,26 +25,26 @@ package org.eclipse.debug.ui.memory; public interface IMemoryRenderingManager extends IMemoryRenderingBindingsProvider { - /** - * Returns all contributed memory rendering types. - * - * @return all contributed memory rendering types - */ - IMemoryRenderingType[] getRenderingTypes(); - - /** - * Returns the memory rendering type with the given identifier, or - * <code>null</code> if none. The memory rendering manager will - * search through rendering types that are contributed via explicit - * rendering bindings. (i.e. rendering types contributed via the - * memoryRenderings extension point). This method will not return - * rendering types that are contributed by a memory binding provider. - * - * @param id memory rendering type identifier - * @return the memory rendering type with the given identifier, or - * <code>null</code> if none - */ - IMemoryRenderingType getRenderingType(String id); + /** + * Returns all contributed memory rendering types. + * + * @return all contributed memory rendering types + */ + IMemoryRenderingType[] getRenderingTypes(); + + /** + * Returns the memory rendering type with the given identifier, or + * <code>null</code> if none. The memory rendering manager will + * search through rendering types that are contributed via explicit + * rendering bindings. (i.e. rendering types contributed via the + * memoryRenderings extension point). This method will not return + * rendering types that are contributed by a memory binding provider. + * + * @param id memory rendering type identifier + * @return the memory rendering type with the given identifier, or + * <code>null</code> if none + */ + IMemoryRenderingType getRenderingType(String id); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/IMemoryRenderingSite.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/IMemoryRenderingSite.java index eb27bd922..ce88e7e22 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/IMemoryRenderingSite.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/IMemoryRenderingSite.java @@ -30,37 +30,37 @@ import org.eclipse.ui.IWorkbenchPartSite; */ public interface IMemoryRenderingSite { - /** - * Returns the workbench part site hosting memory renderings for this rendering site. - * - * @return the view site hosting memory renderings for this rendering site - */ - IWorkbenchPartSite getSite(); + /** + * Returns the workbench part site hosting memory renderings for this rendering site. + * + * @return the view site hosting memory renderings for this rendering site + */ + IWorkbenchPartSite getSite(); - /** - * Returns the syncrhonization service for this rendering site - * or <code>null</code> if none. - * - * @return the syncrhonization service for this rendering site or <code>null</code> - */ - IMemoryRenderingSynchronizationService getSynchronizationService(); + /** + * Returns the syncrhonization service for this rendering site + * or <code>null</code> if none. + * + * @return the syncrhonization service for this rendering site or <code>null</code> + */ + IMemoryRenderingSynchronizationService getSynchronizationService(); - /** - * Returns all the memory rendering containers within this rendering site. - * - * @return all the memory rendering containers within this rendering site - */ - IMemoryRenderingContainer[] getMemoryRenderingContainers(); + /** + * Returns all the memory rendering containers within this rendering site. + * + * @return all the memory rendering containers within this rendering site + */ + IMemoryRenderingContainer[] getMemoryRenderingContainers(); - /** - * Returns the rendering container with the given id or <code>null</code> - * if none. - * - * @param id identifier of the container being requested - * @return the rendering container with the given id or <code>null</code> - * if none - */ - IMemoryRenderingContainer getContainer(String id); + /** + * Returns the rendering container with the given id or <code>null</code> + * if none. + * + * @param id identifier of the container being requested + * @return the rendering container with the given id or <code>null</code> + * if none + */ + IMemoryRenderingContainer getContainer(String id); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/IMemoryRenderingSite2.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/IMemoryRenderingSite2.java index 2fefb2d28..e39527813 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/IMemoryRenderingSite2.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/IMemoryRenderingSite2.java @@ -21,12 +21,12 @@ package org.eclipse.debug.ui.memory; */ public interface IMemoryRenderingSite2 extends IMemoryRenderingSite { - /** - * Sets whether the identified container should be visible. - * - * @param id identifier of the container to be affected - * @param visible whether the given container should be made visible - */ - void setContainerVisible(String id, boolean visible); + /** + * Sets whether the identified container should be visible. + * + * @param id identifier of the container to be affected + * @param visible whether the given container should be made visible + */ + void setContainerVisible(String id, boolean visible); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/IMemoryRenderingSynchronizationService.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/IMemoryRenderingSynchronizationService.java index dbcd2e94b..71a261b50 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/IMemoryRenderingSynchronizationService.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/IMemoryRenderingSynchronizationService.java @@ -26,50 +26,50 @@ import org.eclipse.jface.util.IPropertyChangeListener; */ public interface IMemoryRenderingSynchronizationService { - /** - * Adds a listener for property changes notification for the specified properties. - * Specifying <code>null</code> indicates that the listener is interested in all - * properties. If an identical listener is already registered, the properties - * it is registered to listen for are updated. - * - * @param listener a property change listener - * @param properties properties the listener is interested in, or <code>null</code> - * to indicate all properties. - */ - void addPropertyChangeListener(IPropertyChangeListener listener, String[] properties); + /** + * Adds a listener for property changes notification for the specified properties. + * Specifying <code>null</code> indicates that the listener is interested in all + * properties. If an identical listener is already registered, the properties + * it is registered to listen for are updated. + * + * @param listener a property change listener + * @param properties properties the listener is interested in, or <code>null</code> + * to indicate all properties. + */ + void addPropertyChangeListener(IPropertyChangeListener listener, String[] properties); - /** - * Removes the given listener for property change notification. - * Has no effect if the identical listener is not registered. - * - * @param listener a property change listener - */ - void removePropertyChangeListener(IPropertyChangeListener listener); + /** + * Removes the given listener for property change notification. + * Has no effect if the identical listener is not registered. + * + * @param listener a property change listener + */ + void removePropertyChangeListener(IPropertyChangeListener listener); - /** - * Returns the current value of the specified property for the given memory block, or - * <code>null</code> if none. - * - * @param block memory block for which a property is requested - * @param property the name of the property - * @return the property value or <code>null</code> - */ - Object getProperty(IMemoryBlock block, String property); + /** + * Returns the current value of the specified property for the given memory block, or + * <code>null</code> if none. + * + * @param block memory block for which a property is requested + * @param property the name of the property + * @return the property value or <code>null</code> + */ + Object getProperty(IMemoryBlock block, String property); - /** - * Sets the rendering currently providing sychronization information for - * this synchronization service, or <code>null</code> if none. - * - * @param rendering active rendering providing synchronization information or - * <code>null</code> - */ - void setSynchronizationProvider(IMemoryRendering rendering); + /** + * Sets the rendering currently providing sychronization information for + * this synchronization service, or <code>null</code> if none. + * + * @param rendering active rendering providing synchronization information or + * <code>null</code> + */ + void setSynchronizationProvider(IMemoryRendering rendering); - /** + /** * Returns the rendering currently providing synchronization information for * this synchronization service, or <code>null</code> if none. * * @return rendering providing synchronization information or <code>null</code> */ - IMemoryRendering getSynchronizationProvider(); + IMemoryRendering getSynchronizationProvider(); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/IMemoryRenderingType.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/IMemoryRenderingType.java index 6dbae4892..76400be14 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/IMemoryRenderingType.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/IMemoryRenderingType.java @@ -30,28 +30,28 @@ import org.eclipse.core.runtime.CoreException; */ public interface IMemoryRenderingType { - /** - * Returns a label for this type of memory rendering. - * - * @return a label for this type of memory rendering - */ - String getLabel(); + /** + * Returns a label for this type of memory rendering. + * + * @return a label for this type of memory rendering + */ + String getLabel(); - /** - * Returns the unique identifier for this rendering type. - * - * @return the unique identifier for this rendering type - */ - String getId(); + /** + * Returns the unique identifier for this rendering type. + * + * @return the unique identifier for this rendering type + */ + String getId(); - /** - * Creates and returns a new rendering of this type or <code>null</code> - * if none. - * - * @return a new rendering of this type - * @exception CoreException if an exception occurs creating - * the rendering - */ - IMemoryRendering createRendering() throws CoreException; + /** + * Creates and returns a new rendering of this type or <code>null</code> + * if none. + * + * @return a new rendering of this type + * @exception CoreException if an exception occurs creating + * the rendering + */ + IMemoryRendering createRendering() throws CoreException; } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/IMemoryRenderingTypeDelegate.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/IMemoryRenderingTypeDelegate.java index f38d6f720..210c73856 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/IMemoryRenderingTypeDelegate.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/memory/IMemoryRenderingTypeDelegate.java @@ -26,14 +26,14 @@ import org.eclipse.core.runtime.CoreException; */ public interface IMemoryRenderingTypeDelegate { - /** - * Creates and returns a rendering of the specified type, or <code>null</code> - * if none. - * - * @param id unique identifier of a memory rendering type - * @return a new rendering of the given type or <code>null</code> - * @exception CoreException if unable to create the rendering - */ - IMemoryRendering createRendering(String id) throws CoreException; + /** + * Creates and returns a rendering of the specified type, or <code>null</code> + * if none. + * + * @param id unique identifier of a memory rendering type + * @return a new rendering of the given type or <code>null</code> + * @exception CoreException if unable to create the rendering + */ + IMemoryRendering createRendering(String id) throws CoreException; } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/sourcelookup/CommonSourceNotFoundEditor.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/sourcelookup/CommonSourceNotFoundEditor.java index 85a9531af..e718db992 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/sourcelookup/CommonSourceNotFoundEditor.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/sourcelookup/CommonSourceNotFoundEditor.java @@ -111,9 +111,9 @@ public class CommonSourceNotFoundEditor extends EditorPart implements IReusableE parent.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_WHITE)); fText = new Text(parent,SWT.READ_ONLY|SWT.WRAP); - data = new GridData(GridData.FILL_HORIZONTAL); - data.grabExcessHorizontalSpace = true; - fText.setLayoutData(data); + data = new GridData(GridData.FILL_HORIZONTAL); + data.grabExcessHorizontalSpace = true; + fText.setLayoutData(data); fText.setForeground(JFaceColors.getErrorText(fText.getDisplay())); fText.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_WHITE)); if (getEditorInput() != null) { diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/sourcelookup/ISourceLookupResult.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/sourcelookup/ISourceLookupResult.java index 046fa85dd..992004297 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/sourcelookup/ISourceLookupResult.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/sourcelookup/ISourceLookupResult.java @@ -28,37 +28,37 @@ import org.eclipse.ui.IEditorInput; */ public interface ISourceLookupResult { - /** - * Returns the artifact for which source lookup was performed, - * such as a stack frame. - * - * @return the artifact for which source lookup was performed - */ - Object getArtifact(); + /** + * Returns the artifact for which source lookup was performed, + * such as a stack frame. + * + * @return the artifact for which source lookup was performed + */ + Object getArtifact(); - /** - * Returns the source element resolved during source lookup, - * or <code>null</code> if a source element was not resolved. - * - * @return resolved source element or <code>null</code> if unknown - */ - Object getSourceElement(); + /** + * Returns the source element resolved during source lookup, + * or <code>null</code> if a source element was not resolved. + * + * @return resolved source element or <code>null</code> if unknown + */ + Object getSourceElement(); - /** - * Returns the identifier of an editor used to display this result, - * or <code>null</code> if unknown. - * - * @return the identifier of an editor used to display this result, - * or <code>null</code> if unknown - */ - String getEditorId(); + /** + * Returns the identifier of an editor used to display this result, + * or <code>null</code> if unknown. + * + * @return the identifier of an editor used to display this result, + * or <code>null</code> if unknown + */ + String getEditorId(); - /** - * Returns the editor input used to display result, - * or <code>null</code> if unknown. - * - * @return the editor input used to display result, - * or <code>null</code> if unknown - */ - IEditorInput getEditorInput(); + /** + * Returns the editor input used to display result, + * or <code>null</code> if unknown. + * + * @return the editor input used to display result, + * or <code>null</code> if unknown + */ + IEditorInput getEditorInput(); } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/sourcelookup/SourceLookupDialog.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/sourcelookup/SourceLookupDialog.java index 9cdac51ce..92440853b 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/sourcelookup/SourceLookupDialog.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/sourcelookup/SourceLookupDialog.java @@ -61,7 +61,7 @@ public class SourceLookupDialog extends TitleAreaDialog { */ public SourceLookupDialog(Shell shell, ISourceLookupDirector director) { super(shell); - setShellStyle(getShellStyle() | SWT.RESIZE); + setShellStyle(getShellStyle() | SWT.RESIZE); fDirector = director; } @@ -126,13 +126,13 @@ public class SourceLookupDialog extends TitleAreaDialog { return super.close(); } - @Override + @Override protected IDialogSettings getDialogBoundsSettings() { - IDialogSettings settings = DebugUIPlugin.getDefault().getDialogSettings(); - IDialogSettings section = settings.getSection(getClass().getName()); - if (section == null) { - section = settings.addNewSection(getClass().getName()); - } - return section; - } + IDialogSettings settings = DebugUIPlugin.getDefault().getDialogSettings(); + IDialogSettings section = settings.getSection(getClass().getName()); + if (section == null) { + section = settings.addNewSection(getClass().getName()); + } + return section; + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/sourcelookup/SourceLookupTab.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/sourcelookup/SourceLookupTab.java index 6fdc0f877..bea3d6ca1 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/sourcelookup/SourceLookupTab.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/sourcelookup/SourceLookupTab.java @@ -97,7 +97,7 @@ public class SourceLookupTab extends AbstractLaunchConfigurationTab { @Override public String getId() { - return "org.eclipse.debug.ui.sourceLookupTab"; //$NON-NLS-1$ + return "org.eclipse.debug.ui.sourceLookupTab"; //$NON-NLS-1$ } @Override |