View Javadoc

1   /*
2    * This file is a part of CAST project.
3    * (c) Copyright 2007, AGH University of Science & Technology
4    * https://caribou.iisg.agh.edu.pl/trac/cast
5    *
6    * Licensed under the Eclipse Public License, Version 1.0 (the "License").
7    * You may not use this file except in compliance with the License.
8    * You may obtain a copy of the License at
9    * http://www.eclipse.org/legal/epl-v10.html
10   */
11  /*
12   * File: OutlineTreeView.java
13   * Created: 2007-00-00
14   * Author: fox, awos, skalkow
15   * $Id: OutlineTreeView.java 3266 2009-08-27 15:28:45Z tmilos $
16   */
17  
18  package pl.edu.agh.cast.ui.outline;
19  
20  import org.eclipse.jface.viewers.TreeViewer;
21  import org.eclipse.swt.widgets.Composite;
22  import org.eclipse.ui.IEditorPart;
23  import org.eclipse.ui.IPartListener;
24  import org.eclipse.ui.IWorkbenchPart;
25  
26  import pl.edu.agh.cast.backward.editor.AbstractEditor;
27  import pl.edu.agh.cast.backward.resources.DiagramEditorInput;
28  import pl.edu.agh.cast.model.visual.backward.IDiagram;
29  import pl.edu.agh.cast.ui.AbstractTreeView;
30  
31  /**
32   * Diagram outline view.
33   *
34   * @author AGH CAST Team
35   */
36  public class OutlineTreeView extends AbstractTreeView implements IPartListener {
37  
38  	/**
39  	 * Constructor.
40  	 */
41  	public OutlineTreeView() {
42  	}
43  
44  	/**
45  	 * View Id.
46  	 */
47  	public static final String ID = "pl.edu.agh.cast.view.outline"; //$NON-NLS-1$
48  
49  	private OutlineContentProvider provider;
50  
51  	private Object currentDiagram;
52  
53  	/**
54  	 * {@inheritDoc}
55  	 *
56  	 * @see pl.edu.agh.cast.ui.AbstractConfigurableView#activate()
57  	 */
58  	@Override
59  	protected void activate() {
60  		TreeViewer viewer = getViewer();
61  		provider = new OutlineContentProvider(viewer, this);
62  
63  		viewer.setContentProvider(provider);
64  		viewer.setInput(null);
65  
66  		getSite().getPage().addPartListener(this);
67  	}
68  
69  	/**
70  	 * {@inheritDoc}
71  	 *
72  	 * @see pl.edu.agh.cast.ui.AbstractTreeView#dispose()
73  	 */
74  	@Override
75  	public void dispose() {
76  		super.dispose();
77  		getSite().getPage().removePartListener(this);
78  	}
79  
80  	@Override
81  	protected void contributeToActionBars() {
82  		// TODO Auto-generated method stub
83  
84  	}
85  
86  	@Override
87  	protected void hookContextMenu() {
88  		// TODO Auto-generated method stub
89  
90  	}
91  
92  	@Override
93  	protected void hookDoubleClickAction() {
94  		// TODO Auto-generated method stub
95  
96  	}
97  
98  	@Override
99  	protected void makeActions() {
100 		// TODO Auto-generated method stub
101 
102 	}
103 
104 	@Override
105 	protected void createControl(Composite parent) {
106 		super.createControl(parent);
107 		TreeViewer viewer = getViewer();
108 		viewer.setLabelProvider(OutlineLabelProvider.getInstance());
109 		// TODO add sorter
110 		// viewer.setSorter();
111 	}
112 
113 	/**
114 	 * {@inheritDoc}
115 	 *
116 	 * @see org.eclipse.ui.IPartListener#partActivated(org.eclipse.ui.IWorkbenchPart)
117 	 */
118 	public void partActivated(IWorkbenchPart part) {
119 		updateActiveEditor();
120 	}
121 
122 	/**
123 	 * {@inheritDoc}
124 	 *
125 	 * @see org.eclipse.ui.IPartListener#partDeactivated(org.eclipse.ui.IWorkbenchPart)
126 	 */
127 	public void partDeactivated(IWorkbenchPart part) {
128 		updateActiveEditor();
129 	}
130 
131 	private void updateActiveEditor() {
132 		IEditorPart activeEditor = getSite().getPage().getActiveEditor();
133 		if (activeEditor instanceof AbstractEditor) {
134 			AbstractEditor editor = (AbstractEditor)activeEditor;
135 			DiagramEditorInput input = (DiagramEditorInput)editor
136 					.getEditorInput();
137 			IDiagram diagram = input.getDiagram();
138 			if (!diagram.equals(currentDiagram)) {
139 				setInput(diagram);
140 				currentDiagram = diagram;
141 			}
142 		} else {
143 			currentDiagram = null;
144 			setInput(null);
145 		}
146 	}
147 
148 	/**
149 	 * {@inheritDoc}
150 	 *
151 	 * @see org.eclipse.ui.IPartListener#partBroughtToTop(org.eclipse.ui.IWorkbenchPart)
152 	 */
153 	public void partBroughtToTop(IWorkbenchPart part) {
154 		updateActiveEditor();
155 	}
156 
157 	/**
158 	 * {@inheritDoc}
159 	 *
160 	 * @see org.eclipse.ui.IPartListener#partClosed(org.eclipse.ui.IWorkbenchPart)
161 	 */
162 	public void partClosed(IWorkbenchPart part) {
163 		updateActiveEditor();
164 	}
165 
166 	/**
167 	 * {@inheritDoc}
168 	 *
169 	 * @see org.eclipse.ui.IPartListener#partOpened(org.eclipse.ui.IWorkbenchPart)
170 	 */
171 	public void partOpened(IWorkbenchPart part) {
172 		updateActiveEditor();
173 	}
174 
175 }