Project

General

Profile

« Previous | Next » 

Revision 4aca5046

Added by Patrick Plitzner almost 7 years ago

ref #6694 Remove wizard pages and plugin configurations

View differences:

eu.etaxonomy.taxeditor.printpublisher/src/main/java/eu/etaxonomy/taxeditor/printpublisher/wizard/SelectFeatureTreeWizardPage.java
1 1
/**
2 2
* Copyright (C) 2007 EDIT
3
* European Distributed Institute of Taxonomy 
3
* European Distributed Institute of Taxonomy
4 4
* http://www.e-taxonomy.eu
5
* 
5
*
6 6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7 7
* See LICENSE.TXT at the top of this package for the full license terms.
8 8
*/
......
13 13
import java.util.List;
14 14
import java.util.UUID;
15 15

  
16
import org.eclipse.core.runtime.IStatus;
17 16
import org.eclipse.jface.viewers.ISelectionChangedListener;
18 17
import org.eclipse.jface.viewers.IStructuredContentProvider;
19 18
import org.eclipse.jface.viewers.IStructuredSelection;
......
22 21
import org.eclipse.jface.viewers.SelectionChangedEvent;
23 22
import org.eclipse.jface.viewers.StructuredSelection;
24 23
import org.eclipse.jface.viewers.Viewer;
25
import org.eclipse.jface.wizard.WizardDialog;
26 24
import org.eclipse.swt.SWT;
27 25
import org.eclipse.swt.events.SelectionAdapter;
28 26
import org.eclipse.swt.events.SelectionEvent;
......
34 32

  
35 33
import eu.etaxonomy.cdm.print.IXMLEntityFactory;
36 34
import eu.etaxonomy.cdm.print.XMLHelper;
37
import eu.etaxonomy.taxeditor.featuretree.FeatureTreeEditorWizard;
38 35

  
39 36
/**
40 37
 * <p>SelectFeatureTreeWizardPage class.</p>
......
43 40
 * @created Aug 6, 2010
44 41
 * @version 1.0
45 42
 */
46
public class SelectFeatureTreeWizardPage extends AbstractPublishWizardPage 
43
public class SelectFeatureTreeWizardPage extends AbstractPublishWizardPage
47 44
	implements ISelectionChangedListener, IHasPersistableSettings{
48
	
45

  
49 46
	private static final String DIALOG_SETTING_FEATURE_TREE_UUID = "dialogSettingFeatureTreeUuid";
50 47
	private ListViewer viewer;
51 48

  
......
58 55
		super(pageName);
59 56
		setTitle("Select Feature Tree");
60 57
	}
61
	
58

  
62 59
	/* (non-Javadoc)
63 60
	 * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
64 61
	 */
......
66 63
	@Override
67 64
	public void createControl(Composite parent) {
68 65
		setPageComplete(false);
69
		
66

  
70 67
		Composite composite = new Composite(parent, SWT.NULL);
71 68
		composite.setLayout(new GridLayout());
72
		
69

  
73 70
		viewer = new ListViewer(composite);
74 71
		viewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
75 72
		viewer.setContentProvider(new FeatureTreeContentProvider());
76 73
		viewer.setLabelProvider(new FeatureTreeLabelProvider());
77
		
74

  
78 75
		viewer.addSelectionChangedListener(this);
79
				
76

  
80 77
		// offer feature tree editor when local
81 78
		if(getConfigurator().isLocal()){
82 79
			final Button button_openFeatureTree = new Button(composite, SWT.PUSH);
83 80
			button_openFeatureTree.setText("Open FeatureTree Editor");
84
			
81

  
85 82
			button_openFeatureTree.addSelectionListener(new SelectionAdapter() {
86 83
				@Override
87 84
				public void widgetSelected(SelectionEvent e) {
88
					FeatureTreeEditorWizard featureTreeEditorDialog = new FeatureTreeEditorWizard();
89
					WizardDialog dialog = new WizardDialog(getShell(), featureTreeEditorDialog);
90
					
91
					if(dialog.open() == IStatus.OK){
92
						refresh();
93
					}
85
				    //FIXME: this wizard page has been removed by implementing #6694
86
				    //If print publishing is used again the selection has to be re-implemented
87

  
88
//					FeatureTreeEditorWizard featureTreeEditorDialog = new FeatureTreeEditorWizard();
89
//					WizardDialog dialog = new WizardDialog(getShell(), featureTreeEditorDialog);
90
//
91
//					if(dialog.open() == IStatus.OK){
92
//						refresh();
93
//					}
94 94
				}
95 95
			});
96 96
		}
97
				
97

  
98 98
		// when using a local factory we can set the input right here
99 99
		if(getConfigurator() != null && getConfigurator().isLocal()){
100 100
			refresh();
101 101
		}
102
		
102

  
103 103
		loadSettings();
104
		
104

  
105 105
		setControl(composite);
106 106
	}
107 107

  
108 108
	@Override
109 109
	public void loadSettings() {
110
		String featureTreeUuidString = getDialogSettingValue(DIALOG_SETTING_FEATURE_TREE_UUID); 
111
		
110
		String featureTreeUuidString = getDialogSettingValue(DIALOG_SETTING_FEATURE_TREE_UUID);
111

  
112 112
		if(featureTreeUuidString != null){
113 113
			setSelectedFeatureTree(featureTreeUuidString);
114
			
114

  
115 115
		}
116 116
	}
117
	
117

  
118 118
	/** {@inheritDoc} */
119 119
	@Override
120 120
	public void selectionChanged(SelectionChangedEvent event) {
121 121
		IStructuredSelection selection = (IStructuredSelection) event.getSelection();
122
		
122

  
123 123
		if(selection.isEmpty()){
124 124
			return;
125 125
		}
126
		
126

  
127 127
		setPageComplete(true);
128
		
129
		
128

  
129

  
130 130
		Element featureTreeElement = (Element) selection.getFirstElement();
131
			
131

  
132 132
		UUID featureTreeUuid = XMLHelper.getUuid(featureTreeElement);
133
		
133

  
134 134
		setFeatureTree(featureTreeUuid.toString());
135 135
	}
136
	
136

  
137 137
	private void setSelectedFeatureTree(String featureTreeUuid){
138 138
		List<Element> input = (ArrayList<Element>) viewer.getInput();
139
		
139

  
140 140
		for(Element element : input){
141 141
			UUID uuid = XMLHelper.getUuid(element);
142 142
			if(uuid.toString().equals(featureTreeUuid)){
......
145 145
			}
146 146
		}
147 147
	}
148
	
148

  
149 149
	public void setFeatureTree(String featureTreeUuidString){
150 150
		putDialogSettingValue(DIALOG_SETTING_FEATURE_TREE_UUID, featureTreeUuidString);
151 151
		UUID featureTreeUuid = UUID.fromString(featureTreeUuidString);
152 152
		getConfigurator().setFeatureTree(featureTreeUuid);
153 153
		setPageComplete(featureTreeUuid != null);
154 154
	}
155
	
155

  
156 156
	/** {@inheritDoc} */
157 157
	@Override
158 158
	public boolean canFlipToNextPage() {
......
174 174
		}
175 175
		viewer.setInput(realFeatureTrees);
176 176
	}
177
	
177

  
178 178
	private class FeatureTreeContentProvider implements IStructuredContentProvider {
179 179

  
180 180
		@Override
......
190 190
			}
191 191
			return new Object[0];
192 192
		}
193
		
193

  
194 194
	}
195
	
195

  
196 196
	private class FeatureTreeLabelProvider extends LabelProvider {
197
		
197

  
198 198
		/*
199 199
		 * (non-Javadoc)
200 200
		 * @see org.eclipse.jface.viewers.LabelProvider#getText(java.lang.Object)
......
202 202
		@Override
203 203
		public String getText(Object element) {
204 204
			if(element instanceof Element){
205
				Element xmlElement = (Element) element;			
205
				Element xmlElement = (Element) element;
206 206
				return XMLHelper.getTitleCache(xmlElement);
207 207
			}
208 208
			return "no title cache";
209 209
		}
210
		
210

  
211 211
	}
212 212
}
eu.etaxonomy.taxeditor.store/OSGI-INF/l10n/bundle.properties
21 21
page.name.18 = Team or Person Matching Strategy
22 22
page.name.19 = Stage
23 23
page.name.20 = Preservation Method
24
page.name.21 = Feature Tree
25 24
page.name.22 = Default Feature Trees
26 25
page.name.23 = Representation
27 26
page.name.24 = Mobot Open Url
eu.etaxonomy.taxeditor.store/OSGI-INF/l10n/bundle_de.properties
21 21
page.name.18 = Team oder Personen Matching-Strategie
22 22
page.name.19 = Stadium
23 23
page.name.20 = Konservierungsmethode
24
page.name.21 = Merkmalsbaum
25 24
page.name.22 = Standard Merkmalsbaum
26 25
page.name.23 = Repr\u00e4sentation
27 26
page.name.24 = Mobot Open Url
eu.etaxonomy.taxeditor.store/plugin.xml
165 165
            id="eu.etaxonomy.taxeditor.preferences.preservationMethod"
166 166
            name="%page.name.20">
167 167
      </page>
168
      <page
169
            category="eu.etaxonomy.taxeditor.preferences.feature"
170
            class="eu.etaxonomy.taxeditor.preference.FeatureTreePreferences"
171
            id="eu.etaxonomy.taxeditor.preferences.featureTree"
172
            name="%page.name.21">
173
      </page>
174 168
      <page
175 169
            category="eu.etaxonomy.taxeditor.preferences.feature"
176 170
            class="eu.etaxonomy.taxeditor.preference.DefaultFeatureTreePreferenecs"
......
535 529
            </with>
536 530
         </activeWhen>
537 531
      </handler>
538
      <handler
539
            class="eu.etaxonomy.taxeditor.featuretree.OpenFeatureTreeEditorWizardHandler"
540
            commandId="eu.etaxonomy.taxeditor.store.open.FeatureTreeEditorWizard">
541
         <activeWhen>
542
            <reference
543
                  definitionId="hasROLE_PROJECT_MANAGER">
544
            </reference>
545
         </activeWhen>
546
      </handler>
547 532
      <handler
548 533
            class="eu.etaxonomy.taxeditor.handler.ShowRemotingLoginWindowHandler"
549 534
            commandId="eu.etaxonomy.taxeditor.store.operations.showRemotingLoginWindow">
......
660 645
            id="eu.etaxonomy.taxeditor.editor.definedTerms.newTermVocabulary"
661 646
            name="%command.name.7">
662 647
      </command>
663
      <command
664
         id="eu.etaxonomy.taxeditor.store.open.FeatureTreeEditorWizard"
665
         name="%command.name.9">
666
   	  </command>
667 648
      <command
668 649
            id="eu.etaxonomy.taxeditor.store.openPasswordWizzard"
669 650
            name="%command.name.10">
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/EditFeatureTreeWizardPage.java
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.featuretree;
11

  
12
import java.util.Collection;
13

  
14
import org.eclipse.core.runtime.IStatus;
15
import org.eclipse.jface.viewers.ISelectionChangedListener;
16
import org.eclipse.jface.viewers.IStructuredSelection;
17
import org.eclipse.jface.viewers.SelectionChangedEvent;
18
import org.eclipse.jface.viewers.TreeViewer;
19
import org.eclipse.jface.viewers.Viewer;
20
import org.eclipse.jface.viewers.ViewerDropAdapter;
21
import org.eclipse.jface.wizard.WizardDialog;
22
import org.eclipse.jface.wizard.WizardPage;
23
import org.eclipse.swt.SWT;
24
import org.eclipse.swt.dnd.DND;
25
import org.eclipse.swt.dnd.DragSourceAdapter;
26
import org.eclipse.swt.dnd.DragSourceEvent;
27
import org.eclipse.swt.dnd.Transfer;
28
import org.eclipse.swt.dnd.TransferData;
29
import org.eclipse.swt.events.ModifyEvent;
30
import org.eclipse.swt.events.ModifyListener;
31
import org.eclipse.swt.events.SelectionAdapter;
32
import org.eclipse.swt.events.SelectionEvent;
33
import org.eclipse.swt.layout.GridData;
34
import org.eclipse.swt.layout.GridLayout;
35
import org.eclipse.swt.widgets.Button;
36
import org.eclipse.swt.widgets.Composite;
37
import org.eclipse.swt.widgets.Label;
38
import org.eclipse.swt.widgets.Text;
39
import org.hibernate.proxy.HibernateProxy;
40

  
41
import eu.etaxonomy.cdm.api.service.IFeatureNodeService;
42
import eu.etaxonomy.cdm.api.service.config.FeatureNodeDeletionConfigurator;
43
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
44
import eu.etaxonomy.cdm.model.description.Feature;
45
import eu.etaxonomy.cdm.model.description.FeatureNode;
46
import eu.etaxonomy.cdm.model.description.FeatureTree;
47
import eu.etaxonomy.taxeditor.model.MessagingUtils;
48
import eu.etaxonomy.taxeditor.store.CdmStore;
49

  
50
/**
51
 * <p>
52
 * EditFeatureTreeWizardPage class.
53
 * </p>
54
 *
55
 * @author n.hoffmann
56
 * @created Aug 5, 2010
57
 * @version 1.0
58
 */
59
public class EditFeatureTreeWizardPage extends WizardPage implements
60
		ModifyListener, ISelectionChangedListener {
61

  
62
	private TreeViewer viewer;
63
	private Label label_title;
64
	private Text text_title;
65
	private Button button_add;
66
	private Button button_remove;
67
	private Label label_treeInfo;
68
	private FeatureTree featureTree;
69

  
70
	/**
71
	 * <p>
72
	 * Constructor for EditFeatureTreeWizardPage.
73
	 * </p>
74
	 *
75
	 * @param pageName
76
	 *            a {@link java.lang.String} object.
77
	 */
78
	protected EditFeatureTreeWizardPage(String pageName) {
79
		super(pageName);
80
		setMessage("Edit the Feature Tree.");
81
	}
82

  
83
	/*
84
	 * (non-Javadoc)
85
	 *
86
	 * @see
87
	 * org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets
88
	 * .Composite)
89
	 */
90
	/** {@inheritDoc} */
91
	@Override
92
	public void createControl(Composite parent) {
93
		Composite composite = new Composite(parent, SWT.NULL);
94
		composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
95
		composite.setLayout(new GridLayout());
96

  
97
		Composite composite_treeTitle = new Composite(composite, SWT.NULL);
98
		composite_treeTitle.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true,
99
				false));
100
		composite_treeTitle.setLayout(new GridLayout(2, false));
101

  
102
		label_title = new Label(composite_treeTitle, SWT.NULL);
103
		label_title.setText("Title");
104

  
105
		text_title = new Text(composite_treeTitle, SWT.NULL);
106
		text_title.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
107

  
108
		Composite composite_treeContent = new Composite(composite, SWT.NULL);
109
		composite_treeContent.setLayoutData(new GridData(SWT.FILL, SWT.FILL,
110
				true, true));
111
		composite_treeContent.setLayout(new GridLayout(2, false));
112

  
113
		viewer = new TreeViewer(composite_treeContent);
114
		viewer.getControl().setLayoutData(
115
				new GridData(SWT.FILL, SWT.FILL, true, true));
116

  
117
		Composite composite_buttons = new Composite(composite_treeContent,
118
				SWT.NULL);
119
		composite_buttons.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, false,
120
				false));
121
		composite_buttons.setLayout(new GridLayout());
122

  
123
		button_add = new Button(composite_buttons, SWT.PUSH);
124
		button_add.setText("Add");
125
		button_add.setToolTipText("Add a feature to this feature treee.");
126
		button_remove = new Button(composite_buttons, SWT.PUSH);
127
		button_remove.setText("Remove");
128
		button_remove
129
				.setToolTipText("Remove a feature from this feature tree.");
130

  
131
		label_treeInfo = new Label(composite, SWT.NULL);
132
		label_treeInfo
133
				.setText("Order and nesting of feature nodes may be changed through drag and drop.");
134

  
135
		viewer.setContentProvider(new FeatureTreeContentProvider());
136
		viewer.setLabelProvider(new FeatureTreeLabelProvider());
137

  
138
		int ops = DND.DROP_COPY | DND.DROP_MOVE;
139
		Transfer[] transfers = new Transfer[] { FeatureNodeTransfer
140
				.getInstance() };
141
		viewer.addDragSupport(ops, transfers, new FeatureNodeDragListener(
142
				viewer));
143
		viewer.addDropSupport(ops, transfers,
144
				new FeatureNodeDropAdapter(viewer));
145

  
146
		viewer.addSelectionChangedListener(this);
147

  
148
		button_add.addSelectionListener(new AddButtonListener());
149
		button_remove.addSelectionListener(new RemoveSelectionListener());
150

  
151
		setControl(composite);
152
	}
153

  
154
	/**
155
	 * <p>
156
	 * setSelectedTree
157
	 * </p>
158
	 *
159
	 * @param featureTree
160
	 *            a {@link eu.etaxonomy.cdm.model.description.FeatureTree}
161
	 *            object.
162
	 */
163
	public void setSelectedTree(FeatureTree featureTree) {
164
		this.featureTree = HibernateProxyHelper.deproxy(featureTree, FeatureTree.class);
165
		this.featureTree.setRoot(HibernateProxyHelper.deproxy(featureTree.getRoot(), FeatureNode.class));
166
		viewer.setInput(featureTree);
167

  
168
		text_title.removeModifyListener(this);
169
		if (featureTree != null){
170
			text_title.setText(featureTree.getTitleCache());
171
		}
172
		text_title.addModifyListener(this);
173
	}
174

  
175
	/** {@inheritDoc} */
176
	@Override
177
	public void modifyText(ModifyEvent e) {
178
		featureTree.setTitleCache(text_title.getText(), true);
179
	}
180

  
181
	/** {@inheritDoc} */
182
	@Override
183
	public void selectionChanged(SelectionChangedEvent event) {
184
		IStructuredSelection selection = (IStructuredSelection) event
185
				.getSelection();
186

  
187
		button_add.setEnabled(selection.size() <= 1);
188
		button_remove.setEnabled(selection.size() > 0);
189
	}
190

  
191
	private class AddButtonListener extends SelectionAdapter {
192
		@Override
193
		public void widgetSelected(SelectionEvent e) {
194
			AvailableFeaturesWizard wizard = new AvailableFeaturesWizard(
195
					featureTree);
196
			WizardDialog dialog = new WizardDialog(getShell(), wizard);
197

  
198
			if (dialog.open() == IStatus.OK) {
199
				IStructuredSelection selection = (IStructuredSelection) viewer
200
						.getSelection();
201
				FeatureNode parent = (FeatureNode) (selection.getFirstElement() != null ? selection
202
						.getFirstElement() : ((FeatureTree) viewer.getInput())
203
						.getRoot());
204
				Collection<Feature> additionalFeatures = wizard
205
						.getAdditionalFeatures();
206
				for (Feature feature : additionalFeatures) {
207
					FeatureNode child = FeatureNode.NewInstance(feature);
208
					CdmStore.getService(IFeatureNodeService.class).merge(child, true);
209
					
210
					parent.addChild(child);
211
				}
212
				viewer.refresh();
213
			}
214
		}
215
	}
216

  
217
	private class RemoveSelectionListener extends SelectionAdapter {
218
		@Override
219
		public void widgetSelected(SelectionEvent e) {
220
			IStructuredSelection selection = (IStructuredSelection) viewer
221
					.getSelection();
222

  
223
			for (Object selectedObject : selection.toArray()) {
224
				FeatureNode featureNode = (FeatureNode) selectedObject;
225
				FeatureNode parent = featureNode.getParent();
226
				parent.removeChild(featureNode);
227
				
228
				CdmStore.getService(IFeatureNodeService.class).deleteFeatureNode(featureNode.getUuid(), new FeatureNodeDeletionConfigurator());
229
				
230
			}
231
			viewer.refresh();
232
		}
233
	}
234

  
235
	private class FeatureNodeDragListener extends DragSourceAdapter {
236

  
237
		private final TreeViewer viewer;
238

  
239
		public FeatureNodeDragListener(TreeViewer viewer) {
240
			this.viewer = viewer;
241
		}
242

  
243
		/**
244
		 * Method declared on DragSourceListener
245
		 */
246
		@Override
247
		public void dragFinished(DragSourceEvent event) {
248
			if (!event.doit) {
249
                return;
250
            }
251
			// if the featureNode was moved, remove it from the source viewer
252
			if (event.detail == DND.DROP_MOVE) {
253
				IStructuredSelection selection = (IStructuredSelection) viewer
254
						.getSelection();
255
				viewer.refresh();
256
			}
257
		}
258

  
259
		/**
260
		 * Method declared on DragSourceListener
261
		 */
262
		@Override
263
		public void dragSetData(DragSourceEvent event) {
264
			IStructuredSelection selection = (IStructuredSelection) viewer
265
					.getSelection();
266
			FeatureNode[] featureNodes = (FeatureNode[]) selection.toList()
267
					.toArray(new FeatureNode[selection.size()]);
268
			if (FeatureNodeTransfer.getInstance().isSupportedType(
269
					event.dataType)) {
270
				event.data = featureNodes;
271
			}
272
		}
273

  
274
		/**
275
		 * Method declared on DragSourceListener
276
		 */
277
		@Override
278
		public void dragStart(DragSourceEvent event) {
279
			event.doit = !viewer.getSelection().isEmpty();
280
		}
281

  
282
	}
283

  
284
	private class FeatureNodeDropAdapter extends ViewerDropAdapter {
285

  
286
		protected FeatureNodeDropAdapter(Viewer viewer) {
287
			super(viewer);
288
		}
289

  
290
		@Override
291
		public boolean performDrop(Object data) {
292
			FeatureNode target = (FeatureNode) getCurrentTarget();
293
			int position = 0;
294

  
295
			if (target != null) {
296
				int location = getCurrentLocation();
297
				FeatureNode parent = target.getParent();
298
				if (location == LOCATION_BEFORE) {
299
					position = Math.max(0, parent.getIndex(target) - 1);
300
					target = parent;
301
				}
302

  
303
				if (location == LOCATION_AFTER) {
304
					position = parent.getIndex(target);
305
					target = parent;
306
				}
307
			}
308

  
309
			// set target to root node if there is no target specified
310
			if (target == null) {
311
				FeatureTree featureTree = (FeatureTree) getViewer().getInput();
312
				target = featureTree.getRoot();
313
			}
314

  
315
			Object[] droppedObjects = (Object[]) data;
316
			TreeViewer viewer = (TreeViewer) getViewer();
317

  
318
			// cannot drop a feature node onto itself
319
			for (Object droppedObject : droppedObjects) {
320
				if (droppedObject == null) {
321
					MessagingUtils.warningDialog(
322
									"Operation not supported yet",
323
									this,
324
									"We are currently unable to change the order of freshly created "
325
											+ "feature trees nodes. Please close and reopen the dialog to change the order of features.");
326
					return false;
327
				}
328
				if (droppedObject.equals(target)) {
329
					return false;
330
				}
331
			}
332
			for (Object droppedObject : droppedObjects) {
333
				FeatureNode droppedNode = (FeatureNode) droppedObject;
334
				target.addChild(droppedNode, position);
335
				viewer.add(target, droppedNode);
336
				viewer.reveal(droppedNode);
337
			}
338
			return true;
339
		}
340

  
341
		@Override
342
		public boolean validateDrop(Object target, int operation,
343
				TransferData transferData) {
344
			return FeatureNodeTransfer.getInstance().isSupportedType(
345
					transferData);
346
		}
347

  
348
	}
349
}
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/FeatureTreeEditorWizard.java
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.featuretree;
11

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

  
16
import org.eclipse.jface.wizard.Wizard;
17

  
18
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
19
import eu.etaxonomy.cdm.api.service.IFeatureTreeService;
20
import eu.etaxonomy.cdm.model.description.FeatureTree;
21
import eu.etaxonomy.taxeditor.session.ICdmEntitySession;
22
import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
23
import eu.etaxonomy.taxeditor.store.CdmStore;
24

  
25
/**
26
 * <p>FeatureTreeEditorWizard class.</p>
27
 *
28
 * @author n.hoffmann
29
 * @created Aug 5, 2010
30
 * @version 1.0
31
 */
32
public class FeatureTreeEditorWizard extends Wizard implements ICdmEntitySessionEnabled {
33

  
34
	private SelectFeatureTreeWizardPage selectFeatureTreePage;
35
	private EditFeatureTreeWizardPage editFeatureTreePage;
36

  
37
	private FeatureTree selectedFeatureTree;
38

  
39
	private ConversationHolder conversation;
40
	private ICdmEntitySession cdmEntitySession;
41
	private ICdmEntitySession previousCdmEntitySession;
42

  
43
	/**
44
	 * <p>Constructor for FeatureTreeEditorWizard.</p>
45
	 */
46
	public FeatureTreeEditorWizard(){
47
		conversation = CdmStore.createConversation();
48
		previousCdmEntitySession = CdmStore.getCurrentSessionManager().getActiveSession();
49
		cdmEntitySession = CdmStore.getCurrentSessionManager().newSession(this, true);
50
		setWindowTitle("Feature Tree Editor");
51
	}
52

  
53
	/**
54
	 * <p>addPages</p>
55
	 */
56
	@Override
57
    public void addPages() {
58
		selectFeatureTreePage = new SelectFeatureTreeWizardPage("SELECT");
59
		addPage(selectFeatureTreePage);
60

  
61
		editFeatureTreePage = new EditFeatureTreeWizardPage("EDIT");
62
		addPage(editFeatureTreePage);
63
	}
64

  
65

  
66

  
67
	/** {@inheritDoc} */
68
	@Override
69
	public boolean performFinish() {
70
		try{
71
			if (selectedFeatureTree != null){
72
			    CdmStore.getService(IFeatureTreeService.class).merge(selectedFeatureTree, true);
73
			}
74
			conversation.commit();
75
		}finally{
76
			conversation.close();
77
			cdmEntitySession.dispose();
78
			if(previousCdmEntitySession != null) {
79
			    previousCdmEntitySession.bind();
80
			}
81
		}
82

  
83
		return true;
84
	}
85

  
86
	/** {@inheritDoc} */
87
    @Override
88
    public boolean performCancel() {
89
        cdmEntitySession.dispose();
90
        if(previousCdmEntitySession != null) {
91
            previousCdmEntitySession.bind();
92
        }
93
        return true;
94
    }
95

  
96
	/**
97
	 * <p>Setter for the field <code>selectedFeatureTree</code>.</p>
98
	 *
99
	 * @param selectedFeatureTree the selectedFeatureTree to set
100
	 */
101
	public void setSelectedFeatureTree(FeatureTree selectedFeatureTree) {
102
		this.selectedFeatureTree = selectedFeatureTree;
103
		editFeatureTreePage.setSelectedTree(selectedFeatureTree);
104
	}
105

  
106
	/**
107
	 * <p>Getter for the field <code>selectedFeatureTree</code>.</p>
108
	 *
109
	 * @return the selectedFeatureTree
110
	 */
111
	public FeatureTree getSelectedFeatureTree() {
112
		return selectedFeatureTree;
113
	}
114

  
115
    /* (non-Javadoc)
116
     * @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled#getCdmEntitySession()
117
     */
118
    @Override
119
    public ICdmEntitySession getCdmEntitySession() {
120
        // TODO Auto-generated method stub
121
        return null;
122
    }
123

  
124
    /* (non-Javadoc)
125
     * @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled#getRootEntities()
126
     */
127
    @Override
128
    public List<FeatureTree> getRootEntities() {
129
        return Arrays.asList(selectedFeatureTree);
130
    }
131

  
132
    /* (non-Javadoc)
133
     * @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled#getPropertyPathsMap()
134
     */
135
    @Override
136
    public Map<Object, List<String>> getPropertyPathsMap() {
137
        // TODO Auto-generated method stub
138
        return null;
139
    }
140

  
141
}
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/OpenFeatureTreeEditorWizardHandler.java
1
package eu.etaxonomy.taxeditor.featuretree;
2

  
3
import org.eclipse.core.commands.AbstractHandler;
4
import org.eclipse.core.commands.ExecutionEvent;
5
import org.eclipse.core.commands.ExecutionException;
6
import org.eclipse.jface.wizard.WizardDialog;
7

  
8
import eu.etaxonomy.taxeditor.store.StoreUtil;
9

  
10
/**
11
 * 
12
 * @author a.kohlbecker
13
 *
14
 */
15
public class OpenFeatureTreeEditorWizardHandler extends AbstractHandler {
16
	
17
	/**
18
	 * unused, only added as reference
19
	 */
20
	String commandID = "eu.etaxonomy.taxeditor.store.open.FeatureTreeEditorWizard"; 
21

  
22
	@Override
23
	public Object execute(ExecutionEvent event) throws ExecutionException {
24
		FeatureTreeEditorWizard featureTreeEditorDialog = new FeatureTreeEditorWizard();
25
		WizardDialog dialog = new WizardDialog(StoreUtil.getShell(),
26
				featureTreeEditorDialog);
27

  
28
		dialog.open();
29
		return null;
30
	}
31

  
32
}
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/SelectFeatureTreeWizard.java
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.featuretree;
11

  
12
import org.eclipse.jface.wizard.Wizard;
13

  
14
/**
15
 * <p>SelectFeatureTreeWizard class.</p>
16
 *
17
 * @author n.hoffmann
18
 * @created Sep 17, 2010
19
 * @version 1.0
20
 */
21
public class SelectFeatureTreeWizard extends Wizard {
22

  
23
	/** Constant <code>PAGE_NAME="Select Feature Tree"</code> */
24
	public static final String PAGE_NAME = "Select Feature Tree";
25
	
26
	/** {@inheritDoc} */
27
	@Override
28
	public void addPages() {
29
		addPage(new SelectFeatureTreeWizardPage(PAGE_NAME));
30
	}
31
	
32
	/* (non-Javadoc)
33
	 * @see org.eclipse.jface.wizard.Wizard#performFinish()
34
	 */
35
	/** {@inheritDoc} */
36
	@Override
37
	public boolean performFinish() {
38
		return false;
39
	}
40
}
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/SelectFeatureTreeWizardPage.java
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.featuretree;
11

  
12
import java.util.List;
13
import java.util.logging.ErrorManager;
14

  
15
import org.eclipse.jface.viewers.ISelectionChangedListener;
16
import org.eclipse.jface.viewers.IStructuredSelection;
17
import org.eclipse.jface.viewers.ListViewer;
18
import org.eclipse.jface.viewers.SelectionChangedEvent;
19
import org.eclipse.jface.viewers.StructuredSelection;
20
import org.eclipse.jface.wizard.WizardPage;
21
import org.eclipse.swt.SWT;
22
import org.eclipse.swt.events.ModifyEvent;
23
import org.eclipse.swt.events.ModifyListener;
24
import org.eclipse.swt.events.SelectionAdapter;
25
import org.eclipse.swt.events.SelectionEvent;
26
import org.eclipse.swt.layout.GridData;
27
import org.eclipse.swt.layout.GridLayout;
28
import org.eclipse.swt.widgets.Button;
29
import org.eclipse.swt.widgets.Composite;
30
import org.eclipse.swt.widgets.Label;
31
import org.eclipse.swt.widgets.Text;
32

  
33
import eu.etaxonomy.cdm.api.service.DeleteResult;
34
import eu.etaxonomy.cdm.api.service.IFeatureTreeService;
35
import eu.etaxonomy.cdm.model.description.FeatureTree;
36
import eu.etaxonomy.taxeditor.model.DeleteResultMessagingUtils;
37
import eu.etaxonomy.taxeditor.model.MessagingUtils;
38
import eu.etaxonomy.taxeditor.store.CdmStore;
39

  
40
/**
41
 * <p>SelectFeatureTreeWizardPage class.</p>
42
 *
43
 * @author n.hoffmann
44
 * @created Aug 5, 2010
45
 * @version 1.0
46
 */
47
public class SelectFeatureTreeWizardPage extends WizardPage implements ISelectionChangedListener, ModifyListener{
48

  
49
	private ListViewer viewer;
50
	private Text text_title;
51
	private Button button_add;
52
	private Button button_remove;
53

  
54
	/**
55
	 * <p>Constructor for SelectFeatureTreeWizardPage.</p>
56
	 *
57
	 * @param pageName a {@link java.lang.String} object.
58
	 */
59
	protected SelectFeatureTreeWizardPage(String pageName) {
60
		super(pageName);
61
		setMessage("Select a Feature Tree or create a new one.");
62
	}
63

  
64
	/* (non-Javadoc)
65
	 * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
66
	 */
67
	/** {@inheritDoc} */
68
	@Override
69
	public void createControl(Composite parent) {
70
		Composite composite = new Composite(parent, SWT.NULL);
71

  
72
		composite.setLayout(new GridLayout());
73

  
74
		Composite composite_treeContent = new Composite(composite, SWT.NULL);
75
		composite_treeContent.setLayoutData(new GridData(SWT.FILL, SWT.FILL,
76
				true, true));
77
		composite_treeContent.setLayout(new GridLayout(2, false));
78

  
79
		viewer = new ListViewer(composite_treeContent);
80
		viewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
81

  
82
		button_remove = new Button(composite_treeContent, SWT.PUSH);
83
		button_remove.setText("Remove");
84
		button_remove.setLayoutData(new GridData(SWT.RIGHT, SWT.TOP, false, false));
85

  
86
		Composite composite_treeTitle = new Composite(composite, SWT.NULL);
87
		composite_treeTitle.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true,
88
				false));
89
		composite_treeTitle.setLayout(new GridLayout(3, false));
90

  
91

  
92

  
93
		Label label_title = new Label(composite_treeTitle, SWT.NULL);
94
		label_title.setText("New Feature Tree");
95

  
96
		text_title = new Text(composite_treeTitle, SWT.NULL);
97
		text_title.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
98

  
99
		button_add = new Button(composite_treeTitle, SWT.PUSH);
100
		button_add.setText("Add");
101

  
102
		viewer.setContentProvider(new FeatureTreeContentProvider());
103
		viewer.setLabelProvider(new FeatureTreeLabelProvider());
104

  
105
		viewer.addSelectionChangedListener(this);
106

  
107
		text_title.addModifyListener(this);
108
		button_add.addSelectionListener(new AddButtonSelectionListener());
109
		button_remove.addSelectionListener(new RemoveButtonSelectionListener());
110

  
111
		List<FeatureTree> input = CdmStore.getService(IFeatureTreeService.class).list(FeatureTree.class, null, null, null, null);
112

  
113
		viewer.setInput(input);
114
		modifyText(null);
115
		setControl(composite);
116
	}
117

  
118
	/** {@inheritDoc} */
119
	@Override
120
	public void selectionChanged(SelectionChangedEvent event) {
121
		IStructuredSelection selection = (IStructuredSelection) event.getSelection();
122

  
123
		if(selection.size() == 1){
124
			FeatureTree selectedFeatureTree = (FeatureTree) selection.getFirstElement();
125
			((FeatureTreeEditorWizard) getWizard()).setSelectedFeatureTree(selectedFeatureTree);
126

  
127
		}
128

  
129
		setPageComplete(true);
130

  
131
		button_remove.setEnabled(selection.size() >= 1);
132
	}
133

  
134
	/** {@inheritDoc} */
135
	@Override
136
	public boolean canFlipToNextPage() {
137
		return ((IStructuredSelection) viewer.getSelection()).size() == 1;
138
	}
139

  
140
	/** {@inheritDoc} */
141
	@Override
142
	public void modifyText(ModifyEvent e) {
143
		button_add.setEnabled(! text_title.getText().isEmpty());
144
	}
145

  
146
	private class AddButtonSelectionListener extends SelectionAdapter {
147
		@Override
148
        public void widgetSelected(SelectionEvent e) {
149
			FeatureTree featureTree = FeatureTree.NewInstance();
150
			featureTree.setTitleCache(text_title.getText(), true);
151

  
152
			viewer.add(featureTree);
153
			CdmStore.getService(IFeatureTreeService.class).merge(featureTree, true);
154
			
155
			text_title.setText("");
156
			viewer.setSelection(new StructuredSelection(featureTree));
157

  
158
		}
159
	}
160

  
161
	private class RemoveButtonSelectionListener extends SelectionAdapter {
162
		@Override
163
        public void widgetSelected(SelectionEvent e) {
164
			IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
165
			Object source = e.getSource();
166
			for(Object element : selection.toArray()){
167
				viewer.remove(element);
168
				((FeatureTreeEditorWizard) getWizard()).setSelectedFeatureTree(null);
169
				DeleteResult result =	CdmStore.getService(IFeatureTreeService.class).delete(((FeatureTree) element).getUuid());
170

  
171
				if (result.isError()){
172
					DeleteResultMessagingUtils.messageDialogWithDetails(result, "The delete of the feature tree was not successful.", null);
173
				}
174
				viewer.setSelection(new StructuredSelection(new Object[0]));
175
			}
176
		}
177
	}
178
}
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/FeatureTreePreferences.java
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.preference;
11

  
12
import org.eclipse.jface.resource.ImageDescriptor;
13
import org.eclipse.swt.SWT;
14
import org.eclipse.swt.layout.GridLayout;
15
import org.eclipse.swt.widgets.Composite;
16
import org.eclipse.swt.widgets.Control;
17
import org.eclipse.ui.IWorkbench;
18
import org.eclipse.ui.IWorkbenchPreferencePage;
19

  
20
import eu.etaxonomy.taxeditor.preference.menu.CdmPreferencePage;
21
import eu.etaxonomy.taxeditor.store.CdmStore;
22
import eu.etaxonomy.taxeditor.ui.element.CommandHandlerButton;
23

  
24
/**
25
 * <p>
26
 * FeatureTreePreferences class.
27
 * </p>
28
 *
29
 * @author n.hoffmann
30
 * @created Aug 5, 2010
31
 * @version 1.0
32
 */
33
public class FeatureTreePreferences extends CdmPreferencePage implements
34
		IWorkbenchPreferencePage {
35

  
36
	/**
37
	 * <p>
38
	 * Constructor for FeatureTreePreferences.
39
	 * </p>
40
	 */
41
	public FeatureTreePreferences() {
42
	}
43

  
44
	/**
45
	 * <p>
46
	 * Constructor for FeatureTreePreferences.
47
	 * </p>
48
	 *
49
	 * @param title
50
	 *            a {@link java.lang.String} object.
51
	 */
52
	public FeatureTreePreferences(String title) {
53
		super(title);
54
	}
55

  
56
	/**
57
	 * <p>
58
	 * Constructor for FeatureTreePreferences.
59
	 * </p>
60
	 *
61
	 * @param title
62
	 *            a {@link java.lang.String} object.
63
	 * @param image
64
	 *            a {@link org.eclipse.jface.resource.ImageDescriptor} object.
65
	 */
66
	public FeatureTreePreferences(String title, ImageDescriptor image) {
67
		super(title, image);
68
	}
69

  
70
	/*
71
	 * (non-Javadoc)
72
	 *
73
	 * @see
74
	 * org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
75
	 */
76
	/** {@inheritDoc} */
77
	@Override
78
	public void init(IWorkbench workbench) {
79
	}
80

  
81
	/*
82
	 * (non-Javadoc)
83
	 *
84
	 * @see
85
	 * org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse
86
	 * .swt.widgets.Composite)
87
	 */
88
	/** {@inheritDoc} */
89
	@Override
90
	protected Control createContents(Composite parent) {
91
		Composite composite = new Composite(parent, SWT.NULL);
92
		composite.setLayout(new GridLayout());
93

  
94
		final CommandHandlerButton button_openFeatureTree = new CommandHandlerButton(composite, SWT.PUSH, "eu.etaxonomy.taxeditor.store.open.FeatureTreeEditorWizard");
95
		button_openFeatureTree.setText("Open FeatureTree Editor");
96
		PreferencesUtil.recursiveSetEnabled(composite, CdmStore.isActive());
97
		return composite;
98
	}
99
}

Also available in: Unified diff