Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-patch] Changed the viewer of the Shared Libraries view to TreeViewer

Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.ui/ChangeLog,v
retrieving revision 1.81
diff -u -r1.81 ChangeLog
--- ChangeLog 21 Jan 2003 21:40:47 -0000 1.81
+++ ChangeLog 21 Jan 2003 22:47:44 -0000
@@ -1,4 +1,10 @@
 2003-01-21 Mikhail Khodjaiants
+ Changed the viewer of the Shared Libraries view to TreeViewer.
+ * SharedLibrariesView.java
+ * SharedLibrariesViewContentProvider.java
+ * SharedLibrariesViewEventHandler.java
+
+2003-01-21 Mikhail Khodjaiants
 
  * src/org/eclipse/cdt/debu/internal/ui/CDTDebugModelPresentation.java
  (getTargetText): Use Signal.
Index: src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesView.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesView.java,v
retrieving revision 1.3
diff -u -r1.3 SharedLibrariesView.java
--- src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesView.java 17 Jan 2003 21:08:11 -0000 1.3
+++ src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesView.java 21 Jan 2003 22:47:44 -0000
@@ -7,10 +7,11 @@
 
 import org.eclipse.cdt.debug.core.ICSharedLibraryManager;
 import org.eclipse.cdt.debug.internal.ui.ICDebugHelpContextIds;
+import org.eclipse.cdt.debug.internal.ui.views.AbstractDebugEventHandler;
+import org.eclipse.cdt.debug.internal.ui.views.AbstractDebugEventHandlerView;
 import org.eclipse.cdt.debug.internal.ui.views.IDebugExceptionHandler;
 import org.eclipse.debug.core.DebugException;
 import org.eclipse.debug.core.model.IDebugElement;
-import org.eclipse.debug.ui.AbstractDebugView;
 import org.eclipse.debug.ui.DebugUITools;
 import org.eclipse.debug.ui.IDebugModelPresentation;
 import org.eclipse.debug.ui.IDebugUIConstants;
@@ -21,7 +22,7 @@
 import org.eclipse.jface.util.PropertyChangeEvent;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TreeViewer;
 import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Composite;
@@ -32,61 +33,24 @@
 /**
  * Enter type comment.
  *
- * @since: Jan 16, 2003
+ * @since: Jan 21, 2003
  */
-public class SharedLibrariesView extends AbstractDebugView
+public class SharedLibrariesView extends AbstractDebugEventHandlerView
          implements ISelectionListener,
             IPropertyChangeListener,
             IDebugExceptionHandler
 {
  /**
-  * Event handler for this view
-  */
- private SharedLibrariesViewEventHandler fEventHandler;
-
- /**
   * The model presentation used as the label provider for the tree viewer.
   */
  private IDebugModelPresentation fModelPresentation;
 
- /**
-  * Sets the event handler for this view
-  *
-  * @param eventHandler event handler
-  */
- protected void setEventHandler( SharedLibrariesViewEventHandler eventHandler )
- {
-  fEventHandler = eventHandler;
- }
-
- /**
-  * Returns the event handler for this view
-  *
-  * @return The event handler for this view
-  */
- protected SharedLibrariesViewEventHandler getEventHandler()
- {
-  return fEventHandler;
- }
-
- /**
-  * @see IWorkbenchPart#dispose()
-  */
- public void dispose()
- {
-  super.dispose();
-  if ( getEventHandler() != null )
-  {
-   getEventHandler().dispose();
-  }
- }
-
  /* (non-Javadoc)
   * @see org.eclipse.debug.ui.AbstractDebugView#createViewer(Composite)
   */
  protected Viewer createViewer( Composite parent )
  {
-  TableViewer viewer = new TableViewer( parent, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL );
+  TreeViewer viewer = new TreeViewer( parent, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL );
   viewer.setContentProvider( new SharedLibrariesViewContentProvider() );
   viewer.setLabelProvider( getModelPresentation() );
 
@@ -200,7 +164,7 @@
   * @param viewer the viewer associated with this view
   * @return an event handler
   */
- protected SharedLibrariesViewEventHandler createEventHandler( Viewer viewer )
+ protected AbstractDebugEventHandler createEventHandler( Viewer viewer )
  {
   return new SharedLibrariesViewEventHandler( this );
  } 
Index: src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesViewContentProvider.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesViewContentProvider.java,v
retrieving revision 1.1
diff -u -r1.1 SharedLibrariesViewContentProvider.java
--- src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesViewContentProvider.java 17 Jan 2003 00:15:12 -0000 1.1
+++ src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesViewContentProvider.java 21 Jan 2003 22:47:44 -0000
@@ -5,27 +5,102 @@
  */
 package org.eclipse.cdt.debug.internal.ui.views.sharedlibs;
 
+import java.util.HashMap;
+
 import org.eclipse.cdt.debug.core.ICSharedLibraryManager;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.cdt.debug.internal.ui.views.IDebugExceptionHandler;
+import org.eclipse.jface.viewers.ITreeContentProvider;
 import org.eclipse.jface.viewers.Viewer;
 
 /**
  * Enter type comment.
  *
- * @since: Jan 16, 2003
+ * @since: Jan 21, 2003
  */
-public class SharedLibrariesViewContentProvider implements IStructuredContentProvider
+public class SharedLibrariesViewContentProvider implements ITreeContentProvider
 {
+ /**
+  * A table that maps children to their parent element
+  * such that this content provider can walk back up the
+  * parent chain (since values do not know their
+  * parent).
+  * Map of <code>IVariable</code> (child) -> <code>IVariable</code> (parent).
+  */
+ private HashMap fParentCache;
+
+ /**
+  * Handler for exceptions as content is retrieved
+  */
+ private IDebugExceptionHandler fExceptionHandler = null;
+
+
+ /**
+  * Constructor for SharedLibrariesViewContentProvider.
+  */
+ public SharedLibrariesViewContentProvider()
+ {
+  fParentCache = new HashMap( 10 );
+ }
+
  /* (non-Javadoc)
-  * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(Object)
+  * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(Object)
+  */
+ public Object[] getChildren( Object parent )
+ {
+  Object[] children = null;
+  if ( parent != null && parent instanceof ICSharedLibraryManager )
+  {
+   children = ((ICSharedLibraryManager)parent).getSharedLibraries();
+  }
+  if ( children != null )
+  {
+   cache( parent, children );
+   return children;
+  }
+  return new Object[0];
+ }
+
+ /**
+  * Caches the given elememts as children of the given
+  * parent.
+  *
+  * @param parent parent element
+  * @param children children elements
+  */
+ protected void cache( Object parent, Object[] children )
+ {
+  for ( int i = 0; i < children.length; i++ )
+  {
+   fParentCache.put( children[i], parent );
+  }
+ }
+
+ /* (non-Javadoc)
+  * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(Object)
   */
- public Object[] getElements( Object parent )
+ public Object getParent( Object element )
+ {
+  return fParentCache.get( element );
+ }
+
+ /* (non-Javadoc)
+  * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(Object)
+  */
+ public boolean hasChildren( Object parent )
  {
   if ( parent != null && parent instanceof ICSharedLibraryManager )
   {
-   return ((ICSharedLibraryManager)parent).getSharedLibraries();
+   return ( ((ICSharedLibraryManager)parent).getSharedLibraries().length > 0 );
   }
-  return null;
+  return false;
+ }
+
+ /* (non-Javadoc)
+  * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(Object)
+  */
+ public Object[] getElements( Object inputElement )
+ {
+  return getChildren( inputElement );
  }
 
  /* (non-Javadoc)
@@ -33,6 +108,8 @@
   */
  public void dispose()
  {
+  fParentCache = null;
+  setExceptionHandler( null );
  }
 
  /* (non-Javadoc)
@@ -40,5 +117,50 @@
   */
  public void inputChanged( Viewer viewer, Object oldInput, Object newInput )
  {
+  clearCache();
  }
+
+ protected void clearCache()
+ {
+  if ( fParentCache != null )
+  {
+   fParentCache.clear();
+  }
+ }

+ /**
+  * Remove the cached parent for the given children
+  *
+  * @param children for which to remove cached parents
+  */
+ public void removeCache( Object[] children )
+ {
+  if ( fParentCache != null )
+  {
+   for ( int i = 0; i < children.length; i++ )
+   {
+    fParentCache.remove( children[i] );
+   }
+  }
+ }
+
+ /**
+  * Sets an exception handler for this content provider.
+  *
+  * @param handler debug exception handler or <code>null</code>
+  */
+ protected void setExceptionHandler( IDebugExceptionHandler handler )
+ {
+  fExceptionHandler = handler;
+ }

+ /**
+  * Returns the exception handler for this content provider.
+  *
+  * @return debug exception handler or <code>null</code>
+  */
+ protected IDebugExceptionHandler getExceptionHandler()
+ {
+  return fExceptionHandler;
+ } 
 }
Index: src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesViewEventHandler.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesViewEventHandler.java,v
retrieving revision 1.3
diff -u -r1.3 SharedLibrariesViewEventHandler.java
--- src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesViewEventHandler.java 17 Jan 2003 20:50:56 -0000 1.3
+++ src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesViewEventHandler.java 21 Jan 2003 22:47:44 -0000
@@ -6,56 +6,25 @@
 package org.eclipse.cdt.debug.internal.ui.views.sharedlibs;
 
 import org.eclipse.cdt.debug.core.model.ICSharedLibrary;
+import org.eclipse.cdt.debug.internal.ui.views.AbstractDebugEventHandler;
 import org.eclipse.debug.core.DebugEvent;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.IDebugEventSetListener;
 import org.eclipse.debug.core.model.IDebugTarget;
 import org.eclipse.debug.ui.AbstractDebugView;
-import org.eclipse.jface.viewers.TableViewer;
 
 /**
  * Enter type comment.
  *
- * @since: Jan 16, 2003
+ * @since: Jan 21, 2003
  */
-public class SharedLibrariesViewEventHandler implements IDebugEventSetListener
+public class SharedLibrariesViewEventHandler extends AbstractDebugEventHandler
 {
  /**
-  * This event handler's view
-  */
- private AbstractDebugView fView;
-
- /**
   * Constructor for SharedLibrariesViewEventHandler.
   * @param view
   */
  public SharedLibrariesViewEventHandler( AbstractDebugView view )
  {
-  setView( view );
-  DebugPlugin.getDefault().addDebugEventListener( this );
- }
-
- /**
-  * @see IDebugEventSetListener#handleDebugEvents(DebugEvent[])
-  */
- public void handleDebugEvents( final DebugEvent[] events )
- {
-  if ( !isAvailable() )
-  {
-   return;
-  }
-  Runnable r = new Runnable()
-  {
-   public void run()
-   {
-    if ( isAvailable() )
-    {
-     doHandleDebugEvents( events );
-    }
-   }
-  };
-
-  getView().asyncExec( r );
+  super( view );
  }
 
  /* (non-Javadoc)
@@ -80,81 +49,5 @@
      break;
    }
   }
- }
-
- /**
-  * Refresh the given element in the viewer - must be called in UI thread.
-  */
- protected void refresh( Object element )
- {
-  if ( isAvailable() )
-  {
-   getView().showViewer();
-   getTableViewer().refresh( element );
-  }
- }
-
- /**
-  * Refresh the viewer - must be called in UI thread.
-  */
- public void refresh()
- {
-  if ( isAvailable() )
-  {
-   getView().showViewer();
-   getTableViewer().refresh();
-  }
- }
-
- /**
-  * De-registers this event handler from the debug model.
-  */
- public void dispose()
- {
-  DebugPlugin plugin = DebugPlugin.getDefault();
-  plugin.removeDebugEventListener( this );
- }
-
- /**
-  * Returns the view this event handler is
-  * updating.
-  *
-  * @return debug view
-  */
- protected AbstractDebugView getView()
- {
-  return fView;
- }
-
- /**
-  * Sets the view this event handler is updating.
-  *
-  * @param view debug view
-  */
- private void setView( AbstractDebugView view )
- {
-  fView = view;
- }
-
- /**
-  * Returns the viewer this event handler is updating.
-  *
-  * @return viewer
-  */
- protected TableViewer getTableViewer()
- {
-  return (TableViewer)getView().getViewer();
- }
-
- /**
-  * Returns whether this event handler's viewer is
-  * currently available.
-  *
-  * @return whether this event handler's viewer is
-  * currently available
-  */
- protected boolean isAvailable()
- {
-  return getView().isAvailable();
  }
 }

Back to the top