~ubuntu-branches/debian/sid/eclipse-cdt/sid

« back to all changes in this revision

Viewing changes to debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/disassembly/viewer/DocumentLabelProvider.java

  • Committer: Package Import Robot
  • Author(s): Jakub Adam
  • Date: 2011-10-06 21:15:04 UTC
  • mfrom: (1.1.4)
  • Revision ID: package-import@ubuntu.com-20111006211504-8dutmljjih0zikfv
Tags: 8.0.1-1
* New upstream release.
* Split the JNI packages into a separate architecture dependent
  package and made eclipse-cdt architecture independent.
* Install JNI libraries into multiarch aware location
* Bumped Standards-Version to 3.9.2.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*******************************************************************************
 
2
 * Copyright (c) 2008 ARM Limited 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
 * ARM Limited - Initial API and implementation
 
10
 *******************************************************************************/
 
11
 
 
12
package org.eclipse.cdt.debug.internal.ui.disassembly.viewer;
 
13
 
 
14
import java.util.Properties;
 
15
 
 
16
import org.eclipse.cdt.debug.ui.disassembly.IDocumentElementLabelProvider;
 
17
import org.eclipse.cdt.debug.ui.disassembly.IDocumentPresentation;
 
18
import org.eclipse.core.runtime.IAdaptable;
 
19
import org.eclipse.core.runtime.IProgressMonitor;
 
20
import org.eclipse.core.runtime.IStatus;
 
21
import org.eclipse.core.runtime.Status;
 
22
import org.eclipse.jface.viewers.BaseLabelProvider;
 
23
import org.eclipse.ui.progress.UIJob;
 
24
 
 
25
public class DocumentLabelProvider extends BaseLabelProvider {
 
26
 
 
27
    private VirtualDocument fDocument;
 
28
 
 
29
    public DocumentLabelProvider( VirtualDocument document ) {
 
30
        super();
 
31
        fDocument = document;
 
32
    }
 
33
//
 
34
//    public void update( Object parent, Object[] elements, IDocumentPresentation context ) {
 
35
//        IDocumentElementLabelProvider labelProvider = getLabelAdapter( parent );
 
36
//        if ( labelProvider != null ) {
 
37
//            Object root = getDocument().getContentProvider().getRoot();
 
38
//            Object base = getDocument().getContentProvider().getBase();
 
39
//            DocumentLabelUpdate[] updates = new DocumentLabelUpdate[elements.length];
 
40
//            for ( int i = 0; i < elements.length; ++i ) {
 
41
//                updates[i] = new DocumentLabelUpdate( this, context, root, base, elements[i], i );
 
42
//            }
 
43
//            labelProvider.update( updates );
 
44
//        }
 
45
//    }
 
46
 
 
47
    public void update( Object parent, Object element, int index, IDocumentPresentation context ) {
 
48
        IDocumentElementLabelProvider labelProvider = getLabelAdapter( element );
 
49
        if ( labelProvider != null ) {
 
50
            Object root = getDocument().getContentProvider().getRoot();
 
51
            Object base = getDocument().getContentProvider().getBase();
 
52
            labelProvider.update( new DocumentLabelUpdate[] { new DocumentLabelUpdate( this, context, root, base, element, index ) } );
 
53
        }
 
54
    }
 
55
 
 
56
    public void completed( DocumentLabelUpdate update ) {
 
57
        if ( update.isCanceled() )
 
58
            return;
 
59
        
 
60
        UIJob uiJob = null;
 
61
        final int index = update.getIndex();
 
62
        if ( update.getElement() != null ) {
 
63
            final Object element = update.getElement();
 
64
            final Properties labels = update.getLabels();
 
65
 
 
66
            uiJob = new UIJob( "Replace line" ) { //$NON-NLS-1$
 
67
                
 
68
                /* (non-Javadoc)
 
69
                 * @see org.eclipse.ui.progress.UIJob#runInUIThread(org.eclipse.core.runtime.IProgressMonitor)
 
70
                 */
 
71
                @Override
 
72
                public IStatus runInUIThread( IProgressMonitor monitor ) {
 
73
                    getDocument().labelDone( element, index, labels );
 
74
                    return Status.OK_STATUS;
 
75
                }
 
76
            };
 
77
        }
 
78
        else {
 
79
            uiJob = new UIJob( "Remove line" ) { //$NON-NLS-1$
 
80
                
 
81
                /* (non-Javadoc)
 
82
                 * @see org.eclipse.ui.progress.UIJob#runInUIThread(org.eclipse.core.runtime.IProgressMonitor)
 
83
                 */
 
84
                @Override
 
85
                public IStatus runInUIThread( IProgressMonitor monitor ) {
 
86
                    getDocument().removeLine( index );
 
87
                    return Status.OK_STATUS;
 
88
                }
 
89
            };
 
90
        }
 
91
        uiJob.setSystem( true );
 
92
        uiJob.schedule();
 
93
    }
 
94
 
 
95
    protected VirtualDocument getDocument() {
 
96
        return fDocument;
 
97
    }
 
98
 
 
99
    protected IDocumentElementLabelProvider getLabelAdapter( Object element ) {
 
100
        IDocumentElementLabelProvider adapter = null;
 
101
        if ( element instanceof IDocumentElementLabelProvider ) {
 
102
            adapter = (IDocumentElementLabelProvider)element;
 
103
        }
 
104
        else if ( element instanceof IAdaptable ) {
 
105
            IAdaptable adaptable = (IAdaptable)element;
 
106
            adapter = (IDocumentElementLabelProvider)adaptable.getAdapter( IDocumentElementLabelProvider.class );
 
107
        }
 
108
        return adapter;
 
109
    }
 
110
}