Project

General

Profile

Download (5.12 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

    
10
package eu.etaxonomy.taxeditor.ui.dialog.selection;
11

    
12
import java.util.ArrayList;
13
import java.util.List;
14
import java.util.UUID;
15

    
16
import org.eclipse.core.runtime.IStatus;
17
import org.eclipse.jface.dialogs.InputDialog;
18
import org.eclipse.jface.wizard.WizardDialog;
19
import org.eclipse.swt.SWT;
20
import org.eclipse.swt.widgets.Composite;
21
import org.eclipse.swt.widgets.Control;
22
import org.eclipse.swt.widgets.Event;
23
import org.eclipse.swt.widgets.Link;
24
import org.eclipse.swt.widgets.Listener;
25
import org.eclipse.swt.widgets.Shell;
26

    
27
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
28
import eu.etaxonomy.cdm.api.service.IFeatureTreeService;
29
import eu.etaxonomy.cdm.model.description.FeatureTree;
30
import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
31
import eu.etaxonomy.taxeditor.featuretree.FeatureTreeEditorWizard;
32
import eu.etaxonomy.taxeditor.newWizard.AbstractNewEntityWizard;
33
import eu.etaxonomy.taxeditor.store.CdmStore;
34

    
35
/**
36
 * <p>FilteredFeatureTreeSelectionDialog class.</p>
37
 *
38
 * @author n.hoffmann
39
 * @created Sep 17, 2010
40
 * @version 1.0
41
 */
42
public class FeatureTreeSelectionDialog extends
43
		AbstractFilteredCdmResourceSelectionDialog<FeatureTree> {
44

    
45
	/**
46
	 * Creates a filtered selection dialog to select a named area.
47
	 *
48
	 * @param shell
49
	 * 				The shell for displaying this widget
50
	 * @param conversation a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
51
	 * @param featureTree a {@link eu.etaxonomy.cdm.model.description.FeatureTree} object.
52
	 * @return a {@link eu.etaxonomy.cdm.model.description.FeatureTree} object.
53
	 */
54
	public static FeatureTree select(Shell shell, ConversationHolder conversation, FeatureTree featureTree) {
55
		FeatureTreeSelectionDialog dialog = new FeatureTreeSelectionDialog(shell, conversation,
56
				"Choose a feature tree", false, featureTree);
57
		return getSelectionFromDialog(dialog);
58
	}
59

    
60
	/**
61
	 * <p>Constructor for FilteredFeatureTreeSelectionDialog.</p>
62
	 *
63
	 * @param shell a {@link org.eclipse.swt.widgets.Shell} object.
64
	 * @param conversation a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
65
	 * @param title a {@link java.lang.String} object.
66
	 * @param multi a boolean.
67
	 * @param cdmObject a {@link eu.etaxonomy.cdm.model.description.FeatureTree} object.
68
	 */
69
	protected FeatureTreeSelectionDialog(Shell shell,
70
			ConversationHolder conversation, String title, boolean multi,
71
			FeatureTree cdmObject) {
72
		super(shell, conversation, title, multi, FeatureTreeSelectionDialog.class.getCanonicalName(), cdmObject);
73
	}
74

    
75
	/* (non-Javadoc)
76
	 * @see eu.etaxonomy.taxeditor.dialogs.filteredSelection.AbstractFilteredCdmResourceSelectionDialog#getPersistentObject(java.util.UUID)
77
	 */
78
	/** {@inheritDoc} */
79
	@Override
80
	protected FeatureTree getPersistentObject(UUID uuid) {
81
		return CdmStore.getService(IFeatureTreeService.class).load(uuid);
82
	}
83

    
84
	/* (non-Javadoc)
85
	 * @see eu.etaxonomy.taxeditor.dialogs.filteredSelection.AbstractFilteredCdmResourceSelectionDialog#initModel()
86
	 */
87
	/** {@inheritDoc} */
88
	@Override
89
	protected void initModel() {
90
		List<FeatureTree> featureTrees = CdmStore.getService(IFeatureTreeService.class).list(FeatureTree.class, null, null, null, null);
91

    
92
		if(model == null){
93
			model = new ArrayList<UuidAndTitleCache<FeatureTree>>();
94
		}
95
		model.clear();
96
		for(FeatureTree featureTree : featureTrees){
97
			UuidAndTitleCache<FeatureTree> element = new UuidAndTitleCache<FeatureTree>(FeatureTree.class, featureTree.getUuid(),featureTree.getId(), featureTree.getTitleCache());
98
			model.add(element);
99
		}
100
	}
101

    
102
	/* (non-Javadoc)
103
	* @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#createExtendedContentArea(org.eclipse.swt.widgets.Composite)
104
	*/
105
	/** {@inheritDoc} */
106
	@Override
107
	protected Control createExtendedContentArea(Composite parent) {
108
		Link link = new Link(parent, SWT.NONE);
109
		link.setText(getNewWizardLinkText());
110
		link.addListener (SWT.Selection, new Listener () {
111
			@Override
112
            public void handleEvent(Event event) {
113

    
114
			    InputDialog input = new InputDialog(getShell(), "New feature tree", "Enter label for new feature tree", null, null);
115
				int status = input.open();
116
				if (status == IStatus.OK) {
117
				    String label = input.getValue();
118
				    if(label!=null){
119
				        FeatureTree featureTree = FeatureTree.NewInstance();
120
				        featureTree.setTitleCache(label, false);
121
				        CdmStore.getService(IFeatureTreeService.class).save(featureTree);
122
			            UuidAndTitleCache<FeatureTree> uuidAndTitleCache = new UuidAndTitleCache<FeatureTree>(FeatureTree.class, featureTree.getUuid(),featureTree.getId(), featureTree.getTitleCache());
123
			            model.add(uuidAndTitleCache);
124
				    }
125
				}
126
			}
127
		});
128
		return link;
129
	}
130

    
131
	/** {@inheritDoc} */
132
	@Override
133
	protected String getNewWizardLinkText() {
134
		return String.format("Create a new <a>%1s</a>" , "Feature tree ");
135
	}
136

    
137

    
138
	/** {@inheritDoc} */
139
	@Override
140
	protected AbstractNewEntityWizard getNewEntityWizard(String parameter) {
141
		return null;
142
	}
143
}
(10-10/35)