Project

General

Profile

« Previous | Next » 

Revision d44ef0c2

Added by Patrick Plitzner over 6 years ago

ref #7086, #7095 Implement working set navigator

View differences:

eu.etaxonomy.taxeditor.editor/fragment.e4xmi
231 231
    <elements xsi:type="basic:PartDescriptor" xmi:id="_ARZyMKz2EeeBIsZyvYlAaA" elementId="eu.etaxonomy.taxeditor.editor.group.authority.e4.CdmAuthorityEditorE4" label="%editor.name.4" closeable="true" dirtyable="true" contributionURI="bundleclass://eu.etaxonomy.taxeditor.editor/eu.etaxonomy.taxeditor.editor.group.authority.e4.CdmAuthorityEditorE4"/>
232 232
    <elements xsi:type="basic:PartDescriptor" xmi:id="_Fa8l4M7XEeex0rHJ7p8Zdw" elementId="eu.etaxonomy.taxeditor.editor.view.workingSet.WorkingSetEditor" label="Working Set Editor" tooltip="Working Set Editor" allowMultiple="true" closeable="true" dirtyable="true" contributionURI="bundleclass://eu.etaxonomy.taxeditor.editor/eu.etaxonomy.taxeditor.editor.workingSet.WorkingSetEditor"/>
233 233
    <elements xsi:type="basic:PartDescriptor" xmi:id="_rpaDsNK2EeeWSJT7vW9jsw" elementId="eu.etaxonomy.taxeditor.editor.workingSet.matrix.CharacterMatrix" label="Character Matrix" tooltip="Character Matrix" allowMultiple="true" closeable="true" dirtyable="true" contributionURI="bundleclass://eu.etaxonomy.taxeditor.editor/eu.etaxonomy.taxeditor.editor.workingSet.matrix.CharacterMatrix"/>
234
    <elements xsi:type="basic:PartDescriptor" xmi:id="_XcQMEN8mEee9zP45RW4C3A" elementId="eu.etaxonomy.taxeditor.editor.workingSet.WorkingSetNavigator" label="Working Set Navigator" closeable="true" contributionURI="bundleclass://eu.etaxonomy.taxeditor.editor/eu.etaxonomy.taxeditor.editor.workingSet.WorkingSetNavigator"/>
234 235
  </fragments>
235 236
  <fragments xsi:type="fragment:StringModelFragment" xmi:id="__mwtMDVpEee_b7RlBzTDRw" featurename="commands" parentElementId="xpath:/">
236 237
    <elements xsi:type="commands:Command" xmi:id="_BjF3ADVqEee_b7RlBzTDRw" elementId="eu.etaxonomy.taxeditor.editor.command.specimeneditor.create_field_unit" commandName="%command.commandname.1"/>
......
326 327
    <elements xsi:type="menu:HandledMenuItem" xmi:id="_jIucENK2EeeWSJT7vW9jsw" elementId="eu.etaxonomy.taxeditor.editor.showViewMenu.matrixEditor" label="Character Matrix" tooltip="Character Matrix" command="_FnWwMNXoEeeLtdyzt6BEAA">
327 328
      <visibleWhen xsi:type="ui:CoreExpression" xmi:id="_9btiwN5eEeeLp7mUPmwRWA" coreExpressionId="isCdmStoreConnected"/>
328 329
    </elements>
330
    <elements xsi:type="menu:HandledMenuItem" xmi:id="_jPiz8N8mEee9zP45RW4C3A" elementId="eu.etaxonomy.taxeditor.editor.showViewMenu.workingSetNavigator" label="Working Set Navigator" tooltip="Working Set Navigator" command="_WPjpoDSnEeek0dKsFNy--Q">
331
      <visibleWhen xsi:type="ui:CoreExpression" xmi:id="_jPjbAN8mEee9zP45RW4C3A" coreExpressionId="isCdmStoreConnected"/>
332
      <parameters xmi:id="_jPjbAd8mEee9zP45RW4C3A" elementId="eu.etaxonomy.taxeditor.editor.showView.parameter.workingSetNavigator" name="eu.etaxonomy.taxeditor.workbench.commandparameter.partName" value="eu.etaxonomy.taxeditor.editor.workingSet.WorkingSetNavigator"/>
333
    </elements>
329 334
  </fragments>
330 335
  <fragments xsi:type="fragment:StringModelFragment" xmi:id="_P9N9YJMkEeeR4YRjNqCKeA" featurename="handlers" parentElementId="xpath:/">
331 336
    <elements xsi:type="commands:Handler" xmi:id="_SL3mQJMkEeeR4YRjNqCKeA" elementId="eu.etaxonomy.taxeditor.editor.handler.defaultHandler.DefaultOpenSpecimenEditorForTypeSpecimenHandler" contributionURI="bundleclass://eu.etaxonomy.taxeditor.editor/eu.etaxonomy.taxeditor.editor.handler.defaultHandler.DefaultOpenSpecimenEditorForTypeSpecimenHandler" command="_2Bn-EJMjEeeR4YRjNqCKeA"/>
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/EditorUtil.java
42 42
import eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4;
43 43
import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
44 44
import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateViewEditorInput;
45
import eu.etaxonomy.taxeditor.editor.workingSet.WorkingSetEditor;
45 46
import eu.etaxonomy.taxeditor.model.AbstractUtility;
46 47
import eu.etaxonomy.taxeditor.model.MessagingUtils;
47 48
import eu.etaxonomy.taxeditor.workbench.WorkbenchUtility;
......
73 74
//	    }
74 75
//	}
75 76

  
77
    public static void openWorkingSetEditor(UUID workingSetUuid, EModelService modelService, EPartService partService, MApplication application){
78
        MPart part = partService.createPart("eu.etaxonomy.taxeditor.editor.view.workingSet.WorkingSetEditor");
79
        MPartStack editorAreaPartStack = WorkbenchUtility.getEditorAreaPartStack(application, modelService);
80
        if(editorAreaPartStack!=null){
81
            editorAreaPartStack.getChildren().add(part);
82
        }
83
        part = partService.showPart(part, PartState.ACTIVATE);
84
        WorkingSetEditor derivateView = (WorkingSetEditor) part.getObject();
85
        derivateView.init(workingSetUuid);
86
    }
87

  
76 88
    public static void openSpecimenEditor(DerivateViewEditorInput input, EModelService modelService, EPartService partService, MApplication application){
77 89
        MPart part = partService.createPart(AppModelId.PARTDESCRIPTOR_EU_ETAXONOMY_TAXEDITOR_EDITOR_VIEW_DERIVATE_DERIVATEVIEW);
78 90
        MPartStack editorAreaPartStack = WorkbenchUtility.getEditorAreaPartStack(application, modelService);
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/workingSet/WorkingSetComposite.java
16 16
import org.eclipse.swt.SWT;
17 17
import org.eclipse.swt.layout.GridData;
18 18
import org.eclipse.swt.layout.GridLayout;
19
import org.eclipse.swt.widgets.Button;
20 19
import org.eclipse.swt.widgets.Composite;
21 20
import org.eclipse.swt.widgets.Label;
22 21
import org.eclipse.swt.widgets.Text;
......
30 29
import eu.etaxonomy.cdm.model.taxon.Classification;
31 30
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
32 31
import eu.etaxonomy.taxeditor.featuretree.e4.FeatureTreeEditorComposite;
33
import eu.etaxonomy.taxeditor.model.ImageResources;
34 32
import eu.etaxonomy.taxeditor.store.CdmStore;
35 33
import eu.etaxonomy.taxeditor.ui.combo.TermUuidComboViewer;
36 34
import eu.etaxonomy.taxeditor.util.TaxonTreeNodeContentProvider;
......
48 46
    private FeatureTreeEditorComposite featureTreeEditorComposite;
49 47
    private TreeViewer taxonNodeTree;
50 48
    private NamedArea area;
51
    private Button btnOpenWorkingSet;
52
    private Label lblWorkingSet;
53 49
    private Text textAreaText;
54 50

  
55 51
    public WorkingSetComposite(Composite parent, int style) {
......
59 55

  
60 56
        setLayout(new GridLayout(3, false));
61 57

  
62
        Composite composite = new Composite(this, SWT.BORDER);
63
        composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 3, 1));
64
        composite.setLayout(new GridLayout(4, false));
65

  
66
        lblWorkingSet = new Label(composite, SWT.NONE);
67
        lblWorkingSet.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 3, 1));
68
        lblWorkingSet.setText("-no working set loaded-");
69

  
70
        btnOpenWorkingSet = new Button(composite, SWT.NONE);
71
        btnOpenWorkingSet.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
72
        btnOpenWorkingSet.setText("Open...");
73
        btnOpenWorkingSet.setImage(ImageResources.getImage(ImageResources.BROWSE_ICON));
74

  
75 58
        Label lblNewLabel = new Label(this, SWT.NONE);
76 59
        lblNewLabel.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
77 60
        lblNewLabel.setText("Label");
......
79 62
        txtWorkingSet = new Text(this, SWT.BORDER);
80 63
        txtWorkingSet.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
81 64

  
82
                Label lblNewLabel_1 = new Label(this, SWT.NONE);
83
                lblNewLabel_1.setText("Taxon filter");
65
        Label lblNewLabel_1 = new Label(this, SWT.NONE);
66
        lblNewLabel_1.setText("Taxon filter");
84 67

  
85 68
        Label lblNewLabel_2 = new Label(this, SWT.NONE);
86 69
        lblNewLabel_2.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
......
93 76
        tree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 4));
94 77
        taxonNodeTree = new TreeViewer(tree);
95 78

  
96
                taxonNodeTree.setContentProvider(new TaxonTreeNodeContentProvider());
97
                taxonNodeTree.setLabelProvider(new TaxonTreeNodeLabelProvider());
98
                taxonNodeTree.setInput(list);
79
        taxonNodeTree.setContentProvider(new TaxonTreeNodeContentProvider());
80
        taxonNodeTree.setLabelProvider(new TaxonTreeNodeLabelProvider());
81
        taxonNodeTree.setInput(list);
99 82

  
100 83
        Label lblNewLabel_3 = new Label(this, SWT.NONE);
101 84
        lblNewLabel_3.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
......
169 152
        this.area = area;
170 153
        textAreaText.setText(area.getLabel());
171 154
    }
172
    public Label getLblWorkingSet() {
173
        return lblWorkingSet;
174
    }
175 155
    public Text getTextAreaText() {
176 156
        return textAreaText;
177 157
    }
178
    public Button getBtnOpenWorkingSet() {
179
        return btnOpenWorkingSet;
180
    }
181 158
}
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/workingSet/WorkingSetEditor.java
11 11
import java.util.Collection;
12 12
import java.util.HashSet;
13 13
import java.util.Set;
14
import java.util.UUID;
14 15

  
15 16
import javax.annotation.PostConstruct;
16 17
import javax.annotation.PreDestroy;
......
27 28
import org.eclipse.swt.SWT;
28 29
import org.eclipse.swt.widgets.Composite;
29 30
import org.eclipse.swt.widgets.Display;
31
import org.eclipse.swt.widgets.Event;
32
import org.eclipse.swt.widgets.Listener;
30 33
import org.eclipse.swt.widgets.Shell;
31 34

  
32 35
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
......
44 47
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
45 48
import eu.etaxonomy.taxeditor.store.CdmStore;
46 49
import eu.etaxonomy.taxeditor.ui.dialog.selection.NamedAreaSelectionDialog;
47
import eu.etaxonomy.taxeditor.ui.dialog.selection.WorkingSetSelectionDialog;
48 50
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
49 51
import eu.etaxonomy.taxeditor.workbench.part.IE4SavablePart;
50 52

  
......
64 66
    @Inject
65 67
    private MDirtyable dirty;
66 68

  
69
    private Listener nameAreaSelectionListener;
70

  
67 71
    @PostConstruct
68 72
    public void create(Composite parent, IEclipseContext context, @Named(IServiceConstants.ACTIVE_SHELL)Shell shell){
69 73
        if(CdmStore.isActive() && conversation==null){
......
75 79
        CdmFormFactory cdmFormFactory = new CdmFormFactory(Display.getCurrent());
76 80
        ContextInjectionFactory.inject(cdmFormFactory, context);
77 81

  
78

  
79 82
        composite = new WorkingSetComposite(parent, SWT.NONE);
80 83

  
81
        //TODO remove with correct dirty handling
82
        dirty.setDirty(true);
83

  
84 84
        //add listeners
85 85
        composite.getTxt_label().addModifyListener(event->dirty.setDirty(true));
86 86
        composite.getRankMin().addSelectionChangedListener(event->dirty.setDirty(true));
87 87
        composite.getRankMax().addSelectionChangedListener(event->dirty.setDirty(true));
88
        composite.getBtnOpenWorkingSet().addListener(SWT.MouseDown, event->{
89
            workingSet = WorkingSetSelectionDialog.select(shell, null);
90
            if(workingSet!=null){
91
                init();
92
            }
93
        });
94
        composite.getTextAreaText().addListener(SWT.MouseDown, event->{
95
            NamedArea area = NamedAreaSelectionDialog.select(shell, null, null);
96
            if(area!=null){
97
                composite.setArea(area);
88

  
89
        nameAreaSelectionListener = new Listener() {
90
            @Override
91
            public void handleEvent(Event event) {
92
                NamedArea area = NamedAreaSelectionDialog.select(shell, null, null);
93
                if(area!=null){
94
                    composite.setArea(area);
95
                }
96
                dirty.setDirty(true);
98 97
            }
99
            dirty.setDirty(true);
100
        });
98
        };
101 99
    }
102 100

  
103
    public void init() {
101
    public void init(UUID workingSetUuid) {
102
        this.workingSet = CdmStore.getService(IWorkingSetService.class).load(workingSetUuid);
104 103
        if(workingSet.getTitleCache()!=null){
105 104
            composite.getTxt_label().setText(workingSet.getTitleCache());
106
            composite.getLblWorkingSet().setText(workingSet.getTitleCache());
107 105
        }
108 106
        if(workingSet.getDescriptiveSystem()!=null){
109 107
            composite.setCharacters(workingSet.getDescriptiveSystem());
......
120 118
        if(geoFilter!=null && !geoFilter.isEmpty()){
121 119
            composite.setArea(geoFilter.iterator().next());
122 120
        }
121
        composite.getTextAreaText().addListener(SWT.MouseDown, nameAreaSelectionListener);
123 122
    }
124 123

  
125 124
    /**
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/workingSet/WorkingSetNavigator.java
1
// $Id$
2
/**
3
* Copyright (C) 2017 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
package eu.etaxonomy.taxeditor.editor.workingSet;
11

  
12
import java.util.List;
13

  
14
import javax.annotation.PostConstruct;
15

  
16
import org.eclipse.e4.ui.model.application.MApplication;
17
import org.eclipse.e4.ui.workbench.modeling.EModelService;
18
import org.eclipse.e4.ui.workbench.modeling.EPartService;
19
import org.eclipse.jface.viewers.ArrayContentProvider;
20
import org.eclipse.jface.viewers.DoubleClickEvent;
21
import org.eclipse.jface.viewers.IDoubleClickListener;
22
import org.eclipse.jface.viewers.ISelection;
23
import org.eclipse.jface.viewers.IStructuredSelection;
24
import org.eclipse.jface.viewers.ListViewer;
25
import org.eclipse.swt.widgets.Composite;
26

  
27
import eu.etaxonomy.cdm.api.service.IWorkingSetService;
28
import eu.etaxonomy.cdm.model.description.WorkingSet;
29
import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
30
import eu.etaxonomy.taxeditor.editor.EditorUtil;
31
import eu.etaxonomy.taxeditor.store.CdmStore;
32
import eu.etaxonomy.taxeditor.ui.UuidAndTitleCacheLabelProvider;
33

  
34
/**
35
 * @author pplitzner
36
 * @date 12.12.2017
37
 *
38
 */
39
public class WorkingSetNavigator {
40

  
41
    private ListViewer viewer;
42

  
43
    @PostConstruct
44
    public void create(Composite parent, EPartService partService, EModelService modelService, MApplication application){
45
        viewer = new ListViewer(parent);
46
        viewer.setContentProvider(new ArrayContentProvider());
47
        viewer.setLabelProvider(new UuidAndTitleCacheLabelProvider());
48
        List<UuidAndTitleCache<WorkingSet>> workingSets = CdmStore.getService(IWorkingSetService.class).getUuidAndTitleCache(null, null);
49
        viewer.setInput(workingSets);
50

  
51
        viewer.addDoubleClickListener(new IDoubleClickListener() {
52

  
53
            @Override
54
            public void doubleClick(DoubleClickEvent event) {
55
                ISelection selection = event.getSelection();
56
                if(selection instanceof IStructuredSelection){
57
                    UuidAndTitleCache<WorkingSet> workingSetUuid = (UuidAndTitleCache<WorkingSet>) ((IStructuredSelection) selection).getFirstElement();
58
                    EditorUtil.openWorkingSetEditor(workingSetUuid.getUuid(), modelService, partService, application);
59
                }
60
            }
61
        });
62
    }
63

  
64
}
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/UuidAndTitleCacheLabelProvider.java
1
// $Id$
2
/**
3
* Copyright (C) 2017 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
package eu.etaxonomy.taxeditor.ui;
11

  
12
import org.eclipse.jface.viewers.LabelProvider;
13

  
14
import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
15

  
16
/**
17
 * @author pplitzner
18
 * @date 12.12.2017
19
 *
20
 */
21
public class UuidAndTitleCacheLabelProvider extends LabelProvider{
22

  
23
    /**
24
     * {@inheritDoc}
25
     */
26
    @Override
27
    public String getText(Object element) {
28
        if(element instanceof UuidAndTitleCache){
29
            return ((UuidAndTitleCache) element).getTitleCache();
30
        }
31
        return super.getText(element);
32
    }
33

  
34
}

Also available in: Unified diff