Project

General

Profile

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

    
11
import org.eclipse.nebula.widgets.compositetable.CompositeTable;
12
import org.eclipse.nebula.widgets.compositetable.IRowContentProvider;
13
import org.eclipse.swt.SWT;
14
import org.eclipse.swt.custom.ScrolledComposite;
15
import org.eclipse.swt.dnd.DND;
16
import org.eclipse.swt.dnd.DropTarget;
17
import org.eclipse.swt.dnd.Transfer;
18
import org.eclipse.swt.events.DisposeEvent;
19
import org.eclipse.swt.events.DisposeListener;
20
import org.eclipse.swt.layout.GridData;
21
import org.eclipse.swt.layout.GridLayout;
22
import org.eclipse.swt.widgets.Composite;
23
import org.eclipse.swt.widgets.Control;
24
import org.eclipse.swt.widgets.Display;
25
import org.eclipse.swt.widgets.Label;
26
import org.eclipse.ui.forms.widgets.FormToolkit;
27

    
28
import eu.etaxonomy.taxeditor.dnd.CdmAuthorityTableDropTargetListener;
29
import eu.etaxonomy.taxeditor.dnd.transfer.TaxonNodeTransfer;
30
import org.eclipse.swt.widgets.Button;
31
import org.eclipse.swt.events.SelectionAdapter;
32
import org.eclipse.swt.events.SelectionEvent;
33

    
34
/**
35
 * Composite class which consists of a {@link CompositeTable} built specifically
36
 * for creating / editing CDM Authority objects
37
 * 
38
 * @author cmathew
39
 * @created Mar 28, 2013
40
 *
41
 */
42

    
43
public class CdmAuthorityComposite extends Composite {
44

    
45
	private final FormToolkit toolkit = new FormToolkit(Display.getCurrent());
46
	private CompositeTable table;
47
	
48
	private int numOfInitialCdmAuthorities;
49
	
50
	private CdmAuthorityCompositeViewer viewer;
51
	
52
	private CdmAuthorityTableHeader cdmAuthorityTableHeader;
53
	
54

    
55
	/**
56
	 * Creates the composite using the given parent, style and associated viewer.
57
	 * 
58
	 * @param parent composite to use as parent of this composite
59
	 * @param style 
60
	 * @param viewer viewer representing the model
61
	 */
62
	public CdmAuthorityComposite(Composite parent, int style, final CdmAuthorityCompositeViewer viewer) {
63
		super(parent, SWT.NONE);
64
		addDisposeListener(new DisposeListener() {
65
			public void widgetDisposed(DisposeEvent e) {
66
				toolkit.dispose();
67
			}
68
		});
69
		
70
		this.viewer = viewer;
71
				
72
		numOfInitialCdmAuthorities = viewer.getCdmAuthorities().size();
73
		setLayout(new GridLayout(2, false));
74
		setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
75
	    Transfer[] transfers = new Transfer[] { TaxonNodeTransfer.getInstance() };	   
76
	    
77
	    toolkit.adapt(this);
78
		toolkit.paintBordersFor(this);
79
		new Label(this, SWT.NONE);
80
		
81
		final Button cbShowUUIDheader = new Button(this, SWT.CHECK);
82
		cbShowUUIDheader.addSelectionListener(new SelectionAdapter() {
83
			@Override
84
			public void widgetSelected(SelectionEvent e) {
85
				boolean showUUIDHeader = ((Button)e.getSource()).getSelection();
86
				((CdmAuthorityTableHeader)table.getHeader()).setUuidHeaderVisible(showUUIDHeader);
87
				refresh();
88
			}
89
		});
90
		toolkit.adapt(cbShowUUIDheader, true, true);
91
		cbShowUUIDheader.setText("show uuid");
92
		table = new CompositeTable(this, SWT.NONE);
93
		GridData gd_table = new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1);
94
		gd_table.widthHint = 650;
95
		gd_table.heightHint = 400;
96
		table.setLayoutData(gd_table);
97
		cdmAuthorityTableHeader = new CdmAuthorityTableHeader(table, SWT.NULL);
98
		CdmAuthorityRow cdmAuthorityRow = new CdmAuthorityRow(table, SWT.NULL);
99
		
100
		table.setRunTime(true);
101
		table.setNumRowsInCollection(numOfInitialCdmAuthorities);
102
		table.setLinesVisible(true); 
103
		
104
		DropTarget dropTarget = new DropTarget(table, DND.DROP_MOVE);
105
		dropTarget.setTransfer(transfers);
106
		dropTarget.addDropListener(new CdmAuthorityTableDropTargetListener(viewer));
107
		
108
		
109
		table.addRowContentProvider(new IRowContentProvider() {
110
			public void refresh(CompositeTable sender, int currentObjectOffset, Control rowControl) {
111
				CdmAuthorityRow row = (CdmAuthorityRow) rowControl;		
112
				// add the newly created authority objects first and then the already existing ones.
113
				// this ensures the newly 'dragged' in objects always remain at the top
114
				if(currentObjectOffset < viewer.getNewCdmAuthorities().size()) {			
115
					row.setRowCdmAuthority(viewer, 
116
							viewer.getNewCdmAuthorities().get(currentObjectOffset), 
117
							true,
118
							cbShowUUIDheader.getSelection());
119
				} else {
120
					row.setRowCdmAuthority(viewer, 
121
							viewer.getCdmAuthorities().get(currentObjectOffset - viewer.getNewCdmAuthorities().size()), 
122
							false,
123
							cbShowUUIDheader.getSelection());
124
				}										
125
			}
126
		});
127
	}	
128

    
129
	/**
130
	 * Refreshes the table with underlying data
131
	 */
132
	public void refresh() {			
133
		numOfInitialCdmAuthorities = viewer.getNewCdmAuthorities().size() + viewer.getCdmAuthorities().size();			    	    
134
	    table.setNumRowsInCollection(numOfInitialCdmAuthorities);	  
135
	    table.refreshAllRows();
136
	}
137
}
(2-2/5)