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: AbstractConfigurableView.java
13   * Created: 2005-11-29
14   * Author: apohllo
15   * $Id: AbstractConfigurableView.java 2312 2009-01-12 22:53:55Z tmilos $
16   */
17  
18  package pl.edu.agh.cast.ui;
19  
20  import org.apache.log4j.Logger;
21  import org.eclipse.ui.IMemento;
22  import org.eclipse.ui.IViewSite;
23  import org.eclipse.ui.PartInitException;
24  import org.eclipse.ui.part.ViewPart;
25  
26  import pl.edu.agh.cast.Activator;
27  
28  /**
29   * This abstract class is to be implemented by classes which want to store their state across system start-stop cycles.
30   * This class implements the basic persistency scheme using IMemento object, which is maintained by the Eclipse
31   * Platform.
32   *
33   * @author AGH CAST Team
34   */
35  public abstract class AbstractConfigurableView extends ViewPart {
36  
37  	/**
38  	 * The configuration of the view stored in IMemento object.
39  	 */
40  	protected IMemento configuration = null;
41  
42  	/**
43  	 * Logger
44  	 */
45  	protected static Logger log = Activator.getLogger();
46  
47  	/**
48  	 * This init method restores the configuration of this view using the IMemento object.
49  	 *
50  	 * {@inheritDoc}
51  	 *
52  	 * @see org.eclipse.ui.part.ViewPart#init(org.eclipse.ui.IViewSite, org.eclipse.ui.IMemento)
53  	 */
54  	@Override
55  	public void init(IViewSite site, IMemento memento) throws PartInitException {
56  		super.init(site, memento);
57  		// log.debug("init "+memento);
58  		if (memento != null) {
59  			this.configuration = memento;
60  		}
61  	}
62  
63  	/**
64  	 * Save the configuration of the view in IMemento object.
65  	 *
66  	 * @param memento
67  	 *            The IMemento object, which is used to store the configuration of the view.
68  	 */
69  	@Override
70  	public void saveState(IMemento memento) {
71  		if (memento != null && configuration != null) {
72  			memento.putMemento(configuration);
73  		}
74  	}
75  
76  	/**
77  	 * Returns the configuration of the view.
78  	 *
79  	 * @return IMemento The configuration of the view.
80  	 */
81  	public IMemento getConfiguration() {
82  		return configuration;
83  	}
84  
85  	/**
86  	 * Create actions which are used in this view.
87  	 *
88  	 */
89  	protected abstract void makeActions();
90  
91  	/**
92  	 * Add actions and action groups to context menu.
93  	 *
94  	 */
95  	protected abstract void hookContextMenu();
96  
97  	/**
98  	 * Provide action for double click.
99  	 *
100 	 */
101 	protected abstract void hookDoubleClickAction();
102 
103 	/**
104 	 * Fill action bars with view specific actions.
105 	 *
106 	 */
107 	protected abstract void contributeToActionBars();
108 
109 	/**
110 	 * Activate the view, e.g. register listeners, etc.
111 	 *
112 	 */
113 	protected abstract void activate();
114 
115 }