Project

General

Profile

Download (5.98 KB) Statistics
| Branch: | Tag: | Revision:
1
// $Id$
2
/**
3
 * Copyright (C) 2007 EDIT
4
 * European Distributed Institute of Taxonomy
5
 * http://www.e-taxonomy.eu
6
 *
7
 * The contents of this file are subject to the Mozilla Public License Version 1.1
8
 * See LICENSE.TXT at the top of this package for the full license terms.
9
 */
10

    
11
package eu.etaxonomy.taxeditor.view;
12

    
13
import java.util.Arrays;
14
import java.util.List;
15
import java.util.Map;
16

    
17
import org.eclipse.jface.viewers.ISelection;
18
import org.eclipse.jface.viewers.IStructuredSelection;
19
import org.eclipse.jface.viewers.StructuredSelection;
20
import org.eclipse.jface.viewers.Viewer;
21
import org.eclipse.swt.SWT;
22
import org.eclipse.swt.custom.SashForm;
23
import org.eclipse.swt.widgets.Composite;
24
import org.eclipse.swt.widgets.Label;
25
import org.eclipse.ui.ISelectionListener;
26
import org.eclipse.ui.ISelectionService;
27
import org.eclipse.ui.IWorkbenchPart;
28
import org.eclipse.ui.part.PageBook;
29
import org.eclipse.ui.part.ViewPart;
30

    
31
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
32
import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
33
import eu.etaxonomy.cdm.model.common.CdmBase;
34
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
35
import eu.etaxonomy.taxeditor.model.AbstractUtility;
36
import eu.etaxonomy.taxeditor.model.IDirtyMarkable;
37
import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
38
import eu.etaxonomy.taxeditor.session.ICdmEntitySession;
39
import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
40

    
41
/**
42
 * @author n.hoffmann
43
 * @created Jun 15, 2010
44
 * @version 1.0
45
 */
46
public abstract class AbstractCdmViewPart extends ViewPart implements ISelectionListener, IPostOperationEnabled, IConversationEnabled, ICdmEntitySessionEnabled, IDirtyMarkable{
47

    
48
    protected ISelectionService selectionService;
49

    
50
    public static IStructuredSelection EMPTY_SELECTION = new StructuredSelection();
51

    
52
    protected IWorkbenchPart part;
53

    
54
    private PageBook pageBook;
55

    
56
    private Label emptySelectionLabel;
57

    
58
    private Composite viewerComposite;
59

    
60
    /** {@inheritDoc} */
61
    @Override
62
    public void createPartControl(Composite parent) {
63
        selectionService = getSite().getWorkbenchWindow().getSelectionService();
64
        selectionService.addSelectionListener(this);
65

    
66
        pageBook = new PageBook(parent, SWT.NULL);
67
        //create viewerComposite
68
        viewerComposite = new SashForm(pageBook, SWT.HORIZONTAL);
69
        createViewer(viewerComposite);
70

    
71
        // Page 2: Nothing selected
72
        emptySelectionLabel = new Label(pageBook, SWT.TOP + SWT.LEFT + SWT.WRAP);
73

    
74
        setInitialSelection();
75
    }
76

    
77
    /**
78
     *
79
     */
80
    private void setInitialSelection() {
81
        selectionChanged(AbstractUtility.getActivePart(), getInitialSelection());
82
    }
83

    
84
    /**
85
     * <p>getInitialSelection</p>
86
     *
87
     * @return a {@link org.eclipse.jface.viewers.ISelection} object.
88
     */
89
    protected ISelection getInitialSelection() {
90
        return selectionService.getSelection();
91
    }
92

    
93
    /**
94
     * <p>showEmptyPage</p>
95
     */
96
    public void showEmptyPage(){
97
        pageBook.showPage(emptySelectionLabel);
98
    }
99

    
100
    /**
101
     * <p>showViewer</p>
102
     *
103
     * @param part a {@link org.eclipse.ui.IWorkbenchPart} object.
104
     * @param selection a {@link org.eclipse.jface.viewers.ISelection} object.
105
     */
106
    public void showViewer(IWorkbenchPart part, IStructuredSelection selection){
107
        this.part = part;
108

    
109
        Object element = selection.getFirstElement();
110

    
111
        getViewer().setInput(element);
112

    
113
        showViewer();
114
    }
115

    
116
    /**
117
     * <p>getViewer</p>
118
     *
119
     * @return a {@link org.eclipse.jface.viewers.Viewer} object.
120
     */
121
    public abstract Viewer getViewer();
122

    
123
    /**
124
     * <p>showViewer</p>
125
     */
126
    public void showViewer(){
127
        pageBook.showPage(viewerComposite);
128
    }
129

    
130
    public void setEnabled(boolean enabled){
131
        pageBook.setEnabled(enabled);
132
    }
133

    
134
    /** {@inheritDoc} */
135
    @Override
136
    public void setFocus() {
137
        if(getConversationHolder() != null){
138
            getConversationHolder().bind();
139
        }
140
        if(getCdmEntitySession() != null){
141
            getCdmEntitySession().bind();
142
        }
143
        getViewer().getControl().setFocus();
144
    }
145

    
146
    /**
147
     * <p>createViewer</p>
148
     *
149
     * @param parent a {@link org.eclipse.swt.widgets.Composite} object.
150
     */
151
    public abstract void createViewer(Composite parent);
152

    
153
    /** {@inheritDoc} */
154
    @Override
155
    public boolean postOperation(CdmBase objectAffectedByOperation) {
156
        changed(objectAffectedByOperation);
157
        return true;
158
    }
159

    
160
    /** {@inheritDoc} */
161
    @Override
162
    public abstract void changed(Object object);
163

    
164
    /**
165
     * <p>getConversationHolder</p>
166
     *
167
     * @return a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
168
     */
169
    @Override
170
    public ConversationHolder getConversationHolder() {
171
        if(part != null && part instanceof IConversationEnabled) {
172
            return ((IConversationEnabled) part).getConversationHolder();
173
        }
174

    
175
        return null;
176
    }
177

    
178
    @Override
179
    public ICdmEntitySession getCdmEntitySession() {
180
        if(part != null && part instanceof ICdmEntitySessionEnabled) {
181
            return ((ICdmEntitySessionEnabled) part).getCdmEntitySession();
182
        }
183
        return null;
184
    }
185

    
186
    @Override
187
    public  List<CdmBase> getRootEntities() {
188
        return Arrays.asList((CdmBase)getViewer().getInput());
189
    }
190

    
191
    /** {@inheritDoc} */
192
    @Override
193
    public void update(CdmDataChangeMap changeEvents) {
194

    
195
    }
196

    
197
    /** {@inheritDoc} */
198
    @Override
199
    public void dispose() {
200
        selectionService.removeSelectionListener(this);
201
        super.dispose();
202
    }
203

    
204
    /* (non-Javadoc)
205
     * @see eu.etaxonomy.taxeditor.model.IDirtyMarkableSelectionProvider#forceDirty()
206
     */
207
    @Override
208
    public void forceDirty() {
209
        changed(null);
210
    }
211

    
212

    
213
    /* (non-Javadoc)
214
     * @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled#getPropertyPathsMap()
215
     */
216
    @Override
217
    public Map<Object, List<String>> getPropertyPathsMap() {
218
        // TODO Auto-generated method stub
219
        return null;
220
    }
221

    
222
}
(4-4/9)