KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > eclipse > debug > internal > ui > views > registers > RegistersViewerState


1 /**********************************************************************
2  * Copyright (c) 2004, 2005 QNX Software Systems and others.
3  * All rights reserved. This program and the accompanying materials
4  * are made available under the terms of the Eclipse Public License v1.0
5  * which accompanies this distribution, and is available at
6  * http://www.eclipse.org/legal/epl-v10.html
7  *
8  * Contributors:
9  * QNX Software Systems - Initial API and implementation
10 ***********************************************************************/

11 package org.eclipse.debug.internal.ui.views.registers;
12
13 import org.eclipse.core.runtime.IPath;
14 import org.eclipse.core.runtime.Path;
15 import org.eclipse.debug.core.DebugException;
16 import org.eclipse.debug.core.model.IRegisterGroup;
17 import org.eclipse.debug.core.model.IVariable;
18 import org.eclipse.debug.internal.ui.views.AbstractViewerState;
19 import org.eclipse.debug.internal.ui.views.RemoteTreeViewer;
20 import org.eclipse.jface.viewers.ITreeContentProvider;
21 import org.eclipse.jface.viewers.TreeViewer;
22 import org.eclipse.swt.widgets.TreeItem;
23
24 /**
25  * Memento of the expanded and selected items in a registers viewer.
26  *
27  */

28 public class RegistersViewerState extends AbstractViewerState {
29
30     public RegistersViewerState( TreeViewer viewer ) {
31         super( viewer );
32     }
33     
34     /* (non-Javadoc)
35      * @see org.eclipse.cdt.debug.internal.ui.views.AbstractViewerState#encodeElement(org.eclipse.swt.widgets.TreeItem)
36      */

37     public IPath encodeElement( TreeItem item ) throws DebugException {
38         Object JavaDoc obj = item.getData();
39         String JavaDoc name = ( obj instanceof IRegisterGroup ) ?
40                         ((IRegisterGroup)obj).getName() : ((IVariable)obj).getName();
41         IPath path = new Path( name );
42         TreeItem parent = item.getParentItem();
43         while( parent != null ) {
44             obj = parent.getData();
45             name = ( obj instanceof IRegisterGroup ) ?
46                      ((IRegisterGroup)obj).getName() : ((IVariable)obj).getName();
47             path = new Path( name ).append( path );
48             parent = parent.getParentItem();
49         }
50         return path;
51     }
52
53     /* (non-Javadoc)
54      * @see org.eclipse.cdt.debug.internal.ui.views.AbstractViewerState#decodePath(org.eclipse.core.runtime.IPath, org.eclipse.jface.viewers.TreeViewer)
55      */

56     public Object JavaDoc decodePath( IPath path, TreeViewer viewer ) throws DebugException {
57         ITreeContentProvider contentProvider = (ITreeContentProvider)viewer.getContentProvider();
58         String JavaDoc[] names = path.segments();
59         Object JavaDoc parent = viewer.getInput();
60         Object JavaDoc element = null;
61         for( int i = 0; i < names.length; i++ ) {
62             element = null;
63             Object JavaDoc[] children = null;
64             if (viewer instanceof RemoteTreeViewer) {
65                 children = ((RemoteTreeViewer) viewer).getCurrentChildren(parent);
66             } else {
67                 children = contentProvider.getChildren(parent);
68             }
69             String JavaDoc name = names[i];
70             for( int j = 0; j < children.length; j++ ) {
71                 if ( children[j] instanceof IRegisterGroup ) {
72                     if ( name.equals( ((IRegisterGroup)children[j]).getName() ) ) {
73                         element = children[j];
74                         break;
75                     }
76                 }
77                 else if ( children[j] instanceof IVariable ) {
78                     if ( name.equals( ((IVariable)children[j]).getName() ) ) {
79                         element = children[j];
80                         break;
81                     }
82                 }
83             }
84             if ( element == null ) {
85                 return null;
86             }
87             parent = element;
88         }
89         return element;
90     }
91 }
92
Popular Tags