From: Patric Plitzner Date: Mon, 18 Aug 2014 14:38:49 +0000 (+0000) Subject: - added null check (fixes #4351) X-Git-Tag: 3.6.0~497 X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/commitdiff_plain/12f992a264608418d4969757b7735b92d37e20f0 - added null check (fixes #4351) --- diff --git a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/key/polytomous/PolytomousKeyViewPart.java b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/key/polytomous/PolytomousKeyViewPart.java index 085783c8d..e61e15842 100644 --- a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/key/polytomous/PolytomousKeyViewPart.java +++ b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/key/polytomous/PolytomousKeyViewPart.java @@ -1,5 +1,5 @@ /** - * + * */ package eu.etaxonomy.taxeditor.navigation.key.polytomous; @@ -14,7 +14,6 @@ import org.eclipse.jface.viewers.DoubleClickEvent; import org.eclipse.jface.viewers.IDoubleClickListener; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ListViewer; -import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerFilter; import org.eclipse.swt.SWT; @@ -63,28 +62,28 @@ public class PolytomousKeyViewPart extends ViewPart implements @Override public boolean select(Viewer viewer, Object parentElement, Object element) { - + if(element instanceof PolytomousKey){ PolytomousKey key = (PolytomousKey) element; if(key.getTitleCache().contains(text_filter.getText())){ return true; } } - + return false; } - + }; - + viewer.setFilters(new ViewerFilter[]{filter}); } } - - + + public static final String ID = "eu.etaxonomy.taxeditor.navigation.key.polytomous.polytomousKeyViewPart"; public static final String OPEN_COMMAND_ID = "eu.etaxonomy.taxeditor.navigation.key.polytomous.editNodes"; - + private class ContextListener extends ContextListenerAdapter{ /* (non-Javadoc) * @see eu.etaxonomy.taxeditor.model.IContextListener#contextStop(org.eclipse.ui.IMemento, org.eclipse.core.runtime.IProgressMonitor) @@ -94,7 +93,7 @@ public class PolytomousKeyViewPart extends ViewPart implements monitor.subTask("Shutting down Polytomous Key Viewer"); viewer.setInput(null); } - + /* (non-Javadoc) * @see eu.etaxonomy.taxeditor.model.ContextListenerAdapter#contextStart(org.eclipse.ui.IMemento, org.eclipse.core.runtime.IProgressMonitor) */ @@ -104,7 +103,7 @@ public class PolytomousKeyViewPart extends ViewPart implements setInput(); } } - + private ListViewer viewer; private ConversationHolder conversation; private IContextListener contextListener; @@ -116,7 +115,7 @@ public class PolytomousKeyViewPart extends ViewPart implements public PolytomousKeyViewPart(){ formFactory = new CdmFormFactory(Display.getDefault()); } - + /* (non-Javadoc) * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite) */ @@ -125,46 +124,46 @@ public class PolytomousKeyViewPart extends ViewPart implements Composite container = new Composite(parent, SWT.NONE); container.setLayout(new GridLayout()); - + contextListener = new ContextListener(); CdmStore.getContextManager().addContextListener(contextListener); - + text_filter = formFactory.createText(container, ""); text_filter.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false)); text_filter.addModifyListener(new FilterModifyListener()); - + viewer = new ListViewer(container, SWT.H_SCROLL | SWT.V_SCROLL | SWT.MULTI); viewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); - + viewer.setContentProvider(new PolytomousKeyContentProvider()); viewer.setLabelProvider(new PolytomousKeyLabelProvider()); - + viewer.addDoubleClickListener(new IDoubleClickListener() { - + @Override - public void doubleClick(DoubleClickEvent event) { + public void doubleClick(DoubleClickEvent event) { openSelectedKeyNodes(); } }); - - + + getSite().setSelectionProvider(viewer); - + createMenu(); - + if(CdmStore.isActive()){ setInput(); } } - + public void openSelectedKeyNodes() { ICommandService commandService = (ICommandService)getSite().getService(ICommandService.class); - - Command command = commandService.getCommand(OPEN_COMMAND_ID); + + Command command = commandService.getCommand(OPEN_COMMAND_ID); if(command.isEnabled()) { IHandlerService handlerService = (IHandlerService)getSite().getService(IHandlerService.class); - try { - handlerService.executeCommand(OPEN_COMMAND_ID, null); + try { + handlerService.executeCommand(OPEN_COMMAND_ID, null); } catch (NotDefinedException e) { throw new RuntimeException("Could not find open command: " + OPEN_COMMAND_ID); } catch (Exception e) { @@ -172,29 +171,29 @@ public class PolytomousKeyViewPart extends ViewPart implements } } } - - public void setViewerSelection(ISelection selection, boolean reveal) { - getSite().setSelectionProvider(viewer); - viewer.setSelection(selection,reveal); - viewer.getList().notifyListeners(SWT.Selection,new Event()); + + public void setViewerSelection(ISelection selection, boolean reveal) { + getSite().setSelectionProvider(viewer); + viewer.setSelection(selection,reveal); + viewer.getList().notifyListeners(SWT.Selection,new Event()); } - + private void createMenu(){ MenuManager menuManager = new MenuManager(); menuManager.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS)); - + getSite().registerContextMenu(menuManager, viewer); - + Control control = viewer.getControl(); Menu menu = menuManager.createContextMenu(control); - - control.setMenu(menu); + + control.setMenu(menu); } private void setInput() { conversation = CdmStore.createConversation(); conversation.registerForDataStoreChanges(this); - List input = CdmStore.getService(IPolytomousKeyService.class).list(PolytomousKey.class, null, null, null, null); + List input = CdmStore.getService(IPolytomousKeyService.class).list(PolytomousKey.class, null, null, null, null); viewer.setInput(input); } @@ -205,7 +204,7 @@ public class PolytomousKeyViewPart extends ViewPart implements public void setFocus() { viewer.getControl().setFocus(); } - + /* (non-Javadoc) * @see eu.etaxonomy.cdm.persistence.hibernate.ICdmPostDataChangeObserver#update(eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap) */ @@ -225,15 +224,17 @@ public class PolytomousKeyViewPart extends ViewPart implements public ConversationHolder getConversationHolder() { return conversation; } - + /* (non-Javadoc) * @see org.eclipse.ui.part.WorkbenchPart#dispose() */ @Override public void dispose() { - conversation.unregisterForDataStoreChanges(this); - conversation.close(); - CdmStore.getContextManager().removeContextListener(contextListener); + if(conversation!=null){ + conversation.unregisterForDataStoreChanges(this); + conversation.close(); + CdmStore.getContextManager().removeContextListener(contextListener); + } super.dispose(); } @@ -255,16 +256,16 @@ public class PolytomousKeyViewPart extends ViewPart implements } /** - * + * */ public void refresh() { getConversationHolder().bind(); //FIXME : Need to make sure this is a stable fix (ticket 3822) getConversationHolder().commit(); - List input = CdmStore.getService(IPolytomousKeyService.class).list(PolytomousKey.class, null, null, null, null); + List input = CdmStore.getService(IPolytomousKeyService.class).list(PolytomousKey.class, null, null, null, null); viewer.setInput(input); } - + public List getKeys() { return (List)viewer.getInput(); }