Project

General

Profile

« Previous | Next » 

Revision 6fd0ac3c

Added by Katja Luther over 4 years ago

ref #8489: improve table on dist status preference page

View differences:

eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/l10n/Messages.java
682 682
    public static String Delete;
683 683

  
684 684

  
685
    public static String Preference_update;
686

  
687

  
685 688

  
686 689

  
687 690

  
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/l10n/messages.properties
517 517

  
518 518
OrderPreferencePage_NotAllowed=The DB preference does not allow to edit this preference locally
519 519
Delete=Delete
520
Preference_update=Update
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/l10n/messages_de.properties
475 475

  
476 476
Distribution_status_selection=Status Auswahl
477 477
DistributionAdminPreferences_SELECT_STATUS=Liste der verf?gbaren Verbreitungs-Status
478
DistributionAdminPreferences_PER_AREA_STATUS=Liste der pro Area definierten Status Preferenzen\nMit dem Button auf der rechten Seite k?nnen Sie die Pr?ferenz f?r das Gebiet editieren.\nWenn Sie neue gebietsspezifische Statusangaben definieren wollen, m?ssen Sie den Button unter der Tabelle verwenden,
478
DistributionAdminPreferences_PER_AREA_STATUS=Liste der pro Area definierten Status Preferenzen\nMit dem Button auf der rechten Seite k?nnen Sie die Pr?ferenz f?r das Gebiet editieren.\nWenn Sie neue gebietsspezifische Statusangaben definieren wollen, m?ssen Sie den Button unter der Tabelle verwenden.
479 479

  
480 480
MarkerTypeMenuPreferences_display=Auswahl der zur Verf\u00FCgung stehenden Marker
481 481
MeasurementUnitMenuPreferences_edit=Angezeigte Ma?einheiten
......
517 517

  
518 518
OrderPreferencePage_NotAllowed=Die Datenbank Pr?ferenz erlaub kein Editieren
519 519
Delete=L?schen
520
Preference_update=Aktualisieren
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/AbcdImportPreference.java
12 12

  
13 13
import org.eclipse.swt.SWT;
14 14
import org.eclipse.swt.custom.CLabel;
15
import org.eclipse.swt.events.KeyEvent;
16
import org.eclipse.swt.events.KeyListener;
17 15
import org.eclipse.swt.events.SelectionAdapter;
18 16
import org.eclipse.swt.events.SelectionEvent;
19 17
import org.eclipse.swt.events.SelectionListener;
......
24 22
import org.eclipse.swt.widgets.Composite;
25 23
import org.eclipse.swt.widgets.Control;
26 24
import org.eclipse.swt.widgets.Label;
27
import org.eclipse.swt.widgets.Text;
25
import org.eclipse.ui.forms.widgets.TableWrapData;
28 26

  
29 27
import eu.etaxonomy.cdm.api.application.ICdmRepository;
30 28
import eu.etaxonomy.cdm.io.specimen.abcd206.in.Abcd206ImportConfigurator;
......
66 64
    protected boolean allowOverride = true;
67 65
    protected boolean override = true;
68 66
    protected CdmPreference preference = null;
69
    Text textDNAProviderString;
67
    Combo textDNAProviderString;
70 68
    private Composite composite;
71 69

  
72 70

  
......
238 236
        Label labelRef = new Label(composite, SWT.NONE);
239 237
        labelRef.setText("Biocase provider for associated DNA");
240 238
       // new Label(composite, SWT.NONE);
241
        textDNAProviderString = new Text(composite, SWT.NONE);
242
        textDNAProviderString.setEnabled(true);
243
        textDNAProviderString.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, true, 1, 1));
244
        textDNAProviderString.addKeyListener(new KeyListener() {
245 239

  
246
            @Override
247
            public void keyReleased(KeyEvent e) {
248
                setApply(true);
249
            }
240
        textDNAProviderString = new Combo(composite, SWT.BORDER);
241
        CdmPreference biocaseProvider = PreferencesUtil.getPreferenceFromDB(PreferencePredicate.BioCaseProvider);
242
        if (biocaseProvider != null){
243
            String items[] = biocaseProvider.getValue().split(";");
244
            textDNAProviderString.setItems(items);
245
        }
250 246

  
251
            @Override
252
            public void keyPressed(KeyEvent e) {
253
                setApply(true);
254 247

  
255
            }
256
        }) ;
248
        textDNAProviderString.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
249
        textDNAProviderString.setEnabled(true);
257 250

  
251
        textDNAProviderString.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, true, 1, 1));
252
        textDNAProviderString.addSelectionListener(this);
258 253

  
259 254
//      classificationSelection.setLayoutData(gridData);
260 255
        Label nomenclaturalCodeLabel = new Label(composite, SWT.NONE);
......
299 294
            }
300 295
        }
301 296
        useLocalOrAdmin.addSelectionListener(this);
302
        if (!allowOverride){
297
        if (!allowOverride && !isAdminPreference){
303 298
            useLocalOrAdmin.setEnabled(false);
304 299
        }
305 300
        setSelections();
......
348 343
               }
349 344
            }
350 345
        }
346

  
347
        if (e.getSource().equals(textDNAProviderString)){
348
            String textDnaProvider = textDNAProviderString.getText();
349
            try{
350
                this.configurator.setDnaSoure(URI.create(textDnaProvider));
351
            }catch(IllegalArgumentException iae){
352
                //do not set as dna source
353
            }
354
        }
351 355
        this.setApply(true);
352 356

  
353 357

  
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/AbstractVocabularySelectionPreference.java
47 47
    */
48 48
   protected void refresh() {
49 49
       //getValues();
50
       table.removeAll();
51
       if (pref != null){
52
           createTableRow(pref);
50
       if (table != null){
51
           table.removeAll();
52
           if (pref != null){
53
               createTableRow(pref);
54
           }
55
           table.redraw();
56
           table.pack();
57

  
53 58
       }
54
       table.redraw();
55
       table.pack();
56 59

  
57 60
   }
58 61

  
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/DistributionStatusPreferencePage.java
15 15
import java.util.Map;
16 16
import java.util.UUID;
17 17

  
18
import javax.inject.Inject;
19

  
20
import org.eclipse.e4.core.di.annotations.Optional;
21
import org.eclipse.e4.ui.di.UIEventTopic;
22
import org.eclipse.jface.util.IPropertyChangeListener;
23
import org.eclipse.jface.util.PropertyChangeEvent;
18
import org.eclipse.core.commands.ExecutionException;
19
import org.eclipse.core.commands.NotEnabledException;
20
import org.eclipse.core.commands.NotHandledException;
21
import org.eclipse.core.commands.common.NotDefinedException;
24 22
import org.eclipse.jface.wizard.WizardDialog;
25 23
import org.eclipse.swt.SWT;
26 24
import org.eclipse.swt.custom.CLabel;
......
32 30
import org.eclipse.swt.widgets.Button;
33 31
import org.eclipse.swt.widgets.Composite;
34 32
import org.eclipse.swt.widgets.Control;
35
import org.eclipse.swt.widgets.Event;
36
import org.eclipse.swt.widgets.Listener;
37 33
import org.eclipse.swt.widgets.Table;
38 34
import org.eclipse.swt.widgets.TableColumn;
39 35
import org.eclipse.swt.widgets.TableItem;
36
import org.eclipse.ui.handlers.IHandlerService;
40 37

  
38
import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
41 39
import eu.etaxonomy.cdm.model.location.NamedArea;
42 40
import eu.etaxonomy.cdm.model.metadata.CdmPreference;
43 41
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
44 42
import eu.etaxonomy.cdm.model.metadata.PreferenceResolver;
45 43
import eu.etaxonomy.cdm.model.term.TermType;
46
import eu.etaxonomy.taxeditor.event.WorkbenchEventConstants;
47 44
import eu.etaxonomy.taxeditor.l10n.Messages;
48 45
import eu.etaxonomy.taxeditor.model.ImageResources;
49 46
import eu.etaxonomy.taxeditor.preference.wizard.AvailableDistributionPerAreaStatusWizard;
50 47
import eu.etaxonomy.taxeditor.store.CdmStore;
51
import eu.etaxonomy.taxeditor.ui.element.CommandHandlerButton;
48
import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin;
52 49

  
53 50
/**
54 51
 * @author k.luther
55 52
 * @since 02.07.2019
56 53
 *
57 54
 */
58
public class DistributionStatusPreferencePage extends AbstractVocabularySelectionPreference implements IPropertyChangeListener{
55
public class DistributionStatusPreferencePage extends AbstractVocabularySelectionPreference {
59 56

  
60 57
    protected String commandHandlerStringStatus;
61 58

  
62 59
    protected List<CdmPreference> prefStatus;
63 60
    protected List<CdmPreference> prefStatusToDelete = new ArrayList<>();
64 61

  
65
    private CommandHandlerButton button_openStatusWizard;
62
    private Button button_openStatusWizard;
63

  
64
    private Composite composite;
66 65

  
67 66
    private Map<UUID, NamedArea> namedAreaUUIDMap = new HashMap();
68 67

  
69
    private Table table;
70 68

  
71 69
    /**
72 70
     * {@inheritDoc}
73 71
     */
74 72
    @Override
75
    protected Control createContents(Composite parent) {
73
   protected Control createContents(Composite parent) {
76 74
        getValues();
77
        Composite composite = new Composite(parent, SWT.NULL);
75
        composite = new Composite(parent, SWT.NULL);
78 76
        composite.setLayout(new GridLayout());
79 77
        GridData textGrid = createTextGridData();
80 78
        textGrid.verticalSpan = 2;
......
92 90
            labelPerAreaStatus.setLayoutData(textGrid);
93 91

  
94 92
        }
95
        createStatusTable(composite);
93
        createStatusTable();
96 94

  
97 95
        composite.pack ();
98 96

  
99 97

  
100
        button_openStatusWizard = new CommandHandlerButton(composite, SWT.PUSH, commandHandlerStringStatus);
98
        button_openStatusWizard = new Button(composite, SWT.PUSH);
101 99

  
102
        button_openStatusWizard.setText(Messages.Distribution_status_selection);
103
        button_openStatusWizard.addListener(SWT.Selection, new Listener() {
100
        button_openStatusWizard.addSelectionListener(new SelectionAdapter() {
104 101
            @Override
105
            public void handleEvent(Event e) {
106
                switch (e.type) {
107
                case SWT.Selection:
102
            public void widgetSelected(SelectionEvent se) {
103
                // you can execute a command directly ... but to get the proper environment it's better to execute it through the IHandlerService:
104
                IHandlerService handlerService =  TaxeditorStorePlugin.getDefault().getWorkbench().getService(IHandlerService.class);
105
                try {
106
                    Object result = handlerService.executeCommand(commandHandlerStringStatus, null);
108 107
                    setApply(true);
109
                    break;
108
                    getValues();
109
                    refresh();
110
                } catch (ExecutionException e) {
111
                    // TODO Auto-generated catch block
112
                    e.printStackTrace();
113
                } catch (NotDefinedException e) {
114
                    // TODO Auto-generated catch block
115
                    e.printStackTrace();
116
                } catch (NotEnabledException e) {
117
                    // TODO Auto-generated catch block
118
                    e.printStackTrace();
119
                } catch (NotHandledException e) {
120
                    // TODO Auto-generated catch block
121
                    e.printStackTrace();
110 122
                }
111 123
            }
124

  
112 125
        });
126
        button_openStatusWizard.setText(Messages.Distribution_status_selection);
127

  
113 128

  
114 129

  
115 130
        return composite;
......
117 132

  
118 133

  
119 134

  
120
    public void createStatusTable(Composite composite) {
135
    public void createStatusTable() {
136

  
121 137
        table = new Table(
122 138
                composite, SWT.BORDER /*| SWT.CHECK */| SWT.FULL_SELECTION | SWT.SINGLE
123 139
        );
......
129 145
        Iterator<CdmPreference> prefIterator = prefStatus.iterator();
130 146
        CdmPreference pref;
131 147
        TableColumn column = new TableColumn(table, SWT.NONE);
132
        column.setText("Predicate/Subject");
133
        column.setWidth(300);
134

  
148
        column.setText("Predicate");
149
        column.setWidth(100);
150
        column = new TableColumn(table, SWT.NONE);
151
        column.setText("Subject");
152
        column.setWidth(100);
153
        column = new TableColumn(table, SWT.NONE);
154
        column.setText("Values");
155
        column.setWidth(100);
135 156
        if (isAdminPreference){
136 157
            column = new TableColumn(table, SWT.NONE);
137 158
            column.setText(Messages.Preference_allow_override);
......
147 168

  
148 169
        while (prefIterator.hasNext()){
149 170
            pref = prefIterator.next();
150
            if (pref.getValue() != null){
151
                createTableRow(pref);
152
            }
153

  
171
            createTableRow(pref);
154 172
        }
173

  
174
        composite.pack();
155 175
    }
156 176

  
157 177
    @Override
......
167 187
                // no UUID
168 188
            }
169 189
        }
170
        for (int col = 0; col < 4; col ++) {
190
        for (int col = 0; col < 6; col ++) {
171 191
            if (col == 0){
172
               if (namedAreaString != null){
173
                   String subjectString = pref.getSubjectString().replace(pref.getSubject().getLastPart(), namedAreaString);
174
                   item.setText(col, pref.getPredicate() +subjectString);
192
              item.setText(col, pref.getPredicate());
193
            }else if (col == 1){
194
                if (namedAreaString != null){
195
                    String subjectString = pref.getSubjectString().replace(pref.getSubject().getLastPart(), namedAreaString);
196
                    subjectString = subjectString.replace("/", "");
197
                    item.setText(col, subjectString);
198
                }else{
199
                    item.setText(col, "Default");
200
                }
201

  
202

  
203
            }else if (col == 2){
204
               if (pref.getValue() == null){
205
                   item.setText(col, "All status");
175 206
               }else{
176
                   item.setText(col, pref.getPredicate() +pref.getSubjectString());
177
               }
207
                   List<UUID> uuidList = PreferencesUtil.createUuidList(pref.getValue());
208
                   List<PresenceAbsenceTerm> terms = CdmStore.getTermManager().getTerms(uuidList, PresenceAbsenceTerm.class);
209
                   String status = "";
210
                   int index = 1;
211
                   for (PresenceAbsenceTerm term: terms){
212
                       status = status.concat(term.getLabel());
213
                       if (index < terms.size()){
214
                           status = status.concat(", ");
215
                       }
216
                       index ++;
217
                       if (index > 3 && index < terms.size()){
218
                           status = status.concat("...");
219
                           break;
220
                       }
221
                   }
222
                   item.setText(col, status);
178 223

  
179
            }else if (col == 1 && isAdminPreference) {
224
               }
225
            }else if (col == 3 && isAdminPreference){
180 226
                Button allowOverrideButton = new Button(table, SWT.CHECK);
181 227
                allowOverrideButton.setData(pref);
182 228
                TableEditor editor = new TableEditor(table);
......
199 245
                        }
200 246
                    }
201 247
                  });
202
            } else if (col == 2 && isAdminPreference){
248
            } else if (col == 4 && isAdminPreference){
203 249
                Button delButton = new Button(table, SWT.PUSH);
204 250
                delButton.setImage(ImageResources
205 251
                        .getImage(ImageResources.TRASH_ICON));
......
224 270
                editor.setEditor(delButton, item, col);
225 271

  
226 272
            }
227
            else if (col == 3 && isAdminPreference){
273
            else if (col == 5 && isAdminPreference){
228 274
                Button listButton = new Button(table, SWT.PUSH);
229 275
                listButton.setImage(ImageResources
230 276
                        .getImage(ImageResources.EDIT_ICON));
......
287 333
        commandHandlerStringStatus = "eu.etaxonomy.taxeditor.store.open.OpenDistributionStatusWizardHandler";
288 334
       // setApply(true);
289 335
    }
336
    @Override
337
    protected void refresh() {
338

  
339
       if (table != null){
340
           table.removeAll();
341
           disposeTableEditors();
342
           for (CdmPreference pref:prefStatus){
343
                if (pref != null){
344
                    createTableRow(pref);
345
                }
346
            }
347
            table.redraw();
348
            table.pack();
349

  
350
        }
351
       composite.layout(true);
352
       composite.redraw();
353

  
354
    }
355

  
356
    private void disposeTableEditors() {
357
        Control [] controls = table.getChildren();
358

  
359
        for (int i = 0; i < controls.length; i++) {
360
                if(!controls[i].isDisposed()){
361
                        controls[i].setVisible(false);
362
                        controls[i].dispose();
363

  
364
                }
365
        }
366
}
367

  
290 368

  
291 369
    /**
292 370
     *
......
324 402
    protected void performDefaults() {
325 403

  
326 404
        prefStatus = null;
405
        getValues();
327 406
        refresh();
328 407
        setApply(true);
329 408

  
......
353 432
    }
354 433

  
355 434

  
356
    @Inject
357
    @Optional
358
    public void updateView(@UIEventTopic(WorkbenchEventConstants.REFRESH_DATASOURCE)boolean refresh){
359
        if(refresh){
360
            getValues();
361
            refresh();
362
        }
363
    }
364

  
365
    @Override
366
    public void propertyChange(PropertyChangeEvent event) {
367

  
368
        if (event != null
369
                && PreferencesUtil.PREFERRED_TERMS_CHANGE.equals(event
370
                        .getProperty())) {
371
            getValues();
372
            refresh();
373
        }
374
    }
375

  
376

  
377

  
378 435

  
379 436

  
380 437

  
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/AvailableDistributionPerAreaStatusWizard.java
20 20
import eu.etaxonomy.cdm.model.metadata.CdmPreference;
21 21
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
22 22
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
23
import eu.etaxonomy.taxeditor.event.EventUtility;
24
import eu.etaxonomy.taxeditor.event.WorkbenchEventConstants;
23 25
import eu.etaxonomy.taxeditor.l10n.Messages;
24 26
import eu.etaxonomy.taxeditor.preference.CdmPreferenceCache;
25 27
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
......
105 107

  
106 108
       // PreferencesUtil.setBooleanValue(PreferencesUtil.createOverridePreferenceString(PreferencePredicate.AvailableDistributionStatus.getKey()), aPage.override);
107 109
        PreferencesUtil.firePreferencesChanged(this.getClass());
108
        //EventUtility.postEvent(WorkbenchEventConstants.REFRESH_DISTRIBUTION_PREFERENCES, true);
110
        EventUtility.postEvent(WorkbenchEventConstants.REFRESH_DISTRIBUTION_PREFERENCES, true);
109 111
        return true;
110 112
    }
111 113

  
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/NomenclaturalReferenceSelectionDialog.java
8 8
import org.apache.commons.lang.StringUtils;
9 9
import org.eclipse.jface.viewers.ILabelProvider;
10 10
import org.eclipse.jface.viewers.LabelProvider;
11
import org.eclipse.swt.SWT;
12
import org.eclipse.swt.events.SelectionAdapter;
13
import org.eclipse.swt.events.SelectionEvent;
14
import org.eclipse.swt.widgets.Button;
15
import org.eclipse.swt.widgets.Composite;
16 11
import org.eclipse.swt.widgets.Control;
17 12
import org.eclipse.swt.widgets.Shell;
18 13
import org.eclipse.swt.widgets.Text;
......
105 100
	protected ILabelProvider createListLabelProvider() {
106 101
		return new FilteredCdmResourceAbbrevLabelProvider();
107 102
	}
108
   @Override
109
   protected void addIdentifierCheckButton(Composite searchAndFilter) {
110
       Button btnCheckButton = new Button(searchAndFilter, SWT.CHECK);
111
       btnCheckButton.setText("Use Identifier");
112
       btnCheckButton.addSelectionListener(new SelectionAdapter() {
113
           @Override
114
           public void widgetSelected(SelectionEvent e) {
115
               useIdentifier = btnCheckButton.getSelection();
116
           }
117
       });
118
   }
103
//   @Override
104
//   protected void addIdentifierCheckButton(Composite searchAndFilter) {
105
//       Button btnCheckButton = new Button(searchAndFilter, SWT.CHECK);
106
//       btnCheckButton.setText("Use Identifier");
107
//       btnCheckButton.addSelectionListener(new SelectionAdapter() {
108
//           @Override
109
//           public void widgetSelected(SelectionEvent e) {
110
//               useIdentifier = btnCheckButton.getSelection();
111
//           }
112
//       });
113
//   }
119 114

  
120 115
	/**
121 116
	 * <p>select</p>
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/SearchDialog.java
408 408
                this.items.add(item);
409 409
            }
410 410

  
411
            /**
412
             * Refresh dialog.
413
             */
414
            public void refresh() {
415
                scheduleRefresh();
416
            }
417

  
418
            /**
419
             * Schedule refresh job.
420
             */
421
            public void scheduleRefresh() {
422
                refreshCacheJob.cancelAll();
423
                refreshCacheJob.schedule();
424
            }
411
//            /**
412
//             * Refresh dialog.
413
//             */
414
//            public void refresh() {
415
//                scheduleRefresh();
416
//            }
417
//
418
//            /**
419
//             * Schedule refresh job.
420
//             */
421
//            public void scheduleRefresh() {
422
//                refreshCacheJob.cancelAll();
423
//                refreshCacheJob.schedule();
424
//            }
425 425

  
426 426
            /*
427 427
             * (non-Javadoc)

Also available in: Unified diff