Project

General

Profile

« Previous | Next » 

Revision f77fd7f6

Added by Patrick Plitzner almost 7 years ago

Fix potential class cast exception during selection handling

View differences:

eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java
31 31
import org.eclipse.jface.viewers.ISelection;
32 32
import org.eclipse.jface.viewers.ISelectionChangedListener;
33 33
import org.eclipse.jface.viewers.IStructuredSelection;
34
import org.eclipse.jface.viewers.SelectionChangedEvent;
35 34
import org.eclipse.jface.viewers.StructuredSelection;
36 35
import org.eclipse.jface.viewers.TreeNode;
37 36
import org.eclipse.jface.viewers.TreeSelection;
......
43 42
import org.eclipse.swt.layout.GridLayout;
44 43
import org.eclipse.swt.widgets.Composite;
45 44
import org.eclipse.swt.widgets.Tree;
46
import org.eclipse.ui.IEditorPart;
47 45
import org.eclipse.ui.IMemento;
48 46

  
49 47
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
......
61 59
import eu.etaxonomy.taxeditor.editor.MultiPageTaxonEditor;
62 60
import eu.etaxonomy.taxeditor.editor.l10n.Messages;
63 61
import eu.etaxonomy.taxeditor.editor.view.derivate.searchFilter.DerivateSearchCompositeController;
62
import eu.etaxonomy.taxeditor.model.AbstractUtility;
64 63
import eu.etaxonomy.taxeditor.model.IContextListener;
65 64
import eu.etaxonomy.taxeditor.model.IDirtyMarkable;
66 65
import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
......
215 214
        viewer.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS);
216 215
        viewer.getTree().setEnabled(CdmStore.isActive());
217 216

  
218
        selectionChangedListener = new ISelectionChangedListener() {
219
            @Override
220
            public void selectionChanged(SelectionChangedEvent event) {
221
                IStructuredSelection isel = (IStructuredSelection) event.getSelection();
222
                selService.setSelection((isel.size() == 1 ? isel.getFirstElement() : isel.toArray()));
223
            }
224
        };
217
        //propagate selection
218
        selectionChangedListener = (event -> selService.setSelection(AbstractUtility.getElementsFromSelectionChangedEvent(event)));
225 219
        viewer.addSelectionChangedListener(selectionChangedListener);
226 220

  
227 221
        //create context menu
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/FeatureTreeEditor.java
48 48
import eu.etaxonomy.cdm.model.description.FeatureNode;
49 49
import eu.etaxonomy.cdm.model.description.FeatureTree;
50 50
import eu.etaxonomy.taxeditor.featuretree.AvailableFeaturesWizard;
51
import eu.etaxonomy.taxeditor.model.AbstractUtility;
51 52
import eu.etaxonomy.taxeditor.session.ICdmEntitySession;
52 53
import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
53 54
import eu.etaxonomy.taxeditor.store.CdmStore;
......
140 141
		composite.getButton_add().setEnabled(selection.size() <= 1);
141 142
		composite.getButton_remove().setEnabled(selection.size() > 0);
142 143
		//propagate selection
143
		IStructuredSelection isel = (IStructuredSelection) event.getSelection();
144
		selService.setSelection((isel.size() == 1 ? isel.getFirstElement() : isel.toArray()));
144
		selService.setSelection(AbstractUtility.getElementsFromSelectionChangedEvent(event));
145 145
	}
146 146

  
147 147
	@Focus
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/AbstractUtility.java
40 40
import org.eclipse.jface.operation.IRunnableWithProgress;
41 41
import org.eclipse.jface.resource.ColorRegistry;
42 42
import org.eclipse.jface.resource.FontRegistry;
43
import org.eclipse.jface.viewers.IStructuredSelection;
44
import org.eclipse.jface.viewers.SelectionChangedEvent;
43 45
import org.eclipse.swt.graphics.Color;
44 46
import org.eclipse.swt.graphics.Font;
45 47
import org.eclipse.swt.widgets.Display;
......
779 781
            }
780 782
        }
781 783
    }
784

  
785
    /**
786
     * @param event
787
     * @return
788
     */
789
    public static Object getElementsFromSelectionChangedEvent(SelectionChangedEvent event) {
790
        IStructuredSelection selection = (IStructuredSelection) event.getSelection();
791
        Object selectionToSet;
792
        if(selection.size() == 1){
793
            selectionToSet = selection.getFirstElement();
794
        }
795
        else if(!selection.isEmpty()){
796
            selectionToSet = selection.toArray();
797
        }
798
        else{
799
            selectionToSet = selection;
800
        }
801
        return selectionToSet;
802
    }
782 803
}

Also available in: Unified diff