2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
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.
9 package eu
.etaxonomy
.taxeditor
.ui
.group
.grantedauthority
;
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
.dnd
.DND
;
15 import org
.eclipse
.swt
.dnd
.DropTarget
;
16 import org
.eclipse
.swt
.dnd
.Transfer
;
17 import org
.eclipse
.swt
.events
.DisposeEvent
;
18 import org
.eclipse
.swt
.events
.DisposeListener
;
19 import org
.eclipse
.swt
.layout
.GridData
;
20 import org
.eclipse
.swt
.layout
.GridLayout
;
21 import org
.eclipse
.swt
.widgets
.Composite
;
22 import org
.eclipse
.swt
.widgets
.Control
;
23 import org
.eclipse
.swt
.widgets
.Display
;
24 import org
.eclipse
.swt
.widgets
.Label
;
25 import org
.eclipse
.ui
.forms
.widgets
.FormToolkit
;
27 import eu
.etaxonomy
.taxeditor
.dnd
.CdmAuthorityTableDropTargetListener
;
28 import eu
.etaxonomy
.taxeditor
.dnd
.transfer
.TaxonNodeTransfer
;
31 * Composite class which consists of a {@link CompositeTable} built specifically
32 * for creating / editing CDM Authority objects
35 * @created Mar 28, 2013
39 public class CdmAuthorityComposite
extends Composite
{
41 private final FormToolkit toolkit
= new FormToolkit(Display
.getCurrent());
42 private CompositeTable table
;
44 private int numOfInitialCdmAuthorities
;
46 private Label lblDragEntityInto
;
48 private CdmAuthorityCompositeViewer viewer
;
52 * Creates the composite using the given parent, style and associated viewer.
54 * @param parent composite to use as parent of this composite
56 * @param viewer viewer representing the model
58 public CdmAuthorityComposite(Composite parent
, int style
, final CdmAuthorityCompositeViewer viewer
) {
60 addDisposeListener(new DisposeListener() {
61 public void widgetDisposed(DisposeEvent e
) {
68 numOfInitialCdmAuthorities
= viewer
.getCdmAuthorities().size();
69 setLayout(new GridLayout(1, false));
70 Transfer
[] transfers
= new Transfer
[] { TaxonNodeTransfer
.getInstance() };
73 toolkit
.paintBordersFor(this);
75 lblDragEntityInto
= new Label(this, SWT
.NONE
);
76 toolkit
.adapt(lblDragEntityInto
, true, true);
77 lblDragEntityInto
.setText("Drag Entity into table to add ...");
78 table
= new CompositeTable(this, SWT
.BORDER
);
79 GridData gd_table
= new GridData(SWT
.LEFT
, SWT
.CENTER
, false, false, 1, 1);
80 gd_table
.widthHint
= 750;
81 gd_table
.heightHint
= 400;
82 table
.setLayoutData(gd_table
);
83 new CdmAuthorityTableHeader(table
, SWT
.NULL
);
84 CdmAuthorityRow cdmAuthorityRow
= new CdmAuthorityRow(table
, SWT
.NULL
);
86 table
.setRunTime(true);
87 table
.setNumRowsInCollection(numOfInitialCdmAuthorities
);
88 table
.setLinesVisible(true);
90 DropTarget dropTarget
= new DropTarget(table
, DND
.DROP_MOVE
);
91 dropTarget
.setTransfer(transfers
);
92 dropTarget
.addDropListener(new CdmAuthorityTableDropTargetListener(viewer
));
95 table
.addRowContentProvider(new IRowContentProvider() {
96 public void refresh(CompositeTable sender
, int currentObjectOffset
, Control rowControl
) {
97 CdmAuthorityRow row
= (CdmAuthorityRow
) rowControl
;
98 // add the newly created authority objects first and then the already existing ones.
99 // this ensures the newly 'dragged' in objects always remain at the top
100 if(currentObjectOffset
< viewer
.getNewCdmAuthorities().size()) {
101 row
.setRowCdmAuthority(viewer
,
102 viewer
.getNewCdmAuthorities().get(currentObjectOffset
),
105 row
.setRowCdmAuthority(viewer
,
106 viewer
.getCdmAuthorities().get(currentObjectOffset
- viewer
.getNewCdmAuthorities().size()),
114 * Refreshes the table with underlying data
116 public void refresh() {
117 numOfInitialCdmAuthorities
= viewer
.getNewCdmAuthorities().size() + viewer
.getCdmAuthorities().size();
118 table
.setNumRowsInCollection(numOfInitialCdmAuthorities
);
119 table
.refreshAllRows();